From: garvinhicking Date: Sun, 18 Jun 2006 19:44:27 +0000 (+0000) Subject: Add PHP engine, for Davey. X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=794d14f8921d8cd77cc9a8774e794ea3afd01f46;p=s9y.git Add PHP engine, for Davey. --- diff --git a/docs/NEWS b/docs/NEWS index f038da4..5182ff6 100644 --- a/docs/NEWS +++ b/docs/NEWS @@ -3,6 +3,12 @@ Version 1.1-alpha7() ------------------------------------------------------------------------ + * Added experimental PHP-engine templating support, bypassing + Smarty. Work in progress, mostly proof-of-concept. Might + be changed completely. Read instructions in the + include/template_api.inc.php file. Dedicated to Davey. ;) + (garvinhicking) + * Support to crop images from within the media database. Pick a picture in the MDB, go to the property section of that image and click on the "EDIT" link. (garvinhicking) diff --git a/include/functions_smarty.inc.php b/include/functions_smarty.inc.php index 54db6ee..5a58ade 100644 --- a/include/functions_smarty.inc.php +++ b/include/functions_smarty.inc.php @@ -616,53 +616,63 @@ function serendipity_smarty_init($vars = array()) { global $serendipity, $template_config; if (!isset($serendipity['smarty'])) { - @define('SMARTY_DIR', S9Y_PEAR_PATH . 'Smarty/libs/'); - if (!class_exists('Smarty')) { - require SMARTY_DIR . 'Smarty.class.php'; - } - $serendipity['smarty'] = new Smarty; - if ($serendipity['production'] === 'debug') { - $serendipity['smarty']->force_compile = true; - $serendipity['smarty']->debugging = true; - } - $serendipity['smarty']->template_dir = array( - $serendipity['serendipityPath'] . $serendipity['templatePath'] . $serendipity['template'], - $serendipity['serendipityPath'] . $serendipity['templatePath'] . 'default' - ); - $serendipity['smarty']->compile_dir = $serendipity['serendipityPath'] . PATH_SMARTY_COMPILE; - - if (!is_dir($serendipity['smarty']->compile_dir) || !is_writable($serendipity['smarty']->compile_dir)) { - serendipity_die(sprintf(DIRECTORY_WRITE_ERROR, $serendipity['smarty']->compile_dir)); + $template_dir = $serendipity['serendipityPath'] . $serendipity['templatePath'] . $serendipity['template']; + if (!defined('IN_serendipity_admin') && file_exists($template_dir . '/template.inc.php')) { + // If this file exists, a custom template engine will be loaded. + // Beware: Smarty is used in the Admin backend, despite of this. + include $template_dir . '/template.inc.php'; + } else { + // Default Smarty Engine will be used + + @define('SMARTY_DIR', S9Y_PEAR_PATH . 'Smarty/libs/'); + if (!class_exists('Smarty')) { + require SMARTY_DIR . 'Smarty.class.php'; + } + $serendipity['smarty'] = new Smarty; + if ($serendipity['production'] === 'debug') { + $serendipity['smarty']->force_compile = true; + $serendipity['smarty']->debugging = true; + } + + $serendipity['smarty']->template_dir = array( + $template_dir, + $serendipity['serendipityPath'] . $serendipity['templatePath'] . 'default' + ); + $serendipity['smarty']->compile_dir = $serendipity['serendipityPath'] . PATH_SMARTY_COMPILE; + + if (!is_dir($serendipity['smarty']->compile_dir) || !is_writable($serendipity['smarty']->compile_dir)) { + serendipity_die(sprintf(DIRECTORY_WRITE_ERROR, $serendipity['smarty']->compile_dir)); + } + + $serendipity['smarty']->config_dir = $template_dir; + $serendipity['smarty']->secure_dir = array($serendipity['serendipityPath'] . $serendipity['templatePath']); + $serendipity['smarty']->security_settings['MODIFIER_FUNCS'] = array('sprintf', 'sizeof', 'count', 'rand', 'print_r', 'str_repeat'); + $serendipity['smarty']->security_settings['ALLOW_CONSTANTS'] = true; + $serendipity['smarty']->security = true; + $serendipity['smarty']->use_sub_dirs = false; + $serendipity['smarty']->compile_check = true; + $serendipity['smarty']->compile_id = &$serendipity['template']; + + $serendipity['smarty']->register_modifier('makeFilename', 'serendipity_makeFilename'); + $serendipity['smarty']->register_modifier('xhtml_target', 'serendipity_xhtml_target'); + $serendipity['smarty']->register_modifier('emptyPrefix', 'serendipity_emptyPrefix'); + $serendipity['smarty']->register_modifier('formatTime', 'serendipity_smarty_formatTime'); + $serendipity['smarty']->register_modifier('serendipity_utf8_encode', 'serendipity_utf8_encode'); + $serendipity['smarty']->register_modifier('ifRemember', 'serendipity_ifRemember'); + + $serendipity['smarty']->register_function('serendipity_printSidebar', 'serendipity_smarty_printSidebar'); + $serendipity['smarty']->register_function('serendipity_hookPlugin', 'serendipity_smarty_hookPlugin'); + $serendipity['smarty']->register_function('serendipity_showPlugin', 'serendipity_smarty_showPlugin'); + $serendipity['smarty']->register_function('serendipity_getFile', 'serendipity_smarty_getFile'); + $serendipity['smarty']->register_function('serendipity_printComments', 'serendipity_smarty_printComments'); + $serendipity['smarty']->register_function('serendipity_printTrackbacks', 'serendipity_smarty_printTrackbacks'); + $serendipity['smarty']->register_function('serendipity_rss_getguid', 'serendipity_smarty_rss_getguid'); + $serendipity['smarty']->register_function('serendipity_fetchPrintEntries', 'serendipity_smarty_fetchPrintEntries'); + $serendipity['smarty']->register_function('serendipity_getTotalCount', 'serendipity_smarty_getTotalCount'); + $serendipity['smarty']->register_function('pickKey', 'serendipity_smarty_pickKey'); + + $serendipity['smarty']->register_prefilter('serendipity_replaceSmartyVars'); } - - $serendipity['smarty']->config_dir = &$serendipity['smarty']->template_dir[0]; - $serendipity['smarty']->secure_dir = array($serendipity['serendipityPath'] . $serendipity['templatePath']); - $serendipity['smarty']->security_settings['MODIFIER_FUNCS'] = array('sprintf', 'sizeof', 'count', 'rand', 'print_r', 'str_repeat'); - $serendipity['smarty']->security_settings['ALLOW_CONSTANTS'] = true; - $serendipity['smarty']->security = true; - $serendipity['smarty']->use_sub_dirs = false; - $serendipity['smarty']->compile_check = true; - $serendipity['smarty']->compile_id = &$serendipity['template']; - - $serendipity['smarty']->register_modifier('makeFilename', 'serendipity_makeFilename'); - $serendipity['smarty']->register_modifier('xhtml_target', 'serendipity_xhtml_target'); - $serendipity['smarty']->register_modifier('emptyPrefix', 'serendipity_emptyPrefix'); - $serendipity['smarty']->register_modifier('formatTime', 'serendipity_smarty_formatTime'); - $serendipity['smarty']->register_modifier('serendipity_utf8_encode', 'serendipity_utf8_encode'); - $serendipity['smarty']->register_modifier('ifRemember', 'serendipity_ifRemember'); - - $serendipity['smarty']->register_function('serendipity_printSidebar', 'serendipity_smarty_printSidebar'); - $serendipity['smarty']->register_function('serendipity_hookPlugin', 'serendipity_smarty_hookPlugin'); - $serendipity['smarty']->register_function('serendipity_showPlugin', 'serendipity_smarty_showPlugin'); - $serendipity['smarty']->register_function('serendipity_getFile', 'serendipity_smarty_getFile'); - $serendipity['smarty']->register_function('serendipity_printComments', 'serendipity_smarty_printComments'); - $serendipity['smarty']->register_function('serendipity_printTrackbacks', 'serendipity_smarty_printTrackbacks'); - $serendipity['smarty']->register_function('serendipity_rss_getguid', 'serendipity_smarty_rss_getguid'); - $serendipity['smarty']->register_function('serendipity_fetchPrintEntries', 'serendipity_smarty_fetchPrintEntries'); - $serendipity['smarty']->register_function('serendipity_getTotalCount', 'serendipity_smarty_getTotalCount'); - $serendipity['smarty']->register_function('pickKey', 'serendipity_smarty_pickKey'); - - $serendipity['smarty']->register_prefilter('serendipity_replaceSmartyVars'); } if (!isset($serendipity['smarty_raw_mode'])) { diff --git a/include/template_api.inc.php b/include/template_api.inc.php new file mode 100644 index 0000000..50ab843 --- /dev/null +++ b/include/template_api.inc.php @@ -0,0 +1,177 @@ + + + You could of course also use inherited different template classes. It is important + that your own template object contains method declarations like the class below + for full interoperability to Serendipity templates. It is important that + you assign a reference copy of your template object to the $serendipity['smarty'] + object for backwards compatibility. + + All variables that are assigned from this class to your templates/.php files + will be put into $GLOBALS['tpl']. + + Since the scope of includes can vary, you'll need to use $GLOBALS['tpl'] instead + of just $tpl in some cases. Thus it's recommended to always use the $GLOBALS['tpl'] + way. Also it's safer to use $GLOBALS['serendipity'] / $GLOBALS['template'] in most + cases because of the same reason. + + Instead of Smarty $CONST.xxx constants you can use the usual 'xxx' constant access + method by PHP. + + You can use any Smarty template file to construct your custom PHP template. You + just need to do this: + + - Replace '{$variable}' calls with ''. + + - Replace '{$variable|XXX}' smarty modifiers with corresponding PHP code, like: + '' + would correspond with + '{$variable|truncate:'...':25}' + - Replace '{if CONDITION} ... {/if}' checks with ' ... ' + + - Replace '{foreach} ... {/foreach}' calls correspondingly. + + - Replace '{smartycommand param1=x param2=x}' function calls with + 'call('smartycommand', array('param1' => 'x', 'param2' => 'x')); ?>' ones + + - NOTA BENE: Be aware that many smarty function calls are just wrappers to Serendipity API + calls. To save grandma's performance pennies you should search the original Serendipity API + function before calling them with the $GLOBALS['template']->call() wrapper! This costs dearly. + + The Serendipity Admin backend will still make use of Smarty. It rocks. + + Know your PHP before you think about using this. :-) +*/ + +class serendipity_smarty_emulator { + var $compile_dir = '/tmp'; // Not used + var $security_settings = array(); // Not used + +/** + * Assign one or multiple template variable + * @TODO: Why can't this function accept references. This sucks. + * + * @param mixed Either a variable name, or an array of variables + * @param mixed Either null or the variable content. + * @access public + * @return null + */ + function assign($tpl_var, $value = null) { + if (is_array($tpl_var)) { + foreach ($tpl_var as $key => $val) { + if ($key != '') { + $GLOBALS['tpl'][$key] = $tpl_var[$key]; + } + } + } else { + $GLOBALS['tpl'][$tpl_var] = $value; + } + + return true; + } + +/** + * Helper function to call a 'serendipity_smarty_xx' function with less parameters. + * + * @param string Function name to call. + * @param array Array of parameters + * @access public + * @return string Output + */ + function call($funcname, $params) { + if (function_exists('serendipity_smarty_' . $funcname)) { + return call_user_func('serendipity_smarty_' . $funcname, $params, $this); + } elseif (function_exists('serendipity_' . $funcname)) { + return call_user_func('serendipity_' . $funcname, $params, $this); + } elseif (function_exists($funcname)) { + return call_user_func($funcname, $params, $this); + } else { + return "ERROR: " . htmlspecialchars($funcname) . " NOT FOUND.
\n"; + } + } + +/** + * Outputs a smarty template. + * + * @param string Full path to template file + * @access public + * @return boolean + */ + function display($resource_name) { + return include $resource_name; + } + +/** + * Triggers a template error + * + * @param string Error message + * @access public + * @return null + */ + function trigger_error($txt) { + echo 'SMARTY EMULATOR ERROR: ' . $txt; + } + +/** + * Echoes a default value. Append multiple values and will output the first non empty value. + * + * @param mixed The value to emit. + * @access public + * @return null + */ + function getdefault() { + $vars = func_get_args(); + foreach($vars as $title) { + if (!empty($GLOBALS['tpl'][$title])) { + return $GLOBALS['tpl'][$title]; + } + } + + return false; + } + +/** + * Parses a template file into another. + * + * @param string The path to the resource name (prefixed with 'file:' usually) + * @param string The Cache ID (not used) + * @param string The Compile ID (not used) + * @param boolean Output data (true) or return it (false)? + * @access public + * @return null + */ + function &fetch($resource_name, $cache_id = null, $compile_id = null, $display = false) { + $resource_name = str_replace('file:', '', $resource_name); + + if (!$display) { + ob_start(); + } + + include $resource_name; + + if (!$display) { + $out = ob_get_contents(); + ob_end_clean(); + return $out; + } else { + return true; + } + } +} + diff --git a/templates/default-php/commentform.tpl b/templates/default-php/commentform.tpl new file mode 100644 index 0000000..f014fe6 --- /dev/null +++ b/templates/default-php/commentform.tpl @@ -0,0 +1,60 @@ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +{if $is_commentform_showToolbar} + + + + + + +{if $is_moderate_comments} + + + + + + + + + +
+
+ {serendipity_hookPlugin hook="frontend_comment" data=$commentform_entry} +
  + /> + {if $is_allowSubscriptions} +
+ /> + +
 
+
+
diff --git a/templates/default-php/commentpopup.tpl b/templates/default-php/commentpopup.tpl new file mode 100644 index 0000000..fec9ad5 --- /dev/null +++ b/templates/default-php/commentpopup.tpl @@ -0,0 +1,61 @@ +{if $is_xhtml} + + + + + + + + {$head_title|@default:$blogTitle} {if $head_subtitle} - <?= $GLOBALS['tpl']['head_subtitle'] ?><?php endif; ?> + + + + + + + + + +{if $is_comment_added} + + + +{elseif $is_comment_notadded} + + + +{elseif $is_comment_empty} + + + +{elseif $is_showtrackbacks} + +
+
+
:
+
+ +
:
+
+
+ + {serendipity_printTrackbacks entry=$entry_id} + +{elseif $is_showcomments} + +
+ + {serendipity_printComments entry=$entry_id} + {if $is_comment_allowed} +
+ + +
+ + + + + + diff --git a/templates/default-php/comments.tpl b/templates/default-php/comments.tpl new file mode 100644 index 0000000..f48518d --- /dev/null +++ b/templates/default-php/comments.tpl @@ -0,0 +1,37 @@ +{foreach from=$comments item=comment name="comments"} + +
+
+ {if $comment.body == 'COMMENT_DELETED'} + + + + +
+
+ # + + {if $comment.email} + {$comment.author|@default:$CONST.ANONYMOUS} + + {$comment.author|@default:$CONST.ANONYMOUS} + + + {if $comment.url} + () + + + {$comment.timestamp|@formatTime:$CONST.DATE_FORMAT_SHORT} + + {if $entry.is_entry_owner} + () + + {if $entry.allow_comments AND $comment.body != 'COMMENT_DELETED'} + () +
+ +
+
+{foreachelse} +
+ diff --git a/templates/default-php/content.tpl b/templates/default-php/content.tpl new file mode 100644 index 0000000..4fb9585 --- /dev/null +++ b/templates/default-php/content.tpl @@ -0,0 +1,22 @@ + + + +

+ + +

+ + +

+ + +

+ + +
+ + + + + + diff --git a/templates/default-php/entries.tpl b/templates/default-php/entries.tpl new file mode 100644 index 0000000..e7da546 --- /dev/null +++ b/templates/default-php/entries.tpl @@ -0,0 +1,198 @@ + + + + + + + + + + + + + diff --git a/templates/default-php/entries_archives.tpl b/templates/default-php/entries_archives.tpl new file mode 100644 index 0000000..f2aaaca --- /dev/null +++ b/templates/default-php/entries_archives.tpl @@ -0,0 +1,20 @@ +{serendipity_hookPlugin hook="entries_header"} +

+{foreach from=$archives item="archive"} + + + + + {foreach from=$archive.months item="month"} + + + + + + + + +

{$month.date|@formatTime:"%B"}
+ + diff --git a/templates/default-php/entries_summary.tpl b/templates/default-php/entries_summary.tpl new file mode 100644 index 0000000..584c47f --- /dev/null +++ b/templates/default-php/entries_summary.tpl @@ -0,0 +1,15 @@ +{serendipity_hookPlugin hook="entries_header"} +
{$dateRange.0|@formatTime:"%B, %Y"}
+ +
+
    + {foreach from=$entries item="entries"} + {foreach from=$entries.entries item="entry"} +
  • +
    {$entry.timestamp|@formatTime:DATE_FORMAT_ENTRY}
  • + + +
+
+ diff --git a/templates/default-php/feed_0.91.tpl b/templates/default-php/feed_0.91.tpl new file mode 100644 index 0000000..91f1ddb --- /dev/null +++ b/templates/default-php/feed_0.91.tpl @@ -0,0 +1,26 @@ + + +> + +<?= $GLOBALS['tpl']['metadata']['title'] ?> + + + + + +{foreach from=$entries item="entry"} + + <?= $entry['feed_title'] ?> + + +{if !empty($entry.body)} + + {$entry.feed_body|@escape} {$entry.feed_ext|@escape} + +{/if} + +{/foreach} + + + + diff --git a/templates/default-php/feed_1.0.tpl b/templates/default-php/feed_1.0.tpl new file mode 100644 index 0000000..aa217e1 --- /dev/null +++ b/templates/default-php/feed_1.0.tpl @@ -0,0 +1,59 @@ + + + + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:admin="http://webns.net/mvcb/" + xmlns:content="http://purl.org/rss/1.0/modules/content/" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:slash="http://purl.org/rss/1.0/modules/slash/" + xmlns:wfw="http://wellformedweb.org/CommentAPI/" + xmlns="http://my.netscape.com/rdf/simple/0.9/"> + + <?= $GLOBALS['tpl']['metadata']['title'] ?> + + + +{if $metadata.showMail} + +{/if} + + + + + +{foreach from=$entries item="entry"} + +{/foreach} + + + + + + + +{foreach from=$entries item="entry"} + + <?= $entry['feed_title'] ?> + +{if !empty($entry.body)} + + {$entry.feed_body|@escape} {$entry.feed_ext|@escape} + +{/if} + + + () + + {foreach from=$entry.categories item="cat"}, {/foreach} + + wfwcomment.php?cid= +{if !$is_comments} + + rss.php?version=&type=comments&cid= +{/if} + + +{/foreach} + + + diff --git a/templates/default-php/feed_2.0.tpl b/templates/default-php/feed_2.0.tpl new file mode 100644 index 0000000..6631b87 --- /dev/null +++ b/templates/default-php/feed_2.0.tpl @@ -0,0 +1,53 @@ + + + + + {$metadata.title} + {$metadata.link} + {$metadata.description} + {$metadata.language} +{if $metadata.showMail} + +{/if} + Serendipity {$serendipityVersion} - http://www.s9y.org/ + {$metadata.additional_fields.channel} + {$metadata.additional_fields.image} + +{foreach from=$entries item="entry"} + + {$entry.feed_title} + {$entry.feed_entryLink} + {foreach from=$entry.categories item="cat"} + {$cat.feed_category_name} + {/foreach} + + {$entry.feed_entryLink}#comments + {$serendipityBaseURL}wfwcomment.php?cid={$entry.feed_id} + +{if !$is_comments} + {$entry.comments} + {$serendipityBaseURL}rss.php?version={$metadata.version}&type=comments&cid={$entry.feed_id} +{/if} + + {$entry.feed_email} ({$entry.feed_author}) +{if !empty($entry.body)} + + {$entry.feed_body|@escape} {$entry.feed_ext|@escape} + +{/if} + + {$entry.feed_timestamp_r} + {$entry.feed_guid} + {$entry.per_entry_display_dat} + +{/foreach} + + + diff --git a/templates/default-php/feed_atom0.3.tpl b/templates/default-php/feed_atom0.3.tpl new file mode 100644 index 0000000..9c873b5 --- /dev/null +++ b/templates/default-php/feed_atom0.3.tpl @@ -0,0 +1,56 @@ + + + + + + + + {$metadata.title} + {$metadata.description} + {$metadata.link} + {$last_modified} + Serendipity {$serendipityVersion} - http://www.s9y.org/ + {$metadata.language} +{if $metadata.showMail} + +{/if} + +
You are viewing an ATOM formatted XML site feed. Usually this file is inteded to be viewed in an aggregator or syndication software. If you want to know more about ATOM, please visist Atomenabled.org
+
+ +{foreach from=$entries item="entry"} + + + + {$entry.feed_author} + {$entry.feed_email} + + + {$entry.feed_timestamp} + {$entry.feed_timestamp} + {$entry.feed_last_modified} + {$serendipityBaseURL}wfwcomment.php?cid={$entry.feed_id} +{if !$is_comments} + {$entry.comments} + {$serendipityBaseURL}rss.php?version={$metadata.version}&type=comments&cid={$entry.feed_id} +{/if} + {$entry.feed_guid} + {$entry.feed_title} +{if !empty($entry.body)} + +
+ {$entry.feed_body} {$entry.feed_ext} +
+
+{/if} + + {$entry.per_entry_display_dat} +
+{/foreach} +
\ No newline at end of file diff --git a/templates/default-php/feed_atom1.0.tpl b/templates/default-php/feed_atom1.0.tpl new file mode 100644 index 0000000..5106bb8 --- /dev/null +++ b/templates/default-php/feed_atom1.0.tpl @@ -0,0 +1,59 @@ + + + + + + + + {$metadata.title} + {$metadata.description} + {$metadata.additional_fields.image_atom10} + {$metadata.link} + {$last_modified} + Serendipity {$serendipityVersion} - http://www.s9y.org/ + {$metadata.language} +{if $metadata.showMail} + +{/if} + +{foreach from=$entries item="entry"} + + + + {$entry.feed_author} + {$entry.feed_email} + + + {$entry.feed_timestamp} + {$entry.feed_last_modified} + {$serendipityBaseURL}wfwcomment.php?cid={$entry.feed_id} + +{if !$is_comments} + {$entry.comments} + {$serendipityBaseURL}rss.php?version={$metadata.version}&type=comments&cid={$entry.feed_id} +{/if} + + {foreach from=$entry.categories item="cat"} + + {/foreach} + + {$entry.feed_guid} + {$entry.feed_title} +{if !empty($entry.body)} + +
+ {$entry.feed_body} {$entry.feed_ext} +
+
+{/if} + {$entry.per_entry_display_dat} +
+{/foreach} + +
\ No newline at end of file diff --git a/templates/default-php/feed_opml1.0.tpl b/templates/default-php/feed_opml1.0.tpl new file mode 100644 index 0000000..3d3b2d4 --- /dev/null +++ b/templates/default-php/feed_opml1.0.tpl @@ -0,0 +1,16 @@ + + + + + {$metadata.title} + {$last_modified} + Serendipity {$serendipityVersion} - http://www.s9y.org/ + + + +{foreach from=$entries item="entry"} + +{/foreach} + + + \ No newline at end of file diff --git a/templates/default-php/index.tpl b/templates/default-php/index.tpl new file mode 100644 index 0000000..1450cbf --- /dev/null +++ b/templates/default-php/index.tpl @@ -0,0 +1,48 @@ + + + + <?= $GLOBALS['template']->getdefault('head_title', 'blogTitle'); ?> - <?= $GLOBALS['template']->getdefault('head_subtitle', 'blogDescription'); ?> + + + + + + + + + + + + + + + + + + + + + + + 0): ?> + + + + 0): ?> + + + +
+ + + + + + + + + + diff --git a/templates/default-php/info.txt b/templates/default-php/info.txt new file mode 100644 index 0000000..3e924fd --- /dev/null +++ b/templates/default-php/info.txt @@ -0,0 +1,4 @@ +Name: PHP Engine. EXPERIMENTAL. (Developers only) +Author: Garvin Hicking +Date: 06.06.2006 +Require Serendipity: 1.1 diff --git a/templates/default-php/plugin_calendar.tpl b/templates/default-php/plugin_calendar.tpl new file mode 100644 index 0000000..35274b5 --- /dev/null +++ b/templates/default-php/plugin_calendar.tpl @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + +
+ + <?= BACK ?> + + + + += $GLOBALS['tpl']['plugin_calendar_head']['month_date']): ?> + <?= FORWARD ?> + +
title="">
diff --git a/templates/default-php/plugin_categories.tpl b/templates/default-php/plugin_categories.tpl new file mode 100644 index 0000000..99ca06e --- /dev/null +++ b/templates/default-php/plugin_categories.tpl @@ -0,0 +1,31 @@ +{if $is_form} +
+
+ + + + +{if $is_form} +
+ + + + +{if $is_form} +
+
+ diff --git a/templates/default-php/preview.png b/templates/default-php/preview.png new file mode 100644 index 0000000..4bad5ac Binary files /dev/null and b/templates/default-php/preview.png differ diff --git a/templates/default-php/preview_iframe.tpl b/templates/default-php/preview_iframe.tpl new file mode 100644 index 0000000..c9761d5 --- /dev/null +++ b/templates/default-php/preview_iframe.tpl @@ -0,0 +1,24 @@ + + <?= SERENDIPITY_ADMIN_SUITE ?> + + + + + + + +
+
+ +
+
+ diff --git a/templates/default-php/sidebar.tpl b/templates/default-php/sidebar.tpl new file mode 100644 index 0000000..33e02e1 --- /dev/null +++ b/templates/default-php/sidebar.tpl @@ -0,0 +1,12 @@ + +
+ + +
+

+
+
+ + +
+ diff --git a/templates/default-php/template.inc.php b/templates/default-php/template.inc.php new file mode 100644 index 0000000..1ca9224 --- /dev/null +++ b/templates/default-php/template.inc.php @@ -0,0 +1,7 @@ + +
+
+ {$trackback.body|@strip_tags|@escape:all} +
+
+ Weblog: {$trackback.author|@default:$CONST.ANONYMOUS}
+ : {$trackback.timestamp|@formatTime:'%b %d, %H:%M'} + {if $entry.is_entry_owner} + () + +
+ +{foreachelse} +
+