diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/Links/Action.php | 119 | ||||
| -rw-r--r-- | plugins/Links/Mysql.sql | 11 | ||||
| -rw-r--r-- | plugins/Links/Plugin.php | 343 | ||||
| -rw-r--r-- | plugins/Links/SQLite.sql | 10 | ||||
| -rw-r--r-- | plugins/Links/Update_Mysql.sql | 4 | ||||
| -rw-r--r-- | plugins/Links/Update_SQLite.sql | 25 | ||||
| -rw-r--r-- | plugins/Links/manage-links.php | 144 | ||||
| -rw-r--r-- | plugins/Links/nopic.jpg | bin | 0 -> 1258 bytes |
8 files changed, 656 insertions, 0 deletions
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 @@ +<?php +class Links_Action extends Typecho_Widget implements Widget_Interface_Do +{ + private $db; + private $options; + private $prefix; + + public function insertLink() + { + if (Links_Plugin::form('insert')->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('链接 <a href="%s">%s</a> 已经被增加', + $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('链接 <a href="%s">%s</a> 已经被增加', + $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('链接 <a href="%s">%s</a> 已经被更新', + $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 @@ +<?php
+/**
+ * 友情链接插件
+ *
+ * @package Links
+ * @author Hanny
+ * @version 1.1.1
+ * @dependence 14.10.10-*
+ * @link http://www.imhan.com
+ *
+ * 历史版本
+ * version 1.1.1 at 2014-12-14
+ * 修改支持Typecho 1.0
+ * 修正Typecho 1.0下不能删除的BUG
+ *
+ * version 1.1.0 at 2013-12-08
+ * 修改支持Typecho 0.9
+
+ * version 1.0.4 at 2010-06-30
+ * 修正数据表的前缀问题
+ * 在Pattern里加上所有的数据表字段
+
+ * version 1.0.3 at 2010-06-20
+ * 修改图片链接的支持方式。
+ * 增加链接分类功能
+ * 增加自定义字段,以便用户自定义扩展
+ * 增加多种链接输出方式。
+ * 增加较详细的帮助文档
+ * 增加在自定义页面引用标签,方便友情链接页面的引用
+ *
+ * version 1.0.2 at 2010-05-16
+ * 增加SQLite支持
+ *
+ * version 1.0.1 at 2009-12-27
+ * 增加显示链接描述
+ * 增加首页链接数量限制功能
+ * 增加图片链接功能
+
+ * version 1.0.0 at 2009-12-12
+ * 实现友情链接的基本功能
+ * 包括: 添加 删除 修改 排序
+ */
+class Links_Plugin implements Typecho_Plugin_Interface
+{
+ /**
+ * 激活插件方法,如果激活失败,直接抛出异常
+ *
+ * @access public
+ * @return void
+ * @throws Typecho_Plugin_Exception
+ */
+ public static function activate()
+ {
+ $info = Links_Plugin::linksInstall();
+ Helper::addPanel(3, 'Links/manage-links.php', '友情链接', '管理友情链接', 'administrator');
+ Helper::addAction('links-edit', 'Links_Action');
+ Typecho_Plugin::factory('Widget_Abstract_Contents')->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 = "<li><a href=\"{url}\" title=\"{title}\" target=\"_blank\">{name}</a></li>\n";
+ } else if ($pattern == "SHOW_IMG") {
+ $pattern = "<li><a href=\"{url}\" title=\"{title}\" target=\"_blank\"><img src=\"{image}\" alt=\"{name}\" /></a></li>\n";
+ } else if ($pattern == "SHOW_MIX") {
+ $pattern = "
+ <a href=\"{url}\" target=\"_blank\" title=\"{title}\" class=\"links-link\">
+ <div class=\"col-md-3 col-xs-6\">
+ <div class=\"links-item\">
+ <div class=\"links-img\" style=\"background:url('{image}');width: 100%;padding-top: 100%;background-repeat: no-repeat;background-size: cover;\"></div>
+ <div class=\"links-title\">
+ <h4>{name}</h4>
+ </div>
+ </div>
+ </div>
+ </a>";
+ }
+ $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("/<links\s*(\d*)\s*(\w*)>\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 @@ +<?php +include 'common.php'; +include 'header.php'; +include 'menu.php'; +?> + + +<div class="main"> + <div class="body container"> + <?php include 'page-title.php'; ?> + <div class="row typecho-page-main manage-metas"> + <div class="col-mb-12"> + <ul class="typecho-option-tabs clearfix"> + <li class="current"><a href="<?php $options->adminUrl('extending.php?panel=Links%2Fmanage-links.php'); ?>"><?php _e('友情链接'); ?></a></li> + <li><a href=<?php $options->index('/action/links-edit?do=addhanny'); ?> title="如果你喜欢,可以点击快速添加寒泥的博客。"><?php _e('添加寒泥'); ?></a></li> + <li><a href="http://www.imhan.com/archives/typecho-links/" title="查看友情链接使用帮助" target="_blank"><?php _e('帮助'); ?></a></li> + </ul> + </div> + + <div class="col-mb-12 col-tb-8" role="main"> + <?php + $prefix = $db->getPrefix(); + $links = $db->fetchAll($db->select()->from($prefix.'links')->order($prefix.'links.order', Typecho_Db::SORT_ASC)); + ?> + <form method="post" name="manage_categories" class="operate-form"> + <div class="typecho-list-operate clearfix"> + <div class="operate"> + <label><i class="sr-only"><?php _e('全选'); ?></i><input type="checkbox" class="typecho-table-select-all" /></label> + <div class="btn-group btn-drop"> + <button class="btn dropdown-toggle btn-s" type="button"><i class="sr-only"><?php _e('操作'); ?></i><?php _e('选中项'); ?> <i class="i-caret-down"></i></button> + <ul class="dropdown-menu"> + <li><a lang="<?php _e('你确认要删除这些链接吗?'); ?>" href="<?php $options->index('/action/links-edit?do=delete'); ?>"><?php _e('删除'); ?></a></li> + </ul> + </div> + </div> + </div> + + <div class="typecho-table-wrap"> + <table class="typecho-list-table"> + <colgroup> + <col width="20"/> + <col width="25%"/> + <col width=""/> + <col width="15%"/> + <col width="10%"/> + </colgroup> + <thead> + <tr> + <th> </th> + <th><?php _e('链接名称'); ?></th> + <th><?php _e('链接地址'); ?></th> + <th><?php _e('分类'); ?></th> + <th><?php _e('图片'); ?></th> + </tr> + </thead> + <tbody> + <?php if(!empty($links)): $alt = 0;?> + <?php foreach ($links as $link): ?> + <tr id="lid-<?php echo $link['lid']; ?>"> + <td><input type="checkbox" value="<?php echo $link['lid']; ?>" name="lid[]"/></td> + <td><a href="<?php echo $request->makeUriByRequest('lid=' . $link['lid']); ?>" title="点击编辑"><?php echo $link['name']; ?></a> + <td><?php echo $link['url']; ?></td> + <td><?php echo $link['sort']; ?></td> + <td><?php + if ($link['image']) { + echo '<a href="'.$link['image'].'" title="点击放大" target="_blank"><img class="avatar" src="'.$link['image'].'" alt="'.$link['name'].'" width="32" height="32"/></a>'; + } else { + $options = Typecho_Widget::widget('Widget_Options'); + $nopic_url = Typecho_Common::url('/usr/plugins/Links/nopic.jpg', $options->siteUrl); + echo '<img class="avatar" src="'.$nopic_url.'" alt="NOPIC" width="32" height="32"/>'; + } + ?></td> + </tr> + <?php endforeach; ?> + <?php else: ?> + <tr> + <td colspan="5"><h6 class="typecho-list-table-title"><?php _e('没有任何链接'); ?></h6></td> + </tr> + <?php endif; ?> + </tbody> + </table> + </div> + </form> + </div> + <div class="col-mb-12 col-tb-4" role="form"> + <?php Links_Plugin::form()->render(); ?> + </div> + </div> + </div> +</div> + +<?php +include 'copyright.php'; +include 'common-js.php'; +?> + +<script type="text/javascript"> +(function () { + $(document).ready(function () { + var table = $('.typecho-list-table').tableDnD({ + onDrop : function () { + var ids = []; + + $('input[type=checkbox]', table).each(function () { + ids.push($(this).val()); + }); + + $.post('<?php $options->index('/action/links-edit?do=sort'); ?>', + $.param({lid : ids})); + + $('tr', table).each(function (i) { + if (i % 2) { + $(this).addClass('even'); + } else { + $(this).removeClass('even'); + } + }); + } + }); + + table.tableSelectable({ + checkEl : 'input[type=checkbox]', + rowEl : 'tr', + selectAllEl : '.typecho-table-select-all', + actionEl : '.dropdown-menu a' + }); + + $('.btn-drop').dropdownMenu({ + btnEl : '.dropdown-toggle', + menuEl : '.dropdown-menu' + }); + + $('.dropdown-menu button.merge').click(function () { + var btn = $(this); + btn.parents('form').attr('action', btn.attr('rel')).submit(); + }); + + <?php if (isset($request->lid)): ?> + $('.typecho-mini-panel').effect('highlight', '#AACB36'); + <?php endif; ?> + }); +})(); +</script> +<?php include 'footer.php'; ?> diff --git a/plugins/Links/nopic.jpg b/plugins/Links/nopic.jpg Binary files differnew file mode 100644 index 0000000..7a79748 --- /dev/null +++ b/plugins/Links/nopic.jpg |
