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: 1.3:
---- ----
* Added new option to hide lintrimmer on backend frontpage * Added new option to hide linktrimmer on backends frontpage
* Use nativ API method here - extends S9y version >= 1.3 * Use nativ API method here - extends S9y version >= 1.3
1.1, 1.2: 1.1, 1.2:
---- ----
* Static php5 function fixes * Static php5 function fixes
1.0: 1.0:
---- ----
* Do not show in Dashboard (POC) * Do not show in Dashboard (POC)
0.9: 0.9:
---- ----
* Added CKEDITOR ready eventData image path * Added CKEDITOR ready eventData image path
0.8: 0.8:
---- ----
* Latest: Smarty3 forward compatibility * Latest: Smarty3 forward compatibility
0.7: 0.7:
---- ----
* Use latin1_general_cs charset due to lower/uppercase lookups, * Use latin1_general_cs charset due to lower/uppercase lookups,
thanks to danst0 thanks to danst0
0.6: 0.6:
---- ----
* Allow to be used in other plugins (danst0) * Allow to be used in other plugins (danst0)
0.5: 0.5:
---- ----
* Remove unneeded die() * Remove unneeded die()
0.1: 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%;
} }
#linktrimmer_result.input_textbox {
.serendipity_linktrimmer_page .linktrimmer { width: 100%;
float: none;
display: block;
margin: auto auto;
} }

View file

@ -1,63 +1,109 @@
{if $linktrimmer_external} {if $linktrimmer_external}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!doctype html>
<html> <!--[if IE 8]> <html class="no-js lt-ie9" lang="{$lang}"> <![endif]-->
<head> <!--[if gt IE 8]><!--> <html class="no-js" lang="{$lang}"> <!--<![endif]-->
<title>{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_MEDIA_BUTTON}</title> <head>
<meta http-equiv="Content-Type" content="text/html; charset={$CONST.LANG_CHARSET}" /> <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>{* popup only classes *}
.serendipity_linktrimmer_page .linktrimmer {
<style type="text/css"> display: block;
{$linktrimmer_css} margin: 1em auto auto;
</style> }
</head> #main_linktrimmer {
border: 1px solid #BBB;
<body id="serendipity_admin_page" class="serendipity_linktrimmer_page"> background: none repeat scroll 0% 0% #EEE;
<div id="serendipityAdminMainpane"> 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}
{if $linktrimmer_external}
<div class="linktrimmer"> <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} {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').select();
document.getElementById('linktrimmer_url').focus(); document.getElementById('linktrimmer_url').focus();
</script> </script>
{/if} {/if}
</fieldset> </fieldset>
</form> </form>
</div>
{if $linktrimmer_external} {if $linktrimmer_external}
</div> </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> </body>
</html> </html>
{/if} {/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) { if (IN_serendipity !== true) {
die ("Don't hack!"); die ("Don't hack!");
@ -26,14 +26,15 @@ class serendipity_event_linktrimmer extends serendipity_event {
'php' => '4.1.0' 'php' => '4.1.0'
)); ));
$propbag->add('version', '1.3'); $propbag->add('version', '1.4');
$propbag->add('author', 'Garvin Hicking'); $propbag->add('author', 'Garvin Hicking, Ian');
$propbag->add('stackable', false); $propbag->add('stackable', false);
$propbag->add('configuration', array('prefix', 'frontpage', 'domain')); $propbag->add('configuration', array('prefix', 'frontpage', 'domain'));
$propbag->add('event_hooks', array( $propbag->add('event_hooks', array(
'backend_frontpage_display' => true, 'backend_frontpage_display' => true,
'css_backend' => true, 'css_backend' => true,
'frontend_configure' => true, 'frontend_configure' => true,
'backend_dashboard' => true,
'backend_entry_toolbar_extended' => true, 'backend_entry_toolbar_extended' => true,
'backend_entry_toolbar_body' => true, 'backend_entry_toolbar_body' => true,
'backend_wysiwyg' => true, 'backend_wysiwyg' => true,
@ -201,16 +202,18 @@ class serendipity_event_linktrimmer extends serendipity_event {
} }
$serendipity['smarty']->assign(array( $serendipity['smarty']->assign(array(
'linktrimmer_error' => $error, 'linktrimmer_error' => $error,
'linktrimmer_url' => $url, 'linktrimmer_url' => $url,
'linktrimmer_origurl' => $_REQUEST['linktrimmer_url'], 'linktrimmer_origurl' => $_REQUEST['linktrimmer_url'],
'linktrimmer_external' => $external, 'linktrimmer_external' => $external,
'linktrimmer_txtarea' => $_REQUEST['txtarea'], 'linktrimmer_txtarea' => $_REQUEST['txtarea']
'linktrimmer_css' => file_get_contents(dirname(__FILE__) . '/linktrimmer.css')
)); ));
// use nativ API here - extends S9y version >= 1.3 if ($serendipity['version'][0] > '1') {
echo $this->parseTemplate('plugin_linktrimmer.tpl'); echo $this->parseTemplate('plugin_linktrimmer.tpl');
} else {
echo $this->parseTemplate('plugin_linktrimmer_old.tpl');
}
} }
function generate_button ($txtarea) { function generate_button ($txtarea) {
@ -218,10 +221,16 @@ class serendipity_event_linktrimmer extends serendipity_event {
if (!isset($txtarea)) { if (!isset($txtarea)) {
$txtarea = 'body'; $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');" /> <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 <?php
}
} }
function event_hook($event, &$bag, &$eventData, $addData = null) { function event_hook($event, &$bag, &$eventData, $addData = null) {
@ -241,7 +250,7 @@ class serendipity_event_linktrimmer extends serendipity_event {
switch($event) { switch($event) {
case 'backend_entry_toolbar_extended': case 'backend_entry_toolbar_extended':
if (isset($eventData['backend_entry_toolbar_extended:textarea'])) { 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 { } else {
$txtarea = 'extended'; $txtarea = 'extended';
} }
@ -255,7 +264,7 @@ class serendipity_event_linktrimmer extends serendipity_event {
case 'backend_entry_toolbar_body': case 'backend_entry_toolbar_body':
if (isset($eventData['backend_entry_toolbar_body:textarea'])) { 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 { } else {
$txtarea = 'body'; $txtarea = 'body';
} }
@ -268,16 +277,16 @@ class serendipity_event_linktrimmer extends serendipity_event {
break; break;
case 'backend_wysiwyg': case 'backend_wysiwyg':
$link = $serendipity['serendipityHTTPPath'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/linktrimmer' . ($serendipity['rewrite'] != 'none' ? '?' : '&amp;') . 'txtarea=' . ($serendipity['version'][0] > '1' ? 'linktrimmer'.$eventData['item'] : $eventData['jsname']);
$link = ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/linktrimmer' . ($serendipity['rewrite'] != 'none' ? '?' : '&amp;') . 'txtarea=' . $eventData['jsname']; $open = $serendipity['version'][0] > '1' ? 'serendipity.openPopup' : 'window.open';
$eventData['buttons'][] = array( $eventData['buttons'][] = array(
'id' => 'linktrimmer' . $eventData['jsname'], 'id' => 'linktrimmer' . ($serendipity['version'][0] > '1' ? $eventData['item'] : $eventData['jsname']),
'name' => PLUGIN_LINKTRIMMER_NAME, 'name' => PLUGIN_LINKTRIMMER_NAME,
'javascript' => 'function() { window.open(\'' . $link . '\', \'LinkTrimmer\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\') }', '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/linktrimmergif', 'img_url' => $serendipity['serendipityHTTPPath'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/plugin_linktrimmer.gif',
'img_path' => 'serendipity_event_linktrimmer/serendipity_event_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; return true;
break; break;
@ -297,8 +306,12 @@ class serendipity_event_linktrimmer extends serendipity_event {
} }
break; break;
case 'backend_dashboard':
if (serendipity_db_bool($this->get_config('frontpage', true)) ) $this->show();
break;
case 'backend_frontpage_display': 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; break;
case 'external_plugin': case 'external_plugin':
@ -335,7 +348,7 @@ class serendipity_event_linktrimmer extends serendipity_event {
} }
} }
switch($uri_part) { switch($uri_part) {
case 'linktrimmergif': case 'plugin_linktrimmer.gif':
header('Content-Type: image/gif'); header('Content-Type: image/gif');
echo file_get_contents(dirname(__FILE__) . '/serendipity_event_linktrimmer.gif'); echo file_get_contents(dirname(__FILE__) . '/serendipity_event_linktrimmer.gif');
break; break;
@ -349,6 +362,7 @@ class serendipity_event_linktrimmer extends serendipity_event {
if (!strpos($eventData, '.linktrimmer')) { if (!strpos($eventData, '.linktrimmer')) {
// class exists in CSS, so a user has customized it and we don't need default // class exists in CSS, so a user has customized it and we don't need default
echo file_get_contents(dirname(__FILE__) . '/linktrimmer.css'); echo file_get_contents(dirname(__FILE__) . '/linktrimmer.css');
if ($serendipity['version'][0] < '2') echo '#linktrimmer_url.input_textbox { width: inherit; }';
} }
break; break;