adapt linktrimmer for 2.0

This commit is contained in:
Ian 2014-06-08 20:44:50 +02:00
parent 75d549e90c
commit d4e739dfaa
5 changed files with 222 additions and 93 deletions

View file

@ -1,37 +1,44 @@
1.4:
----
* Adapted backend markup for 2.0 backend.
* Fixed bad css float on startpage
* Fixed wysiwyg button link creator
* Removed dev-POC-dashboard plugin check
1.3:
----
* Added new option to hide lintrimmer on backend frontpage
* Use nativ API method here - extends S9y version >= 1.3
* Added new option to hide linktrimmer on backends frontpage
* Use nativ API method here - extends S9y version >= 1.3
1.1, 1.2:
----
* Static php5 function fixes
* Static php5 function fixes
1.0:
----
* Do not show in Dashboard (POC)
* Do not show in Dashboard (POC)
0.9:
----
* Added CKEDITOR ready eventData image path
* Added CKEDITOR ready eventData image path
0.8:
----
* Latest: Smarty3 forward compatibility
* Latest: Smarty3 forward compatibility
0.7:
----
* Use latin1_general_cs charset due to lower/uppercase lookups,
thanks to danst0
* Use latin1_general_cs charset due to lower/uppercase lookups,
thanks to danst0
0.6:
----
* Allow to be used in other plugins (danst0)
* Allow to be used in other plugins (danst0)
0.5:
----
* Remove unneeded die()
* Remove unneeded die()
0.1:
----
* Initial Release. See Documentation.
* Initial Release. See Documentation.

View file

@ -1,12 +1,7 @@
.linktrimmer {
float: right;
}
.serendipity_linktrimmer_page {
#linktrimmer_url.input_textbox {
width: 71%;
}
.serendipity_linktrimmer_page .linktrimmer {
float: none;
display: block;
margin: auto auto;
#linktrimmer_result.input_textbox {
width: 100%;
}

View file

@ -1,63 +1,109 @@
{if $linktrimmer_external}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_MEDIA_BUTTON}</title>
<meta http-equiv="Content-Type" content="text/html; charset={$CONST.LANG_CHARSET}" />
<!doctype html>
<!--[if IE 8]> <html class="no-js lt-ie9" lang="{$lang}"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="{$lang}"> <!--<![endif]-->
<head>
<meta charset="{$CONST.LANG_CHARSET}">
<title>{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_MEDIA_BUTTON}</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="{$serendipityBaseURL}serendipity.css.php?serendipity[css_mode]=serendipity_admin.css">
<!--[if lte IE 8]>
<link rel="stylesheet" href="{serendipity_getFile file='admin/oldie.css'}">
<![endif]-->
<script src="{serendipity_getFile file='admin/js/modernizr-2.8.1.min.js'}"></script>
<script src="{$head_link_script}"></script>
<link rel="stylesheet" type="text/css" href="{$serendipityBaseURL}serendipity.css.php?serendipity[css_mode]=serendipity_admin.css" />
<style type="text/css">
{$linktrimmer_css}
</style>
</head>
<body id="serendipity_admin_page" class="serendipity_linktrimmer_page">
<div id="serendipityAdminMainpane">
<style>{* popup only classes *}
.serendipity_linktrimmer_page .linktrimmer {
display: block;
margin: 1em auto auto;
}
#main_linktrimmer {
border: 1px solid #BBB;
background: none repeat scroll 0% 0% #EEE;
padding: 0.75em;
margin: 0px 0px 1em;
}
#main_linktrimmer legend {
border: 1px solid #72878A;
background: none repeat scroll 0% 0% #DDD;
padding: 2px 5px;
}
#linktrimmer_url.input_textbox { width: inherit; }
</style>
</head>
<body id="serendipity_admin_page" class="serendipity_linktrimmer_page">
<main id="workspace" class="clearfix">
<div id="content" class="clearfix">
{/if}
{if $linktrimmer_external}
<div class="linktrimmer">
<form action="?" method="post">
<input type="hidden" name="txtarea" value="{$linktrimmer_txtarea|@escape:url}" />
<fieldset>
<legend>{$CONST.PLUGIN_LINKTRIMMER_NAME}</legend>
{if $linktrimmer_error}
<div class="serendipity_msg_error">{$CONST.PLUGIN_LINKTRIMMER_ERROR}</div>
{/if}
<label for="linkname">{$CONST.PLUGIN_LINKTRIMMER_ENTER}</label>
<input type="text" id="linktrimmer_url" class="input_textbox" name="linktrimmer_url" value="" />
<label for="linkname">{$CONST.PLUGIN_LINKTRIMMER_HASH}</label>
<input type="text" id="linktrimmer_hash" class="input_textbox" name="linktrimmer_hash" value="" />
<input type="submit" name="submit" value="{$CONST.GO}" class="serendipityPrettyButton input_button" />
{if $linktrimmer_url != '' && $linktrimmer_external}
<script type="text/javascript">
self.opener.serendipity_imageSelector_addToBody('<a href="{$linktrimmer_url|@escape}" title="{$linktrimmer_origurl|@escape}">{$linktrimmer_origurl|@escape}</a>', '{$linktrimmer_txtarea|@escape}');
self.close();
</script>
{elseif $linktrimmer_url != ''}
<label for="linkresult">{$CONST.PLUGIN_LINKTRIMMER_RESULT}</label>
<input id="linktrimmer_result" type="text" class="input_textbox" name="linktrimmer_result" value="{$linktrimmer_url|@escape}" />
<script type="text/javascript">
document.getElementById('linktrimmer_result').select();
document.getElementById('linktrimmer_result').focus();
</script>
{else}
<script type="text/javascript">
<section id="dashboard_linktrimmer" class="equal_heights quick_list">
<h3>{$CONST.PLUGIN_LINKTRIMMER_NAME}</h3>
{/if}
<form action="?" method="post">
<input type="hidden" name="txtarea" value="{$linktrimmer_txtarea|escape:url}">
<fieldset id="main_linktrimmer" class="">
{if $linktrimmer_external}
<legend>{$CONST.PLUGIN_LINKTRIMMER_NAME}</legend>
{/if}
{if $linktrimmer_error}
<span class="msg_error"><span class="icon-attention-circled"></span> {$CONST.PLUGIN_LINKTRIMMER_ERROR}</span>
{/if}
<div class="form_field">
<label for="linktrimmer_url">{$CONST.PLUGIN_LINKTRIMMER_ENTER}</label>
<input id="linktrimmer_url" class="input_textbox" type="text" value="" name="linktrimmer_url" placeholder="http://www.s9y.org">
{if $linktrimmer_external === false}
</div>
<div class="form_field">
{/if}
<label for="linktrimmer_hash">{$CONST.PLUGIN_LINKTRIMMER_HASH}</label>
<input id="linktrimmer_hash" class="input_textbox" type="text" value="" name="linktrimmer_hash" size="14">
<input type="submit" name="submit" value="{$CONST.GO}" class="input_button">
</div>
{if $linktrimmer_url != '' && $linktrimmer_external}
<script>
window.parent.parent.serendipity.serendipity_imageSelector_addToBody('<a href="{$linktrimmer_url|escape}" title="{$linktrimmer_origurl|escape}">{$linktrimmer_origurl|escape}</a>', '{$linktrimmer_txtarea|escape}');
window.parent.parent.$.magnificPopup.close();
</script>
{elseif $linktrimmer_url != ''}
<div class="form_field">
<label for="linktrimmer_result">{$CONST.PLUGIN_LINKTRIMMER_RESULT}</label>
<input id="linktrimmer_result" class="input_textbox" type="text" value="{$linktrimmer_url|escape}" name="linktrimmer_result">
<script>
document.getElementById('linktrimmer_result').select();
document.getElementById('linktrimmer_result').focus();
</script>
</div>
{else}
<script>
document.getElementById('linktrimmer_url').select();
document.getElementById('linktrimmer_url').focus();
</script>
{/if}
</fieldset>
</form>
</div>
</script>
{/if}
</fieldset>
</form>
{if $linktrimmer_external}
</div>
{else}
</section>
<script>
var count = $('#dashboard > section.quick_list').length;
var cycot = (count % 2) ? 'odd' : 'even';
$('#dashboard_linktrimmer').addClass(cycot);
</script>
{/if}
{if $linktrimmer_external}
</div>
</main>
</body>
</html>
{/if}

View file

@ -0,0 +1,67 @@
{if $linktrimmer_external}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_MEDIA_BUTTON}</title>
<meta http-equiv="Content-Type" content="text/html; charset={$CONST.LANG_CHARSET}" />
<link rel="stylesheet" type="text/css" href="{$serendipityBaseURL}serendipity.css.php?serendipity[css_mode]=serendipity_admin.css" />
<style type="text/css">
.serendipity_linktrimmer_page .linktrimmer {
display: block;
margin: auto auto;
}
#linktrimmer_url.input_textbox { width: inherit; }
</style>
</head>
<body id="serendipity_admin_page" class="serendipity_linktrimmer_page">
<div id="serendipityAdminMainpane">
{/if}
<div class="linktrimmer">
<form action="?" method="post">
<input type="hidden" name="txtarea" value="{$linktrimmer_txtarea|@escape:url}" />
<fieldset>
<legend>{$CONST.PLUGIN_LINKTRIMMER_NAME}</legend>
{if $linktrimmer_error}
<div class="serendipity_msg_error">{$CONST.PLUGIN_LINKTRIMMER_ERROR}</div>
{/if}
<label for="linkname">{$CONST.PLUGIN_LINKTRIMMER_ENTER}</label>
<input type="text" id="linktrimmer_url" class="input_textbox" name="linktrimmer_url" value="" />
<label for="linkname">{$CONST.PLUGIN_LINKTRIMMER_HASH}</label>
<input type="text" id="linktrimmer_hash" class="input_textbox" name="linktrimmer_hash" value="" />
<input type="submit" name="submit" value="{$CONST.GO}" class="serendipityPrettyButton input_button" />
{if $linktrimmer_url != '' && $linktrimmer_external}
<script type="text/javascript">
self.opener.serendipity_imageSelector_addToBody('<a href="{$linktrimmer_url|@escape}" title="{$linktrimmer_origurl|@escape}">{$linktrimmer_origurl|@escape}</a>', '{$linktrimmer_txtarea|@escape}');
self.close();
</script>
{elseif $linktrimmer_url != ''}
<label for="linkresult">{$CONST.PLUGIN_LINKTRIMMER_RESULT}</label>
<input id="linktrimmer_result" type="text" class="input_textbox" name="linktrimmer_result" value="{$linktrimmer_url|@escape}" />
<script type="text/javascript">
document.getElementById('linktrimmer_result').select();
document.getElementById('linktrimmer_result').focus();
</script>
{else}
<script type="text/javascript">
document.getElementById('linktrimmer_url').select();
document.getElementById('linktrimmer_url').focus();
</script>
{/if}
</fieldset>
</form>
</div>
{if $linktrimmer_external}
</div>
</body>
</html>
{/if}

View file

@ -1,4 +1,4 @@
<?php #
<?php #
if (IN_serendipity !== true) {
die ("Don't hack!");
@ -26,14 +26,15 @@ class serendipity_event_linktrimmer extends serendipity_event {
'php' => '4.1.0'
));
$propbag->add('version', '1.3');
$propbag->add('author', 'Garvin Hicking');
$propbag->add('version', '1.4');
$propbag->add('author', 'Garvin Hicking, Ian');
$propbag->add('stackable', false);
$propbag->add('configuration', array('prefix', 'frontpage', 'domain'));
$propbag->add('event_hooks', array(
'backend_frontpage_display' => true,
'css_backend' => true,
'frontend_configure' => true,
'backend_dashboard' => true,
'backend_entry_toolbar_extended' => true,
'backend_entry_toolbar_body' => true,
'backend_wysiwyg' => true,
@ -201,16 +202,18 @@ class serendipity_event_linktrimmer extends serendipity_event {
}
$serendipity['smarty']->assign(array(
'linktrimmer_error' => $error,
'linktrimmer_url' => $url,
'linktrimmer_origurl' => $_REQUEST['linktrimmer_url'],
'linktrimmer_external' => $external,
'linktrimmer_txtarea' => $_REQUEST['txtarea'],
'linktrimmer_css' => file_get_contents(dirname(__FILE__) . '/linktrimmer.css')
'linktrimmer_error' => $error,
'linktrimmer_url' => $url,
'linktrimmer_origurl' => $_REQUEST['linktrimmer_url'],
'linktrimmer_external' => $external,
'linktrimmer_txtarea' => $_REQUEST['txtarea']
));
// use nativ API here - extends S9y version >= 1.3
echo $this->parseTemplate('plugin_linktrimmer.tpl');
if ($serendipity['version'][0] > '1') {
echo $this->parseTemplate('plugin_linktrimmer.tpl');
} else {
echo $this->parseTemplate('plugin_linktrimmer_old.tpl');
}
}
function generate_button ($txtarea) {
@ -218,10 +221,16 @@ class serendipity_event_linktrimmer extends serendipity_event {
if (!isset($txtarea)) {
$txtarea = 'body';
}
$link = ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/linktrimmer' . ($serendipity['rewrite'] != 'none' ? '?' : '&amp;') . 'txtarea=' . $txtarea;
$link = ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/linktrimmer' . ($serendipity['rewrite'] != 'none' ? '?' : '&amp;') . 'txtarea=' . $txtarea;
if ($serendipity['version'][0] > '1') {
?>
<input type="button" class="input_button" name="insLinktrimmer" value="<?php echo PLUGIN_LINKTRIMMER_NAME; ?>" style="" onclick="serendipity.openPopup('<?php echo $link; ?>', 'linktrimmerSel', 'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1');">
<?php
} else {
?>
<input type="button" class="serendipityPrettyButton input_button" name="insLinktrimmer" value="<?php echo PLUGIN_LINKTRIMMER_NAME; ?>" style="" onclick="window.open('<?php echo $link; ?>', 'linktrimmerSel', 'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1');" />
<?php
}
}
function event_hook($event, &$bag, &$eventData, $addData = null) {
@ -241,7 +250,7 @@ class serendipity_event_linktrimmer extends serendipity_event {
switch($event) {
case 'backend_entry_toolbar_extended':
if (isset($eventData['backend_entry_toolbar_extended:textarea'])) {
$txtarea = $eventData['backend_entry_toolbar_extended:textarea'];
$txtarea = $serendipity['version'][0] < '2' ? $eventData['backend_entry_toolbar_extended:textarea'] : $eventData['backend_entry_toolbar_extended:nugget'];
} else {
$txtarea = 'extended';
}
@ -255,7 +264,7 @@ class serendipity_event_linktrimmer extends serendipity_event {
case 'backend_entry_toolbar_body':
if (isset($eventData['backend_entry_toolbar_body:textarea'])) {
$txtarea = $eventData['backend_entry_toolbar_body:textarea'];
$txtarea = $serendipity['version'][0] < '2' ? $eventData['backend_entry_toolbar_body:textarea'] : $eventData['backend_entry_toolbar_body:nugget'];
} else {
$txtarea = 'body';
}
@ -268,16 +277,16 @@ class serendipity_event_linktrimmer extends serendipity_event {
break;
case 'backend_wysiwyg':
$link = ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/linktrimmer' . ($serendipity['rewrite'] != 'none' ? '?' : '&amp;') . 'txtarea=' . $eventData['jsname'];
$link = $serendipity['serendipityHTTPPath'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/linktrimmer' . ($serendipity['rewrite'] != 'none' ? '?' : '&amp;') . 'txtarea=' . ($serendipity['version'][0] > '1' ? 'linktrimmer'.$eventData['item'] : $eventData['jsname']);
$open = $serendipity['version'][0] > '1' ? 'serendipity.openPopup' : 'window.open';
$eventData['buttons'][] = array(
'id' => 'linktrimmer' . $eventData['jsname'],
'id' => 'linktrimmer' . ($serendipity['version'][0] > '1' ? $eventData['item'] : $eventData['jsname']),
'name' => PLUGIN_LINKTRIMMER_NAME,
'javascript' => 'function() { window.open(\'' . $link . '\', \'LinkTrimmer\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\') }',
'img_url' => $serendipity['serendipityHTTPPath'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/linktrimmergif',
'javascript' => 'function() { '.$open.'(\'' . $link . '\', \'LinkTrimmer\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\') }',
'img_url' => $serendipity['serendipityHTTPPath'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/plugin_linktrimmer.gif',
'img_path' => 'serendipity_event_linktrimmer/serendipity_event_linktrimmer.gif',
'toolbar' => 'other' // TOOLBAR_WEB is buggy in s9y 1.4 :-/
);
'toolbar' => 'other'
);//'img_path' deprecated, used by ckeditor plugin <= 4.1.0
return true;
break;
@ -297,8 +306,12 @@ class serendipity_event_linktrimmer extends serendipity_event {
}
break;
case 'backend_dashboard':
if (serendipity_db_bool($this->get_config('frontpage', true)) ) $this->show();
break;
case 'backend_frontpage_display':
if (!isset($serendipity['plugin_dashboard_version']) && serendipity_db_bool($this->get_config('frontpage', true)) ) $this->show();
if (serendipity_db_bool($this->get_config('frontpage', true) && $serendipity['version'][0] <= '1') ) $this->show();
break;
case 'external_plugin':
@ -335,7 +348,7 @@ class serendipity_event_linktrimmer extends serendipity_event {
}
}
switch($uri_part) {
case 'linktrimmergif':
case 'plugin_linktrimmer.gif':
header('Content-Type: image/gif');
echo file_get_contents(dirname(__FILE__) . '/serendipity_event_linktrimmer.gif');
break;
@ -349,6 +362,7 @@ class serendipity_event_linktrimmer extends serendipity_event {
if (!strpos($eventData, '.linktrimmer')) {
// class exists in CSS, so a user has customized it and we don't need default
echo file_get_contents(dirname(__FILE__) . '/linktrimmer.css');
if ($serendipity['version'][0] < '2') echo '#linktrimmer_url.input_textbox { width: inherit; }';
}
break;