From 4353a0f3f12ca253285e3edf9f2206e526f112ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=94=E8=90=BD?= <45323514+BigCoke233@users.noreply.github.com> Date: Sun, 24 Mar 2019 18:02:47 +0800 Subject: Add files via upload --- includes/comments.php | 44 ++++++ includes/footer.php | 134 ++++++++++++++++ includes/head.php | 126 +++++++++++++++ includes/header.php | 35 ++++ includes/owo.php | 78 +++++++++ includes/post-item.php | 58 +++++++ includes/sidebar.php | 98 ++++++++++++ includes/toolbar.php | 10 ++ plugins/Links/Action.php | 119 ++++++++++++++ plugins/Links/Mysql.sql | 11 ++ plugins/Links/Plugin.php | 343 ++++++++++++++++++++++++++++++++++++++++ plugins/Links/SQLite.sql | 10 ++ plugins/Links/Update_Mysql.sql | 4 + plugins/Links/Update_SQLite.sql | 25 +++ plugins/Links/manage-links.php | 144 +++++++++++++++++ plugins/Links/nopic.jpg | Bin 0 -> 1258 bytes screenshot.png | Bin 0 -> 64136 bytes 17 files changed, 1239 insertions(+) create mode 100644 includes/comments.php create mode 100644 includes/footer.php create mode 100644 includes/head.php create mode 100644 includes/header.php create mode 100644 includes/owo.php create mode 100644 includes/post-item.php create mode 100644 includes/sidebar.php create mode 100644 includes/toolbar.php create mode 100644 plugins/Links/Action.php create mode 100644 plugins/Links/Mysql.sql create mode 100644 plugins/Links/Plugin.php create mode 100644 plugins/Links/SQLite.sql create mode 100644 plugins/Links/Update_Mysql.sql create mode 100644 plugins/Links/Update_SQLite.sql create mode 100644 plugins/Links/manage-links.php create mode 100644 plugins/Links/nopic.jpg create mode 100644 screenshot.png diff --git a/includes/comments.php b/includes/comments.php new file mode 100644 index 0000000..3facb2a --- /dev/null +++ b/includes/comments.php @@ -0,0 +1,44 @@ +
+ +
+ + allow('comment')): ?> +
+
+
+

+ +

+ + user->hasLogin()): ?> +

user->screenName(); ?>. »

+ +

+ +

+ +

+ options->commentsRequireURL): ?> required /> +

+ + need('includes/owo.php'); ?> +

+ +

+
+
+ +

+ + + comments()->to($comments); ?> + have()): ?> +
+ listComments(); ?> +
+ pageNav('« 前一页', '后一页 »'); ?> + + +
\ No newline at end of file diff --git a/includes/footer.php b/includes/footer.php new file mode 100644 index 0000000..34e8cb4 --- /dev/null +++ b/includes/footer.php @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+ + options->pjax && $this->options->pjax!=0) :?> + + + + + + + + \ No newline at end of file diff --git a/includes/head.php b/includes/head.php new file mode 100644 index 0000000..c0e4b9e --- /dev/null +++ b/includes/head.php @@ -0,0 +1,126 @@ + + + + + + + + + is('index')): ?> + + + + + is('post')||$this->is('page')): ?> + + + + + + + + + + + + + <?php if($this->_currentPage>1) echo '第 '.$this->_currentPage.' 页 | '; ?> + <?php $this->archiveTitle(array( + 'category'=>_t('分类 %s 下的文章'), + 'search'=>_t('包含关键字 %s 的文章'), + 'tag' =>_t('标签 %s 下的文章'), + 'author'=>_t('%s 的主页') + ), '', ' | '); ?> + <?php $this->options->title(); ?> + <?php if($this->is('index')||$this->is('front')): ?> + <?php endif; ?> + + + + + + + + + + + + + + + + + + + + header(); ?> + + + + \ No newline at end of file diff --git a/includes/header.php b/includes/header.php new file mode 100644 index 0000000..f9a06d0 --- /dev/null +++ b/includes/header.php @@ -0,0 +1,35 @@ +
+
+ + + +
+
+
+
+
+ +
\ No newline at end of file diff --git a/includes/owo.php b/includes/owo.php new file mode 100644 index 0000000..c03ecc5 --- /dev/null +++ b/includes/owo.php @@ -0,0 +1,78 @@ + + +
+
+
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
+
+
+
\ No newline at end of file diff --git a/includes/post-item.php b/includes/post-item.php new file mode 100644 index 0000000..60ad412 --- /dev/null +++ b/includes/post-item.php @@ -0,0 +1,58 @@ +is('post') || $this->fields->type=='1' ): ?> + +is('index')): ?> +
+ +
+
+
+ author->gravatar(50); ?> +
+
+

sticky(); $this->title() ?>

+
author() ?> 发布了一条说说:
+
+
+
+
+
+ /s','',$this->content); + echo $content + ?> +
+ +
+ +
+
+
+
+ + + + +
+ is('index')): ?> +
+ fields->banner && $this->fields->banner!='') :?> +
+ +
+ + + +

sticky(); $this->title() ?>

+

+ excerpt(100); ?> +

+ +
+ + +
+
+
+
+ + diff --git a/includes/sidebar.php b/includes/sidebar.php new file mode 100644 index 0000000..5e4f0f2 --- /dev/null +++ b/includes/sidebar.php @@ -0,0 +1,98 @@ + \ No newline at end of file diff --git a/includes/toolbar.php b/includes/toolbar.php new file mode 100644 index 0000000..1f52a4f --- /dev/null +++ b/includes/toolbar.php @@ -0,0 +1,10 @@ + + \ No newline at end of file diff --git a/plugins/Links/Action.php b/plugins/Links/Action.php new file mode 100644 index 0000000..34e5ec1 --- /dev/null +++ b/plugins/Links/Action.php @@ -0,0 +1,119 @@ +validate()) { + $this->response->goBack(); + } + /** 取出数据 */ + $link = $this->request->from('name', 'url', 'sort', 'image', 'description', 'user'); + $link['order'] = $this->db->fetchObject($this->db->select(array('MAX(order)' => 'maxOrder'))->from($this->prefix.'links'))->maxOrder + 1; + + /** 插入数据 */ + $link['lid'] = $this->db->query($this->db->insert($this->prefix.'links')->rows($link)); + + /** 设置高亮 */ + $this->widget('Widget_Notice')->highlight('link-'.$link['lid']); + + /** 提示信息 */ + $this->widget('Widget_Notice')->set(_t('链接 %s 已经被增加', + $link['url'], $link['name']), NULL, 'success'); + + /** 转向原页 */ + $this->response->redirect(Typecho_Common::url('extending.php?panel=Links%2Fmanage-links.php', $this->options->adminUrl)); + } + + public function addHannysBlog() + { + /** 取出数据 */ + $link = array( + 'name' => "Hanny's Blog", + 'url' => "http://www.imhan.com", + 'description' => "寒泥 - Typecho插件开发者", + ); + $link['order'] = $this->db->fetchObject($this->db->select(array('MAX(order)' => 'maxOrder'))->from($this->prefix.'links'))->maxOrder + 1; + + /** 插入数据 */ + $link['lid'] = $this->db->query($this->db->insert($this->prefix.'links')->rows($link)); + + /** 设置高亮 */ + $this->widget('Widget_Notice')->highlight('link-'.$link['lid']); + + /** 提示信息 */ + $this->widget('Widget_Notice')->set(_t('链接 %s 已经被增加', + $link['url'], $link['name']), NULL, 'success'); + + /** 转向原页 */ + $this->response->redirect(Typecho_Common::url('extending.php?panel=Links%2Fmanage-links.php', $this->options->adminUrl)); + } + + public function updateLink() + { + if (Links_Plugin::form('update')->validate()) { + $this->response->goBack(); + } + + /** 取出数据 */ + $link = $this->request->from('lid', 'name', 'sort', 'image', 'url', 'description', 'user'); + + /** 更新数据 */ + $this->db->query($this->db->update($this->prefix.'links')->rows($link)->where('lid = ?', $link['lid'])); + + /** 设置高亮 */ + $this->widget('Widget_Notice')->highlight('link-'.$link['lid']); + + /** 提示信息 */ + $this->widget('Widget_Notice')->set(_t('链接 %s 已经被更新', + $link['url'], $link['name']), NULL, 'success'); + + /** 转向原页 */ + $this->response->redirect(Typecho_Common::url('extending.php?panel=Links%2Fmanage-links.php', $this->options->adminUrl)); + } + + public function deleteLink() + { + $lids = $this->request->filter('int')->getArray('lid'); + $deleteCount = 0; + if ($lids && is_array($lids)) { + foreach ($lids as $lid) { + if ($this->db->query($this->db->delete($this->prefix.'links')->where('lid = ?', $lid))) { + $deleteCount ++; + } + } + } + /** 提示信息 */ + $this->widget('Widget_Notice')->set($deleteCount > 0 ? _t('链接已经删除') : _t('没有链接被删除'), NULL, + $deleteCount > 0 ? 'success' : 'notice'); + + /** 转向原页 */ + $this->response->redirect(Typecho_Common::url('extending.php?panel=Links%2Fmanage-links.php', $this->options->adminUrl)); + } + + public function sortLink() + { + $links = $this->request->filter('int')->getArray('lid'); + if ($links && is_array($links)) { + foreach ($links as $sort => $lid) { + $this->db->query($this->db->update($this->prefix.'links')->rows(array('order' => $sort + 1))->where('lid = ?', $lid)); + } + } + } + + public function action() + { + $this->db = Typecho_Db::get(); + $this->prefix = $this->db->getPrefix(); + $this->options = Typecho_Widget::widget('Widget_Options'); + $this->on($this->request->is('do=insert'))->insertLink(); + $this->on($this->request->is('do=addhanny'))->addHannysBlog(); + $this->on($this->request->is('do=update'))->updateLink(); + $this->on($this->request->is('do=delete'))->deleteLink(); + $this->on($this->request->is('do=sort'))->sortLink(); + $this->response->redirect($this->options->adminUrl); + } +} diff --git a/plugins/Links/Mysql.sql b/plugins/Links/Mysql.sql new file mode 100644 index 0000000..f0b4a9d --- /dev/null +++ b/plugins/Links/Mysql.sql @@ -0,0 +1,11 @@ +CREATE TABLE `typecho_links` ( + `lid` int(10) unsigned NOT NULL auto_increment COMMENT 'links表主键', + `name` varchar(200) default NULL COMMENT 'links名称', + `url` varchar(200) default NULL COMMENT 'links网址', + `sort` varchar(200) default NULL COMMENT 'links分类', + `image` varchar(200) default NULL COMMENT 'links图片', + `description` varchar(200) default NULL COMMENT 'links描述', + `user` varchar(200) default NULL COMMENT '自定义', + `order` int(10) unsigned default '0' COMMENT 'links排序', + PRIMARY KEY (`lid`) +) ENGINE=MYISAM DEFAULT CHARSET=%charset%; diff --git a/plugins/Links/Plugin.php b/plugins/Links/Plugin.php new file mode 100644 index 0000000..6be9154 --- /dev/null +++ b/plugins/Links/Plugin.php @@ -0,0 +1,343 @@ +contentEx = array('Links_Plugin', 'parse'); + Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = array('Links_Plugin', 'parse'); + Typecho_Plugin::factory('Widget_Abstract_Comments')->contentEx = array('Links_Plugin', 'parse'); + return _t($info); + } + + /** + * 禁用插件方法,如果禁用失败,直接抛出异常 + * + * @static + * @access public + * @return void + * @throws Typecho_Plugin_Exception + */ + public static function deactivate() + { + Helper::removeAction('links-edit'); + Helper::removePanel(3, 'Links/manage-links.php'); + } + + /** + * 获取插件配置面板 + * + * @access public + * @param Typecho_Widget_Helper_Form $form 配置面板 + * @return void + */ + public static function config(Typecho_Widget_Helper_Form $form) {} + + /** + * 个人用户的配置面板 + * + * @access public + * @param Typecho_Widget_Helper_Form $form + * @return void + */ + public static function personalConfig(Typecho_Widget_Helper_Form $form) {} + + public static function linksInstall() + { + $installDb = Typecho_Db::get(); + $type = explode('_', $installDb->getAdapterName()); + $type = array_pop($type); + $prefix = $installDb->getPrefix(); + $scripts = file_get_contents('usr/plugins/Links/'.$type.'.sql'); + $scripts = str_replace('typecho_', $prefix, $scripts); + $scripts = str_replace('%charset%', 'utf8', $scripts); + $scripts = explode(';', $scripts); + try { + foreach ($scripts as $script) { + $script = trim($script); + if ($script) { + $installDb->query($script, Typecho_Db::WRITE); + } + } + return '建立友情链接数据表,插件启用成功'; + } catch (Typecho_Db_Exception $e) { + $code = $e->getCode(); + if(('Mysql' == $type && 1050 == $code) || + ('SQLite' == $type && ('HY000' == $code || 1 == $code))) { + try { + $script = 'SELECT `lid`, `name`, `url`, `sort`, `image`, `description`, `user`, `order` from `' . $prefix . 'links`'; + $installDb->query($script, Typecho_Db::READ); + return '检测到友情链接数据表,友情链接插件启用成功'; + } catch (Typecho_Db_Exception $e) { + $code = $e->getCode(); + if(('Mysql' == $type && 1054 == $code) || + ('SQLite' == $type && ('HY000' == $code || 1 == $code))) { + return Links_Plugin::linksUpdate($installDb, $type, $prefix); + } + throw new Typecho_Plugin_Exception('数据表检测失败,友情链接插件启用失败。错误号:'.$code); + } + } else { + throw new Typecho_Plugin_Exception('数据表建立失败,友情链接插件启用失败。错误号:'.$code); + } + } + } + + public static function linksUpdate($installDb, $type, $prefix) + { + $scripts = file_get_contents('usr/plugins/Links/Update_'.$type.'.sql'); + $scripts = str_replace('typecho_', $prefix, $scripts); + $scripts = str_replace('%charset%', 'utf8', $scripts); + $scripts = explode(';', $scripts); + try { + foreach ($scripts as $script) { + $script = trim($script); + if ($script) { + $installDb->query($script, Typecho_Db::WRITE); + } + } + return '检测到旧版本友情链接数据表,升级成功'; + } catch (Typecho_Db_Exception $e) { + $code = $e->getCode(); + if(('Mysql' == $type && 1060 == $code) ) { + return '友情链接数据表已经存在,插件启用成功'; + } + throw new Typecho_Plugin_Exception('友情链接插件启用失败。错误号:'.$code); + } + } + + public static function form($action = NULL) + { + /** 构建表格 */ + $options = Typecho_Widget::widget('Widget_Options'); + $form = new Typecho_Widget_Helper_Form(Typecho_Common::url('/action/links-edit', $options->index), + Typecho_Widget_Helper_Form::POST_METHOD); + + /** 链接名称 */ + $name = new Typecho_Widget_Helper_Form_Element_Text('name', NULL, NULL, _t('链接名称*')); + $form->addInput($name); + + /** 链接地址 */ + $url = new Typecho_Widget_Helper_Form_Element_Text('url', NULL, "http://", _t('链接地址*')); + $form->addInput($url); + + /** 链接分类 */ + $sort = new Typecho_Widget_Helper_Form_Element_Text('sort', NULL, NULL, _t('链接分类'), _t('建议以英文字母开头,只包含字母与数字')); + $form->addInput($sort); + + /** 链接图片 */ + $image = new Typecho_Widget_Helper_Form_Element_Text('image', NULL, NULL, _t('链接图片'), _t('需要以http://开头,留空表示没有链接图片')); + $form->addInput($image); + + /** 链接描述 */ + $description = new Typecho_Widget_Helper_Form_Element_Textarea('description', NULL, NULL, _t('链接描述')); + $form->addInput($description); + + /** 自定义数据 */ + $user = new Typecho_Widget_Helper_Form_Element_Text('user', NULL, NULL, _t('自定义数据'), _t('该项用于用户自定义数据扩展')); + $form->addInput($user); + + /** 链接动作 */ + $do = new Typecho_Widget_Helper_Form_Element_Hidden('do'); + $form->addInput($do); + + /** 链接主键 */ + $lid = new Typecho_Widget_Helper_Form_Element_Hidden('lid'); + $form->addInput($lid); + + /** 提交按钮 */ + $submit = new Typecho_Widget_Helper_Form_Element_Submit(); + $submit->input->setAttribute('class', 'btn primary'); + $form->addItem($submit); + $request = Typecho_Request::getInstance(); + + if (isset($request->lid) && 'insert' != $action) { + /** 更新模式 */ + $db = Typecho_Db::get(); + $prefix = $db->getPrefix(); + $link = $db->fetchRow($db->select()->from($prefix.'links')->where('lid = ?', $request->lid)); + if (!$link) { + throw new Typecho_Widget_Exception(_t('链接不存在'), 404); + } + + $name->value($link['name']); + $url->value($link['url']); + $sort->value($link['sort']); + $image->value($link['image']); + $description->value($link['description']); + $user->value($link['user']); + $do->value('update'); + $lid->value($link['lid']); + $submit->value(_t('编辑链接')); + $_action = 'update'; + } else { + $do->value('insert'); + $submit->value(_t('增加链接')); + $_action = 'insert'; + } + + if (empty($action)) { + $action = $_action; + } + + /** 给表单增加规则 */ + if ('insert' == $action || 'update' == $action) { + $name->addRule('required', _t('必须填写链接名称')); + $url->addRule('required', _t('必须填写链接地址')); + $url->addRule('url', _t('不是一个合法的链接地址')); + $image->addRule('url', _t('不是一个合法的图片地址')); + } + if ('update' == $action) { + $lid->addRule('required', _t('链接主键不存在')); + $lid->addRule(array(new Links_Plugin, 'LinkExists'), _t('链接不存在')); + } + return $form; + } + + public static function LinkExists($lid) + { + $db = Typecho_Db::get(); + $prefix = $db->getPrefix(); + $link = $db->fetchRow($db->select()->from($prefix.'links')->where('lid = ?', $lid)->limit(1)); + return $link ? true : false; + } + + /** + * 控制输出格式 + */ + public static function output_str($pattern=NULL, $links_num=0, $sort=NULL) + { + $options = Typecho_Widget::widget('Widget_Options'); + if (!isset($options->plugins['activated']['Links'])) { + return '友情链接插件未激活'; + } + if (!isset($pattern) || $pattern == "" || $pattern == NULL || $pattern == "SHOW_TEXT") { + $pattern = "
  • {name}
  • \n"; + } else if ($pattern == "SHOW_IMG") { + $pattern = "
  • \"{name}\"
  • \n"; + } else if ($pattern == "SHOW_MIX") { + $pattern = " + +
    + +
    +
    "; + } + $db = Typecho_Db::get(); + $prefix = $db->getPrefix(); + $options = Typecho_Widget::widget('Widget_Options'); + $nopic_url = Typecho_Common::url('/usr/plugins/Links/nopic.jpg', $options->siteUrl); + $sql = $db->select()->from($prefix.'links'); + if (!isset($sort) || $sort == "") { + $sort = NULL; + } + if ($sort) { + $sql = $sql->where('sort=?', $sort); + } + $sql = $sql->order($prefix.'links.order', Typecho_Db::SORT_ASC); + $links_num = intval($links_num); + if ($links_num > 0) { + $sql = $sql->limit($links_num); + } + $links = $db->fetchAll($sql); + $str = ""; + foreach ($links as $link) { + if ($link['image'] == NULL) { + $link['image'] = $nopic_url; + } + $str .= str_replace( + array('{lid}', '{name}', '{url}', '{sort}', '{title}', '{description}', '{image}', '{user}'), + array($link['lid'], $link['name'], $link['url'], $link['sort'], $link['description'], $link['description'], $link['image'], $link['user']), + $pattern + ); + } + return $str; + } + + //输出 + public static function output($pattern=NULL, $links_num=0, $sort=NULL) + { + echo Links_Plugin::output_str($pattern, $links_num, $sort); + } + + /** + * 解析 + * + * @access public + * @param array $matches 解析值 + * @return string + */ + public static function parseCallback($matches) + { + $db = Typecho_Db::get(); + $pattern = $matches[3]; + $links_num = $matches[1]; + $sort = $matches[2]; + return Links_Plugin::output_str($pattern, $links_num, $sort); + } + + public static function parse($text, $widget, $lastResult) + { + $text = empty($lastResult) ? $text : $lastResult; + + if ($widget instanceof Widget_Archive || $widget instanceof Widget_Abstract_Comments) { + return preg_replace_callback("/\s*(.*?)\s*<\/links>/is", array('Links_Plugin', 'parseCallback'), $text); + } else { + return $text; + } + } +} diff --git a/plugins/Links/SQLite.sql b/plugins/Links/SQLite.sql new file mode 100644 index 0000000..cbdfa64 --- /dev/null +++ b/plugins/Links/SQLite.sql @@ -0,0 +1,10 @@ +CREATE TABLE `typecho_links` ( + `lid` INTEGER NOT NULL PRIMARY KEY, + `name` varchar(200) default NULL, + `url` varchar(200) default NULL, + `sort` varchar(200) default NULL, + `image` varchar(200) default NULL, + `description` varchar(200) default NULL, + `user` varchar(200) default NULL, + `order` int(10) default '0' +); diff --git a/plugins/Links/Update_Mysql.sql b/plugins/Links/Update_Mysql.sql new file mode 100644 index 0000000..fe9452a --- /dev/null +++ b/plugins/Links/Update_Mysql.sql @@ -0,0 +1,4 @@ +ALTER TABLE `typecho_links` +ADD `sort` varchar( 200 ) default NULL COMMENT 'links分类' AFTER `url`, +ADD `image` varchar( 200 ) default NULL COMMENT 'links图片' AFTER `sort`, +ADD `user` varchar( 200 ) default NULL COMMENT '自定义' AFTER `description`; \ No newline at end of file diff --git a/plugins/Links/Update_SQLite.sql b/plugins/Links/Update_SQLite.sql new file mode 100644 index 0000000..6bced38 --- /dev/null +++ b/plugins/Links/Update_SQLite.sql @@ -0,0 +1,25 @@ +CREATE TABLE `typecho_links_upgrade` ( + `lid` INTEGER NOT NULL PRIMARY KEY, + `name` varchar(200) default NULL, + `url` varchar(200) default NULL, + `sort` varchar(200) default NULL, + `image` varchar(200) default NULL, + `description` varchar(200) default NULL, + `user` varchar(200) default NULL, + `order` int(10) default '0' +); +INSERT INTO `typecho_links_upgrade` (`lid`, `name`, `url`, `sort`, `image`, `description`, `user`, `order`) +SELECT `lid`, `name`, `url`, NULL, NULL, `description`, NULL, `order` FROM `typecho_links`; +DROP TABLE `typecho_links`; +CREATE TABLE `typecho_links` ( + `lid` INTEGER NOT NULL PRIMARY KEY, + `name` varchar(200) default NULL, + `url` varchar(200) default NULL, + `sort` varchar(200) default NULL, + `image` varchar(200) default NULL, + `description` varchar(200) default NULL, + `user` varchar(200) default NULL, + `order` int(10) default '0' +); +INSERT INTO `typecho_links` SELECT * FROM `typecho_links_upgrade`; +DROP TABLE `typecho_links_upgrade`; diff --git a/plugins/Links/manage-links.php b/plugins/Links/manage-links.php new file mode 100644 index 0000000..93c9b9f --- /dev/null +++ b/plugins/Links/manage-links.php @@ -0,0 +1,144 @@ + + + +
    +
    + +
    + + +
    + getPrefix(); + $links = $db->fetchAll($db->select()->from($prefix.'links')->order($prefix.'links.order', Typecho_Db::SORT_ASC)); + ?> +
    +
    +
    + +
    + + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + '.$link['name'].''; + } else { + $options = Typecho_Widget::widget('Widget_Options'); + $nopic_url = Typecho_Common::url('/usr/plugins/Links/nopic.jpg', $options->siteUrl); + echo 'NOPIC'; + } + ?>
    +
    +
    +
    +
    + render(); ?> +
    +
    +
    +
    + + + + + diff --git a/plugins/Links/nopic.jpg b/plugins/Links/nopic.jpg new file mode 100644 index 0000000..7a79748 Binary files /dev/null and b/plugins/Links/nopic.jpg differ diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..caba237 Binary files /dev/null and b/screenshot.png differ -- cgit v1.2.3