| @@ -1,6 +1,6 @@ | |||||
| ## DedeV6 | ## DedeV6 | ||||
| 国内流行的内容管理系统(CMS)多端全媒体解决方案,DedeV6系统基于PHP7.X开发,同时兼容PHP8,具有很强的可扩展性,并且完全开放源代码DedeBIZ商业支持采用现流行的Go语言设计开发,让系统拥有简单易用、灵活扩展特性之外更安全、高效,模板设计制作简单一直是系统的一大特点,全新的版本延续了之前标签引擎,同时采用响应式模板引擎Bootstrap作为系统模板渲染引擎,让搭建跨终端(移动、PC)全媒体站点更简单。 | |||||
| DedeBIZ系统基于PHP7版本开发,具有很强的可扩展性,并且完全开放源代码。DedeBIZ支持采用现流行的Go语言设计开发,拥有简单易用、灵活扩展特性之外更安全、高效。模板设计制作简单,一直是系统一大特点,延续之前标签,同时采用响应式模板引擎Bootstrap作为系统模板渲染引擎,让搭建跨终端和移动端全媒体站点更简单。 | |||||
| ## 版本说明 | ## 版本说明 | ||||
| @@ -13,7 +13,7 @@ | |||||
| * | * | ||||
| * @access public | * @access public | ||||
| * @param string $selid 选择id | * @param string $selid 选择id | ||||
| * @param string $userCatalog 用户类目 | |||||
| * @param string $userCatalog 用户栏目 | |||||
| * @param string $channeltype 栏目类型 | * @param string $channeltype 栏目类型 | ||||
| * @return string | * @return string | ||||
| */ | */ | ||||
| @@ -167,15 +167,8 @@ else if ($action == 'exarea') { | |||||
| } | } | ||||
| /*-------------------- | /*-------------------- | ||||
| function __addenum_save() { } | function __addenum_save() { } | ||||
| 关于二级枚举的说明,为了节省查询速度,二级枚举是通过特殊算法生成的,原理为 | |||||
| 凡是能被 500 整除的都是一级枚举,(500 * n) + 1 < em < 500 * (n+1) 为下级枚举 | |||||
| 如:1000 的下级枚举对应的值为 1001,1002,10031499 | |||||
| 对于 issign=1 的,表示这个类别只有一级枚举,则不受上面的算法限制 | |||||
| ------------------------------------------------------------------------ | |||||
| 更新算法: | |||||
| 新增二级枚举下添加"-N"自己类别选择,例如: | |||||
| 1001二级枚举下面的3级类目,则为1001-1,1001-2 | |||||
| 这时候需要issign=2 | |||||
| 关于二级枚举:为了节省查询速度,二级枚举是通过特殊算法生成的,原理为凡是能被500整除的都是一级枚举(500 * n) + 1 < em < 500 * (n+1)为下级枚举,如:1000的下级枚举对应的值为 1001,1002,10031499对于issign=1的,表示这个类别只有一级枚举,则不受上面的算法限制 | |||||
| 更新算法:新增二级枚举下添加"-N"自己类别选择,例如:1001二级枚举下面的3级栏目,则为1001-1,1001-2这时候需要issign=2 | |||||
| ---------------------*/ | ---------------------*/ | ||||
| else if ($action == 'addenum_save') { | else if ($action == 'addenum_save') { | ||||
| if (empty($ename) || empty($egroup)) { | if (empty($ename) || empty($egroup)) { | ||||
| @@ -65,7 +65,7 @@ | |||||
| <td width="6%">id</td> | <td width="6%">id</td> | ||||
| <td width="30%">文档属性</td> | <td width="30%">文档属性</td> | ||||
| <td width="10%">时间</td> | <td width="10%">时间</td> | ||||
| <td width="14%">类目</td> | |||||
| <td width="14%">栏目</td> | |||||
| <td width="6%">点击</td> | <td width="6%">点击</td> | ||||
| <td width="6%">网页</td> | <td width="6%">网页</td> | ||||
| <td width="6%">权限</td> | <td width="6%">权限</td> | ||||
| @@ -72,7 +72,7 @@ | |||||
| <td width="6%">id</td> | <td width="6%">id</td> | ||||
| <td width="30%">文档标题</td> | <td width="30%">文档标题</td> | ||||
| <td width="10%">更新时间</td> | <td width="10%">更新时间</td> | ||||
| <td width="14%">类目</td> | |||||
| <td width="14%">栏目</td> | |||||
| <td width="6%">点击</td> | <td width="6%">点击</td> | ||||
| <td width="6%">网页</td> | <td width="6%">网页</td> | ||||
| <td width="6%">权限</td> | <td width="6%">权限</td> | ||||
| @@ -45,7 +45,7 @@ | |||||
| <td width="6%">id</td> | <td width="6%">id</td> | ||||
| <td width="30%">文档标题</td> | <td width="30%">文档标题</td> | ||||
| <td width="10%">更新时间</td> | <td width="10%">更新时间</td> | ||||
| <td width="14%">类目</td> | |||||
| <td width="14%">栏目</td> | |||||
| <td width="6%">点击</td> | <td width="6%">点击</td> | ||||
| <td width="6%">网页</td> | <td width="6%">网页</td> | ||||
| <td width="6%">权限</td> | <td width="6%">权限</td> | ||||
| @@ -73,7 +73,7 @@ | |||||
| <td width="6%">id</td> | <td width="6%">id</td> | ||||
| <td width="30%">文档标题</td> | <td width="30%">文档标题</td> | ||||
| <td width="10%">更新时间</td> | <td width="10%">更新时间</td> | ||||
| <td width="14%">类目</td> | |||||
| <td width="14%">栏目</td> | |||||
| <td width="6%">点击</td> | <td width="6%">点击</td> | ||||
| <td width="6%">网页</td> | <td width="6%">网页</td> | ||||
| <td width="6%">权限</td> | <td width="6%">权限</td> | ||||
| @@ -55,7 +55,7 @@ | |||||
| <td width="6%">id</td> | <td width="6%">id</td> | ||||
| <td width="30%">文档标题</td> | <td width="30%">文档标题</td> | ||||
| <td width="10%">更新时间</td> | <td width="10%">更新时间</td> | ||||
| <td width="14%">类目</td> | |||||
| <td width="14%">栏目</td> | |||||
| <td width="6%">点击</td> | <td width="6%">点击</td> | ||||
| <td width="6%">权限</td> | <td width="6%">权限</td> | ||||
| <td width="6%">发布人</td> | <td width="6%">发布人</td> | ||||
| @@ -123,38 +123,49 @@ | |||||
| <form name="feedback"> | <form name="feedback"> | ||||
| <table cellpadding="0" cellspacing="0" align="center" class="table maintable mb-3"> | <table cellpadding="0" cellspacing="0" align="center" class="table maintable mb-3"> | ||||
| <tr> | <tr> | ||||
| <td colspan="6" bgcolor="#f5f5f5">评论管理</td> | |||||
| <td colspan="8" bgcolor="#f5f5f5">评论管理</td> | |||||
| </tr> | </tr> | ||||
| {dede:datalist empty='<tr><td colspan="6" align="center">暂无文档</td></tr>'} | |||||
| <tr> | |||||
| <td width="6%">选择 <input type="checkbox" name="fid" id="fid" value="{dede:field.id/}"></td> | |||||
| <td width="10%">用户:{dede:field.username/} {dede:field.ischeck function="IsCheck(@me)"/}</td> | |||||
| <td width="30%"> | |||||
| <span>文档:<a href='feedback_main.php?aid={dede:field.aid/}'>{dede:field.arctitle function="RemoveXSS(@me)"/}</a></span> | |||||
| <span>评论:{dede:field.msg function='cn_substr(Text2Html(@me),280)'/}</span> | |||||
| <a href="archives_do.php?aid={dede:field.aid/}&dopost=viewArchives" target="_blank" class="btn btn-outline-success btn-sm">浏览</a> | |||||
| <tr bgcolor="#e9ecef" align="center"> | |||||
| <td width="6%">选择</td> | |||||
| <td width="10%">名称</td> | |||||
| <td width="20%">文档</td> | |||||
| <td width="20%">评论</td> | |||||
| <td width="10%">地址</td> | |||||
| <td width="10%">时间</td> | |||||
| <td width="10%">状态</td> | |||||
| <td>操作</td> | |||||
| </tr> | |||||
| {dede:datalist empty='<tr><td colspan="8" align="center">暂无文档</td></tr>'} | |||||
| <tr align="center"> | |||||
| <td><input type="checkbox" name="fid" id="fid" value="{dede:field.id/}"></td> | |||||
| <td align="left">{dede:field.username/}</td> | |||||
| <td align="left"><a href="feedback_main.php?aid={dede:field.aid/}">{dede:field.arctitle function="RemoveXSS(@me)"/}</a></td> | |||||
| <td align="left"> | |||||
| {dede:field.msg function='cn_substr(Text2Html(@me),280)'/} | |||||
| <?php if ($fields['replycount'] > 0) {?><a href='feedback_main.php?fid={dede:field.id/}'>{dede:field.replycount/}条回复</a><?php }?> | <?php if ($fields['replycount'] > 0) {?><a href='feedback_main.php?fid={dede:field.id/}'>{dede:field.replycount/}条回复</a><?php }?> | ||||
| </td> | </td> | ||||
| <td width="12%" align="center">地址:<a href='feedback_main.php?ip={dede:field.ip/}'>{dede:field.ip/}</a></td> | |||||
| <td width="12%">时间:{dede:field.dtime function="GetDateTimeMK(@me)"/}</td> | |||||
| <td align="center"> | |||||
| <a class="btn btn-success btn-sm" href='feedback_edit.php?id={dede:field.id/}'>修改评论</a> | |||||
| <a class="btn btn-success btn-sm" href='feedback_edit.php?id={dede:field.id/}&dopost=makehtml'>更新评论</a> | |||||
| <td><a href='feedback_main.php?ip={dede:field.ip/}'>{dede:field.ip/}</a></td> | |||||
| <td>{dede:field.dtime function="GetDateTimeMK(@me)"/}</td> | |||||
| <td>{dede:field.ischeck function="IsCheck(@me)"/}</td> | |||||
| <td align="left"> | |||||
| <a href="feedback_edit.php?id={dede:field.id/}" class="btn btn-success btn-sm">修改</a> | |||||
| <a href="feedback_edit.php?id={dede:field.id/}&dopost=makehtml" class="btn btn-success btn-sm">更新</a> | |||||
| <a href="archives_do.php?aid={dede:field.aid/}&dopost=viewArchives" target="_blank" class="btn btn-success btn-sm">浏览</a> | |||||
| </td> | </td> | ||||
| </tr> | </tr> | ||||
| {/dede:datalist} | {/dede:datalist} | ||||
| <tr> | <tr> | ||||
| <td colspan="6"> | |||||
| <td colspan="8"> | |||||
| <button type="button" name="kk1" onClick="selAll()" class="btn btn-success btn-sm">全选</button> | <button type="button" name="kk1" onClick="selAll()" class="btn btn-success btn-sm">全选</button> | ||||
| <button type="button" name="kk2" onClick="selNone()" class="btn btn-success btn-sm">取消</button> | <button type="button" name="kk2" onClick="selNone()" class="btn btn-success btn-sm">取消</button> | ||||
| <button type="button" name="kk3" onClick="selNor()" class="btn btn-success btn-sm">反选</button> | <button type="button" name="kk3" onClick="selNor()" class="btn btn-success btn-sm">反选</button> | ||||
| <button type="button" name="db" onClick="delFeedbackIP()" class="btn btn-danger btn-sm">删除所有相同地址评论</button> | |||||
| <button type="button" name="db" onClick="delFeedback()" class="btn btn-danger btn-sm">删除评论</button> | |||||
| <button type="button" name="db2" onClick="checkFeedback()" class="btn btn-success btn-sm">审核评论</button> | <button type="button" name="db2" onClick="checkFeedback()" class="btn btn-success btn-sm">审核评论</button> | ||||
| <button type="button" name="db" onClick="delFeedback()" class="btn btn-danger btn-sm">删除评论</button> | |||||
| <button type="button" name="db" onClick="delFeedbackIP()" class="btn btn-danger btn-sm">删除所有相同地址评论</button> | |||||
| </td> | </td> | ||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td colspan="6" bgcolor="#f5f5f5" align="center">{dede:pagelist listsize='6'/}</td> | |||||
| <td colspan="8" bgcolor="#f5f5f5" align="center">{dede:pagelist listsize='6'/}</td> | |||||
| </tr> | </tr> | ||||
| </table> | </table> | ||||
| </form> | </form> | ||||
| @@ -77,7 +77,7 @@ | |||||
| <td width="6%">选择</td> | <td width="6%">选择</td> | ||||
| <td width="28%">文档标题</td> | <td width="28%">文档标题</td> | ||||
| <td width="10%">更新时间</td> | <td width="10%">更新时间</td> | ||||
| <td width="10%">类目</td> | |||||
| <td width="10%">栏目</td> | |||||
| <td width="6%">点击</td> | <td width="6%">点击</td> | ||||
| <td>操作</td> | <td>操作</td> | ||||
| </tr> | </tr> | ||||
| @@ -35,7 +35,7 @@ | |||||
| <td width="30%" align="center">名称</td> | <td width="30%" align="center">名称</td> | ||||
| <td width="8%" align="center">等级</td> | <td width="8%" align="center">等级</td> | ||||
| <td width="14%" align="center">地址时间</td> | <td width="14%" align="center">地址时间</td> | ||||
| <td width="14%" align="center">类目</td> | |||||
| <td width="14%" align="center">栏目</td> | |||||
| <td align="center">操作</td> | <td align="center">操作</td> | ||||
| </tr> | </tr> | ||||
| {dede:datalist empty='<tr><td colspan="6" align="center">暂无文档</td></tr>'} | {dede:datalist empty='<tr><td colspan="6" align="center">暂无文档</td></tr>'} | ||||
| @@ -261,7 +261,7 @@ class ListView | |||||
| } | } | ||||
| //创建封面模板文件 | //创建封面模板文件 | ||||
| if ($this->TypeLink->TypeInfos['isdefault'] == -1) { | if ($this->TypeLink->TypeInfos['isdefault'] == -1) { | ||||
| echo '这个类目是动态类目'; | |||||
| echo '这个栏目是动态栏目'; | |||||
| return '../apps/list.php?tid='.$this->TypeLink->TypeInfos['id']; | return '../apps/list.php?tid='.$this->TypeLink->TypeInfos['id']; | ||||
| } | } | ||||
| //单独页面 | //单独页面 | ||||
| @@ -220,7 +220,7 @@ class SgListView | |||||
| } | } | ||||
| //创建封面模板文件 | //创建封面模板文件 | ||||
| if ($this->TypeLink->TypeInfos['isdefault'] == -1) { | if ($this->TypeLink->TypeInfos['isdefault'] == -1) { | ||||
| echo '这个类目是动态类目'; | |||||
| echo '这个栏目是动态栏目'; | |||||
| return ''; | return ''; | ||||
| } | } | ||||
| //单独页面 | //单独页面 | ||||
| @@ -141,7 +141,7 @@ function GetEnumsJs($egroup) | |||||
| $jsCode = ""; | $jsCode = ""; | ||||
| $jsCode .= "em_{$egroup}s=new Array();\r\n"; | $jsCode .= "em_{$egroup}s=new Array();\r\n"; | ||||
| foreach (${'em_'.$egroup.'s'} as $k => $v) { | foreach (${'em_'.$egroup.'s'} as $k => $v) { | ||||
| //js中3级类目存放到第二个key中去 | |||||
| //js中3级栏目存放到第二个key中去 | |||||
| if (preg_match("#([0-9]{1,})\.([0-9]{1,})#", $k, $matchs)) { | if (preg_match("#([0-9]{1,})\.([0-9]{1,})#", $k, $matchs)) { | ||||
| $valKey = $matchs[1] + $matchs[2] / 1000; | $valKey = $matchs[1] + $matchs[2] / 1000; | ||||
| $jsCode .= "em_{$egroup}s[{$valKey}]='$v';\r\n"; | $jsCode .= "em_{$egroup}s[{$valKey}]='$v';\r\n"; | ||||
| @@ -184,7 +184,7 @@ if (!function_exists('GetFileName')) { | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * 获得指定类目的URL链接 | |||||
| * 获得指定栏目的URL链接 | |||||
| * 对于使用封面文件和单独页面的情况,强制使用默认页名称 | * 对于使用封面文件和单独页面的情况,强制使用默认页名称 | ||||
| * | * | ||||
| * @param int $typeid 栏目id | * @param int $typeid 栏目id | ||||
| @@ -259,7 +259,7 @@ if (!function_exists('MagicVar')) { | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * 获取某个类目的所有上级栏目id | |||||
| * 获取某个栏目的所有上级栏目id | |||||
| * | * | ||||
| * @param int $tid 栏目id | * @param int $tid 栏目id | ||||
| * @return string | * @return string | ||||
| @@ -309,7 +309,7 @@ if (!function_exists('IsParent')) { | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * 获取一个类目的顶级栏目id | |||||
| * 获取一个栏目的顶级栏目id | |||||
| * | * | ||||
| * @param string $tid 栏目id | * @param string $tid 栏目id | ||||
| * @return string | * @return string | ||||
| @@ -16,10 +16,9 @@ if (!defined('DEDEINC')) exit('dedebiz'); | |||||
| * @param string $uploadname 上传名称 | * @param string $uploadname 上传名称 | ||||
| * @param string $ftype 文件类型 | * @param string $ftype 文件类型 | ||||
| * @param string $rnddd 后缀数字 | * @param string $rnddd 后缀数字 | ||||
| * @param bool $watermark 是否水印 | |||||
| * @param string $filetype image、media、addon | |||||
| * $file_type='' 对于swfupload上传的文件,因为没有filetype,所以需指定,并且有些特殊之处不同 | |||||
| * @return int -1 没选定上传文件,0 文件类型不允许, -2 保存失败,其它:返回上传后的文件名 | |||||
| * @param bool $watermark 是否水印 | |||||
| * @param string $filetype image、media、addon $file_type='' 对于swfupload上传的文件,因为没有filetype,所以需指定,并且有些特殊之处不同 | |||||
| * @return int -1没选定上传文件,0文件类型不允许, -2保存失败 | |||||
| */ | */ | ||||
| if (!function_exists('AdminUpload')) { | if (!function_exists('AdminUpload')) { | ||||
| function AdminUpload($uploadname, $ftype = 'image', $rnddd = 0, $watermark = TRUE, $filetype = '') | function AdminUpload($uploadname, $ftype = 'image', $rnddd = 0, $watermark = TRUE, $filetype = '') | ||||
| @@ -45,7 +45,7 @@ class TypeLink | |||||
| $this->valuePositionName = ''; | $this->valuePositionName = ''; | ||||
| $this->typeDir = ''; | $this->typeDir = ''; | ||||
| $this->OptionArrayList = ''; | $this->OptionArrayList = ''; | ||||
| //载入类目信息 | |||||
| //载入栏目信息 | |||||
| $query = "SELECT tp.*,ch.typename as ctypename,ch.addtable,ch.issystem FROM `#@__arctype` tp LEFT JOIN `#@__channeltype` ch on ch.id=tp.channeltype WHERE tp.id='$typeid' "; | $query = "SELECT tp.*,ch.typename as ctypename,ch.addtable,ch.issystem FROM `#@__arctype` tp LEFT JOIN `#@__channeltype` ch on ch.id=tp.channeltype WHERE tp.id='$typeid' "; | ||||
| if ($typeid > 0) { | if ($typeid > 0) { | ||||
| $this->TypeInfos = $this->dsql->GetOne($query); | $this->TypeInfos = $this->dsql->GetOne($query); | ||||
| @@ -74,12 +74,12 @@ class TypeLink | |||||
| $this->valuePositionName = ""; | $this->valuePositionName = ""; | ||||
| $this->typeDir = ""; | $this->typeDir = ""; | ||||
| $this->OptionArrayList = ""; | $this->OptionArrayList = ""; | ||||
| //载入类目信息 | |||||
| //载入栏目信息 | |||||
| $query = "SELECT `#@__arctype`.*,`#@__channeltype`.typename as ctypename FROM `#@__arctype` LEFT JOIN `#@__channeltype` on `#@__channeltype`.id=`#@__arctype`.channeltype WHERE `#@__arctype`.id='$typeid'"; | $query = "SELECT `#@__arctype`.*,`#@__channeltype`.typename as ctypename FROM `#@__arctype` LEFT JOIN `#@__channeltype` on `#@__channeltype`.id=`#@__arctype`.channeltype WHERE `#@__arctype`.id='$typeid'"; | ||||
| $this->dsql->SetQuery($query); | $this->dsql->SetQuery($query); | ||||
| $this->TypeInfos = $this->dsql->GetOne(); | $this->TypeInfos = $this->dsql->GetOne(); | ||||
| } | } | ||||
| //获得这个类目的路径 | |||||
| //获得这个栏目的路径 | |||||
| function GetTypeDir() | function GetTypeDir() | ||||
| { | { | ||||
| if (empty($this->TypeInfos['typedir'])) { | if (empty($this->TypeInfos['typedir'])) { | ||||
| @@ -88,7 +88,7 @@ class TypeLink | |||||
| return $this->TypeInfos['typedir']; | return $this->TypeInfos['typedir']; | ||||
| } | } | ||||
| } | } | ||||
| //获得某类目的链接列表 如:类目一>>类目二>> 这样的形式 | |||||
| //获得某栏目的链接列表 如:栏目一>>栏目二>> 这样的形式 | |||||
| //islink 表示返回的列表是否带连接 | //islink 表示返回的列表是否带连接 | ||||
| function GetPositionLink($islink = true) | function GetPositionLink($islink = true) | ||||
| { | { | ||||
| @@ -127,7 +127,7 @@ class TypeLink | |||||
| { | { | ||||
| return $this->GetPositionLink(false); | return $this->GetPositionLink(false); | ||||
| } | } | ||||
| //获得某类目的链接列表,递归逻辑部分 | |||||
| //获得某栏目的链接列表,递归逻辑部分 | |||||
| function LogicGetPosition($id, $islink) | function LogicGetPosition($id, $islink) | ||||
| { | { | ||||
| $this->dsql->SetQuery("SELECT id,reid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `#@__arctype` WHERE id='".$id."'"); | $this->dsql->SetQuery("SELECT id,reid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `#@__arctype` WHERE id='".$id."'"); | ||||
| @@ -143,7 +143,7 @@ class TypeLink | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| } | } | ||||
| //获得某个类目的超链接信息 | |||||
| //获得某个栏目的超链接信息 | |||||
| function GetOneTypeLink($typeinfos) | function GetOneTypeLink($typeinfos) | ||||
| { | { | ||||
| $typepage = $this->GetOneTypeUrl($typeinfos); | $typepage = $this->GetOneTypeUrl($typeinfos); | ||||
| @@ -166,9 +166,9 @@ class TypeLink | |||||
| ); | ); | ||||
| } | } | ||||
| //获得类别列表 | //获得类别列表 | ||||
| //hid是指默认选中类目,0表示“请选择类目”或“不限类目” | |||||
| //oper是用户允许管理的类目,0表示所有类目 | |||||
| //channeltype是指类目的文档类型,0表示不限栏目 | |||||
| //hid是指默认选中栏目,0表示“请选择栏目”或“不限栏目” | |||||
| //oper是用户允许管理的栏目,0表示所有栏目 | |||||
| //channeltype是指栏目的文档类型,0表示不限栏目 | |||||
| function GetOptionArray($hid = 0, $oper = 0, $channeltype = 0, $usersg = 0) | function GetOptionArray($hid = 0, $oper = 0, $channeltype = 0, $usersg = 0) | ||||
| { | { | ||||
| return $this->GetOptionList($hid, $oper, $channeltype, $usersg); | return $this->GetOptionList($hid, $oper, $channeltype, $usersg); | ||||
| @@ -254,7 +254,7 @@ class TypeLink | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * 获得与该类相关的类目,本函数应用于模板标记{dede:channel}{/dede:channel}中 | |||||
| * 获得与该类相关的栏目,本函数应用于模板标记{dede:channel}{/dede:channel}中 | |||||
| * $typetype 的值为:sun下级分类 self同级分类 top顶级分类 | * $typetype 的值为:sun下级分类 self同级分类 top顶级分类 | ||||
| * | * | ||||
| * @access public | * @access public | ||||
| @@ -72,7 +72,7 @@ class TypeUnit | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * 读出所有分类,在类目管理页(list_type)中使用 | |||||
| * 读出所有分类,在栏目管理页list_type中使用 | |||||
| * | * | ||||
| * @access public | * @access public | ||||
| * @param int $channel 栏目id | * @param int $channel 栏目id | ||||
| @@ -162,7 +162,7 @@ class TypeUnit | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * 获得子类目的递归调用 | |||||
| * 获得子栏目的递归调用 | |||||
| * | * | ||||
| * @access public | * @access public | ||||
| * @param int $id 栏目id | * @param int $id 栏目id | ||||
| @@ -243,7 +243,7 @@ class TypeUnit | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回与某个目相关的下级目录的栏目id列表删除类目或文档时调用 | |||||
| * 返回与某个目相关的下级目录的栏目id列表删除栏目或文档时调用 | |||||
| * | * | ||||
| * @access public | * @access public | ||||
| * @param int $id 栏目id | * @param int $id 栏目id | ||||
| @@ -270,7 +270,7 @@ class TypeUnit | |||||
| return $this->idArray; | return $this->idArray; | ||||
| } | } | ||||
| /** | /** | ||||
| * 删除类目 | |||||
| * 删除栏目 | |||||
| * | * | ||||
| * @access public | * @access public | ||||
| * @param int $id 栏目id | * @param int $id 栏目id | ||||
| @@ -54,7 +54,7 @@ class TypeUnit | |||||
| { | { | ||||
| } | } | ||||
| /** | /** | ||||
| * 读出所有分类,在类目管理页(list_type)中使用 | |||||
| * 读出所有分类,在栏目管理页list_type中使用 | |||||
| * | * | ||||
| * @access public | * @access public | ||||
| * @param int $channel 栏目id | * @param int $channel 栏目id | ||||
| @@ -116,7 +116,7 @@ class TypeUnit | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * 获得子类目的递归调用 | |||||
| * 获得子栏目的递归调用 | |||||
| * | * | ||||
| * @access public | * @access public | ||||
| * @param int $id 栏目id | * @param int $id 栏目id | ||||
| @@ -90,7 +90,7 @@ class TypeUnitSelector | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * 获得子类目的递归调用 | |||||
| * 获得子栏目的递归调用 | |||||
| * | * | ||||
| * @access public | * @access public | ||||
| * @param int $id 栏目id | * @param int $id 栏目id | ||||
| @@ -1,8 +1,9 @@ | |||||
| {dede:comment text='文档评论模块'/} | {dede:comment text='文档评论模块'/} | ||||
| <style>.feedbacks .face{width:40px;height:40px;border-radius:50%;border:solid 1px #ccc}.feedbacks .media{border-bottom:solid 1px #ccc;padding-top:10px}.feedbacks .feedback_replies .media{border-top:solid 1px #ccc;border-bottom:0}.feedbacks .media-body{padding:0 1rem 1rem 1rem}.feedbacks .media-body small{color:#999}.feedbacks .feedback-action{float:right}.feedbacks ._feedback_reply .alert{margin-bottom:0}@media only screen and (max-width:576px){.feedbacks .feedback-action{float:none}}</style> | |||||
| <div class="comment py-3"> | <div class="comment py-3"> | ||||
| <h4>发表评论</h4> | <h4>发表评论</h4> | ||||
| <div id="feedback-alert"></div> | <div id="feedback-alert"></div> | ||||
| <div class="content mb-3"><textarea cols="60" id="iptMsg" name="msg" rows="5" class="form-control" placeholder="说点什吗吧"></textarea></div> | |||||
| <div class="content mb-3"><textarea cols="60" id="iptMsg" name="msg" rows="5" class="form-control" placeholder="请输入..."></textarea></div> | |||||
| <div class="post mb-3"> | <div class="post mb-3"> | ||||
| <div class="dcmp-userinfo" id="_ajax_feedback"> | <div class="dcmp-userinfo" id="_ajax_feedback"> | ||||
| <div class="form-group form-row"> | <div class="form-group form-row"> | ||||
| @@ -25,9 +26,7 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div class="dcmp-submit"> | |||||
| <button class="btn btn-success" type="button" onClick='SendFeedback()'>发表评论</button> | |||||
| </div> | |||||
| <div class="dcmp-submit"><button class="btn btn-success" type="button" onClick='SendFeedback()'>发表评论</button></div> | |||||
| </div> | </div> | ||||
| <div class="feedbacks"> | <div class="feedbacks"> | ||||
| {dede:feedback} | {dede:feedback} | ||||
| @@ -39,18 +38,18 @@ | |||||
| <span class="feedback-basic"> | <span class="feedback-basic"> | ||||
| [field:username function="(@me=='guest' ? '游客' : @me)"/] | [field:username function="(@me=='guest' ? '游客' : @me)"/] | ||||
| <small>[field:dtime function="MyDate('Y-m-d',@me)"/]</small> | <small>[field:dtime function="MyDate('Y-m-d',@me)"/]</small> | ||||
| <a href="javascript:ReplyFeedback([field:id/])">[回复]</a> <a href="javascript:LoadReplyFeedbacks([field:id/])">[field:replycount/]条回复</a> | |||||
| <a href="javascript:LoadReplyFeedbacks([field:id/])">[field:replycount/]条回复</a> | |||||
| <a href="javascript:ReplyFeedback([field:id/])" class="btn btn-success btn-sm">回复</a> | |||||
| </span> | </span> | ||||
| <div class="feedback-action"><a href="javascript:GoodFeedback([field:id/], [field:good/])"><span id="feedbackGood[field:id/]">[field:good/]</span><i class="fa fa-thumbs-up ml-1"></i></a></div> | <div class="feedback-action"><a href="javascript:GoodFeedback([field:id/], [field:good/])"><span id="feedbackGood[field:id/]">[field:good/]</span><i class="fa fa-thumbs-up ml-1"></i></a></div> | ||||
| </div> | </div> | ||||
| <div class="_feedback_reply mt-2" for="[field:id/]"></div> | |||||
| <div class="_feedback_reply my-2" for="[field:id/]"></div> | |||||
| <div class="feedback_replies" for="[field:id/]"></div> | <div class="feedback_replies" for="[field:id/]"></div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| {/dede:feedback} | {/dede:feedback} | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <style>.feedbacks .face{width:36px;height:36px;border-radius:50%;border:solid 1px #DDD}.feedbacks .media{border-bottom:solid 1px #DDD;padding-top:10px}.feedbacks .feedback_replies .media{border-top:solid 1px #DDD;border-bottom:0}.feedbacks .media-body{padding:0 1rem 1rem 1rem}.feedbacks .media-body small{color:#999}.feedbacks .feedback-action{float:right}.feedbacks .feedback-basic a,.feedbacks .feedback-action a{color:#F1813F;font-size:14px}.feedbacks ._feedback_reply .alert{margin-bottom:0}@media only screen and (max-width:576px){.feedbacks .feedback-action{float:none}}</style> | |||||
| <script async> | <script async> | ||||
| //发表评论 | //发表评论 | ||||
| function SendFeedback() { | function SendFeedback() { | ||||
| @@ -99,10 +98,10 @@ | |||||
| } | } | ||||
| //回复某个评论 | //回复某个评论 | ||||
| function ReplyFeedback(fid) { | function ReplyFeedback(fid) { | ||||
| let replyPannel = `<div class="form-group mt-2"> | |||||
| let replyPannel = `<div class="form-group my-2"> | |||||
| <div class="input-group"> | <div class="input-group"> | ||||
| <input type="text" class="form-control iptReplyContent"> | <input type="text" class="form-control iptReplyContent"> | ||||
| <button class="btn btn-success btnSend" type="button" onClick='SendReplyFeedback(${fid})'>回复</button> | |||||
| <button type="button" class="btn btn-success btnSend ml-2" onClick='SendReplyFeedback(${fid})'>评论</button> | |||||
| </div> | </div> | ||||
| </div>`; | </div>`; | ||||
| $.get("{dede:global.cfg_cmsurl/}/user/api.php?format=json", function(data) { | $.get("{dede:global.cfg_cmsurl/}/user/api.php?format=json", function(data) { | ||||
| @@ -110,7 +109,7 @@ | |||||
| if (result.code !== 200) { | if (result.code !== 200) { | ||||
| $(`._feedback_reply`).html(""); | $(`._feedback_reply`).html(""); | ||||
| ShowAlert(`._feedback_reply[for="${fid}"]`, | ShowAlert(`._feedback_reply[for="${fid}"]`, | ||||
| '回复需要登录会员中心,您可以<a href="{dede:global.cfg_cmsurl/}/user/login.php">[点击登录]</a>后再来回复', 'warning', 5000); | |||||
| '回复需要登录会员中心,您可以<a href="{dede:global.cfg_cmsurl/}/user/login.php">点击登录</a>后再来回复', 'warning', 5000); | |||||
| } else { | } else { | ||||
| $(`._feedback_reply`).html(""); | $(`._feedback_reply`).html(""); | ||||
| $(`._feedback_reply[for="${fid}"]`).html(replyPannel); | $(`._feedback_reply[for="${fid}"]`).html(replyPannel); | ||||
| @@ -1,21 +0,0 @@ | |||||
| <?php | |||||
| /** | |||||
| * @version $id:ajax_feedback.php 8:38 2010年7月9日 tianya $ | |||||
| * @package DedeBIZ.User | |||||
| * @copyright Copyright (c) 2022 DedeBIZ.COM | |||||
| * @license https://www.dedebiz.com/license | |||||
| * @link https://www.dedebiz.com | |||||
| */ | |||||
| require_once(dirname(__FILE__).'/config.php'); | |||||
| AjaxHead(); | |||||
| if ($myurl == '') exit(''); | |||||
| else { | |||||
| $uid = $cfg_ml->M_LoginID; | |||||
| $face = $cfg_ml->fields['face'] == '' ? $GLOBALS['cfg_memberurl'].'/images/nopic.gif' : $cfg_ml->fields['face']; | |||||
| echo "用户名:{$cfg_ml->M_UserName} <input name='notuser' type='checkbox' id='notuser' value='1'> 匿名评论\r\n"; | |||||
| if ($cfg_feedback_ck == 'Y') { | |||||
| echo "验证码:<input name='validate' type='text' id='validate' size='10' class='form-control text-uppercase'>"; | |||||
| echo "<img src='{$cfg_cmsurl}/apps/vdimgck.php' id='validateimg' onclick='this.src=this.src+'?'' alt='验证码' title='验证码' />\r\n"; | |||||
| } | |||||
| } | |||||
| ?> | |||||
| @@ -11,7 +11,6 @@ $cfg_NotPrintHead = 'Y'; | |||||
| require_once(dirname(__FILE__)."/config.php"); | require_once(dirname(__FILE__)."/config.php"); | ||||
| AjaxHead(); | AjaxHead(); | ||||
| $action = isset($action)? $action : ''; | $action = isset($action)? $action : ''; | ||||
| if ($action === 'is_need_check_code') { | if ($action === 'is_need_check_code') { | ||||
| $isNeed = $cfg_ml->isNeedCheckCode($userid); | $isNeed = $cfg_ml->isNeedCheckCode($userid); | ||||
| echo json_encode(array( | echo json_encode(array( | ||||
| @@ -28,7 +27,7 @@ if ($action === 'is_need_check_code') { | |||||
| if ($format === 'json') { | if ($format === 'json') { | ||||
| echo json_encode(array( | echo json_encode(array( | ||||
| "code" => -1, | "code" => -1, | ||||
| "msg" => "尚未登录", | |||||
| "msg" => "未登录", | |||||
| "data" => null, | "data" => null, | ||||
| )); | )); | ||||
| } else { | } else { | ||||
| @@ -52,18 +51,5 @@ if ($action === 'is_need_check_code') { | |||||
| )); | )); | ||||
| exit; | exit; | ||||
| } | } | ||||
| ?> | |||||
| <div class="userinfo"> | |||||
| <div class="welcome">您好:<?php echo $cfg_ml->M_UserName;?>,欢迎登录 </div> | |||||
| <div class="userface"> | |||||
| <a href="<?php echo $cfg_memberurl;?>/index.php"><img src="<?php echo $facepic;?>" width="52" height="52" /></a> | |||||
| </div> | |||||
| <div class="uclink"> | |||||
| <a href="<?php echo $cfg_memberurl;?>/index.php">会员中心</a> | | |||||
| <a href="<?php echo $cfg_memberurl;?>/edit_baseinfo.php">资料</a> | | |||||
| <a href="<?php echo $cfg_memberurl;?>/index_do.php?fmdo=login&dopost=exit">退出登录</a> | |||||
| </div> | |||||
| </div> | |||||
| <?php | |||||
| } | } | ||||
| ?> | ?> | ||||