phpcms v9后台添加草稿箱功能

一、后台添加文章模板phpcms/modules/content/templates/content_add.tpl.php中94行增加”保存草稿“按钮:

<div class="button"><input value="<?php echo L('save_draft');?>" type="submit" name="dosubmit_draft" class="cu" style="width:100px;" onclick="refersh_window()"></div>

二、后台添加文章控制器phpcms/modules/content/content.php文件add操作方法中

$this->db->add_content($_POST['info']);代码上方改成:

if(isset($_POST['dosubmit_draft'])) {
					$_POST['info']['status'] = -2;
				}else{
					if($workflowid) {
						//如果用户是超级管理员,那么则根据自己的设置来发布
						$_POST['info']['status'] = $_SESSION['roleid']==1 ? intval($_POST['status']) : 1;
					} else {
						$_POST['info']['status'] = 99;
					}
				}

$this->db->add_content($_POST['info']);代码下方改成:

if(isset($_POST['dosubmit']) || isset($_POST['dosubmit_draft'])) {
					showmessage(L('add_success').L('2s_close'),'blank','','','function set_time() {$("#secondid").html(1);}setTimeout("set_time()", 500);setTimeout("window.close()", 1200);');
				} else {
					showmessage(L('add_success'),HTTP_REFERER);
				}

三、后台添加文章控制器phpcms/modules/content/content.php文件edit操作方法中

param::set_cookie('module', 'content');代码下方改成:

if(isset($_POST['dosubmit']) || isset($_POST['dosubmit_continue']) || isset($_POST['dosubmit_draft'])) {

$workflowid = $setting['workflowid'];代码下方改成:

if((isset($_POST['dosubmit']) || isset($_POST['dosubmit_continue'])) && ($_POST['info']['status']==-2)) {
					if($workflowid) {
						//如果用户是超级管理员,那么则根据自己的设置来发布
						$_POST['info']['status'] = $_SESSION['roleid']==1 ? 99 : 1;
					} else {
						$_POST['info']['status'] = 99;
					}
				}

$this->db->edit_content($_POST['info'],$id);代码下方改成:

if(isset($_POST['dosubmit']) || isset($_POST['dosubmit_draft'])) {

四、后台添加文章控制器phpcms/modules/content/content.php文件public_preview操作方法中

$steps = intval($_GET['steps']);代码下方改成:

$supermenu = ($_SESSION['roleid']==1 && $steps<>-2) ? "<a href=\'javascript:ajax_manage(1)\'>".L('passed_checked')."</a> | <a href=\'javascript:ajax_manage(2)\'>".L('reject')."</a> | <a href=\'javascript:ajax_manage(3)\'>".L('delete')."</a>" : "<a href=\'javascript:ajax_manage(3)\'>".L('delete')."</a>";

五、后台添加文章控制器phpcms/modules/content/content.php文件中添加“草稿箱”操作方法

/**
	 * 草稿箱
	 */
	public function draft_list() {
		$page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1;

		$show_header = '';
		$admin_username = param::get_cookie('admin_username');
		$datas = array();
		$pagesize = 20;
		$sql = '';
		$status = -2;
		$sql = "`status` = '$status' AND `siteid`=$this->siteid";
		if($_SESSION['roleid']!=1){
			$sql .= " AND `username` = '$admin_username'";//WY ADD AT 2023 除超级管理员外,只显示自己发布的文章
		}
		$this->content_check_db = pc_base::load_model('content_check_model');
		$datas = $this->content_check_db->listinfo($sql,'inputtime DESC',$page);
		$pages = $this->content_check_db->pages;
		include $this->admin_tpl('draft_list');
	}

六、添加“草稿箱”控制器对应的模板文件,phpcms/modules/content/templates/draft_list.tpl.php

<?php
defined('IN_ADMIN') or exit('No permission resources.');
include $this->admin_tpl('header','admin');?>
<div class="pad-10">
<div class="content-menu ib-a blue line-x">
<a href='?m=content&c=content&a=draft_list' class="on"><em><?php echo L('all_draft_list');?></em></a>
</div>
<form name="myform" id="myform" action="" method="post" >
<div class="table-list">
    <table width="100%">
        <thead>
            <tr>
            <th width="60">ID</th>
            <th><?php echo L('title');?></th>
            <th width="90"><?php echo L('belong_category');?></th>
            <th width="118"><?php echo L('contribute_time');?></th>
            <th width="180"><?php echo L('username');?></th>
            <th width="72"><?php echo L('operations_manage');?></th>
            </tr>
        </thead>
<tbody>
    <?php
    $model_cache = getcache('model','commons');
    foreach ($datas as $r) {
        $arr_checkid = explode('-',$r['checkid']);
    ?>
        <tr>
        <td align='center' ><?php echo $arr_checkid[1];?></td>
        <td align='center' ><a href="javascript:;" onclick='change_color(this);window.open("?m=content&c=content&a=public_preview&steps=<?php echo $r['status']?>&catid=<?php echo $r['catid'];?>&id=<?php echo $arr_checkid[1];?>&pc_hash=<?php echo $_SESSION['pc_hash'];?>","manage")'><?php echo $r['title'];?></a></td>
        <td align='center' ><a href="?m=content&c=content&a=init&menuid=822&catid=<?php echo $r['catid'];?>"><?php echo $this->categorys[$r['catid']]['catname'];?></a></td>
        <td align='center' ><?php echo format::date($r['inputtime'],1);?></td>
        <td align='center'><?php echo $r['username'];?></td>
        <td align='center' ><a href="javascript:;" onclick="javascript:openwinx('?m=content&c=content&a=edit&catid=<?php echo $r['catid'];?>&id=<?php echo $arr_checkid[1];?>','')"><?php echo L('edit');?></a> | <a href="javascript:;" onclick='change_color(this);window.open("?m=content&c=content&a=public_preview&steps=<?php echo $r['status']?>&catid=<?php echo $r['catid'];?>&id=<?php echo $arr_checkid[1];?>&pc_hash=<?php echo $_SESSION['pc_hash'];?>","manage")'><?php echo "查看";?></a></td>
    </tr>
     <?php }?>
</tbody>
     </table>
 <div id="pages"><?php echo $pages?></div>
</div>
</form>
</div>
<script language="javascript" type="text/javascript" src="<?php echo JS_PATH?>cookie.js"></script>
<script type="text/javascript">
<!--
window.top.$("#current_pos_attr").html('<?php echo L('checkall_content');?>');
function change_color(obj) {
    $(obj).css('color','red');
}
setcookie('refersh_time', 0);
function refersh_window() {
    var refersh_time = getcookie('refersh_time');
    if(refersh_time==1) {
        window.location.reload();
    }
}
setInterval("refersh_window()", 3000);
//-->
</script>
</body>
</html>

七、数据表v9_news和v9_content_check表中字段status的属性改为空(如果有其它模型,对应的表该字段也改为空)

八、语言文件phpcms/languages/zh-cn/content.lang.php中添加
$LANG['save_draft'] = '保存草稿';
$LANG['all_draft_list'] = '所有草稿';

九、后台添加管理菜单

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/307608.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt5插件开发入门+示例

目的 1、为什么用插件 现在大家最讲模块化开发了,怎么算模块化,分成不同的类,分成不同的文件夹,高内聚,低耦合,这个当然算是。 从高层次讲,它们是在一起的,只是逻辑上的模块化,不是物理上的模块化,或者说不是彻底的模块化,彻底的模块化应该像一个辆自行车一样,车…

深度数据恢复,3个有效方法要掌握!

“我在电脑里保存了部分很重要的数据&#xff0c;但是不知道怎么就误删了它们&#xff0c;大家有什么比较简单的操作可以恢复这些被深度删除的数据吗&#xff1f;” 在数字化时代&#xff0c;我们的生活与工作已与数据紧密相连&#xff0c;这给我们带来了很多的便利。但不可否认…

Queue接口分析

一、Queue是什么 该接口是Java集合框架成员 Queue&#xff1a; 通常&#xff08;但不一定&#xff09;队列就是一个先入先出&#xff08;FIFO&#xff09;的数据结构&#xff0c;和堆一样&#xff08;但可以进行转换&#xff0c;比如优先级列队排序&#xff0c;又或者改为栈形…

功能分享【电商API接口】:商品采集正确使用方法!

相信很多做过电商的人&#xff0c;曾经有在淘宝、京东、天猫、拼多多、1688等平台上卖过自己的产品&#xff0c;但是每换一个平台&#xff0c;商品要重新上传&#xff0c;这浪费了很多没有必要的时间。 为此我们开发了商品采集API功能&#xff0c;一键完成上架商品&#xff0c…

代码随想录第五十天——买卖股票的最佳时机|||,买卖股票的最佳时机IV

leetcode 123. 买卖股票的最佳时机||| 题目链接&#xff1a;买卖股票的最佳时机||| 本题关键在于至多买两次&#xff0c;代表可以买卖0&#xff0c;1&#xff0c;2次。 确定dp数组以及下标的含义 一天一共可以有五个状态&#xff1a; 0.没有操作 &#xff08;可以不设置这个状…

云计算任务调度仿真02

前面已经分享过一个仿真项目&#xff0c;但是基于policy gradient方法实现的&#xff0c;考虑到许多人从零到一实现DQN方法有点难度&#xff0c;所以这次分享一个基于DQN实现的仿真项目&#xff0c;非常简单。 这里之所以简单主要得益于它是用pytorch实现的&#xff0c;而pyto…

Prometheus监控遇上报错invalid is not a valid start token

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 问题描述&#xff1a; 使用prometheus采集java应用的metric指标数据&#xff0c;在prometheus界面pod状态为down&#xff0c;报…

clickhouse常规的优化方法

一、建表优化 1.1日期字段避免使用String存储 建表时能用数值型或日期时间型表示的字段就不要用字符串&#xff0c;全String 类型在以Hive 为中心的数仓建设中常见&#xff0c;但ClickHouse 环境不应受此影响。 虽然ClickHouse 底层将DateTime 存储为时间戳Long 类型&#xf…

063:vue中一维数组与三维数组联动,类似购物车增减

第063个 查看专栏目录: VUE ------ element UI javascript 一维数组与三维数组联动,一维数组转换为三为数组,源文件下载 .zip 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安…

熟悉HDFS常用操作

1. 利用Hadoop提供的Shell命令完成下列任务 (1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件。 #检查文件是否存在./bin/hdfs dfs -test -e text.txt echo $? #结果是1 代表已存在 #根据结果判断出文件已存…

[ 机器学习 ] 关于Jupyter Notebook中pytorch模块import失败的问题

0x01、问题描述 在使用WSL搭建Jupyter进行代码测试的时候 发现Miniconda&#xff08;虚拟环境均适用&#xff09;中安装的pytorch在Jupyter里面import失败 但在python解释器的命令模式里可以测试import成功 并且torch.cuda_available()打印True 以前用的是IDEA没怎么用Jup…

Python学习笔记-使用Anaconda+VSCode配置开发环境

文章目录 概述一、安装Anaconda1.1 下载软件1.2 安装anaconda1.3 配置环境 二、配置虚拟环境2.1 使用conda创建一个新的虚拟环境2.1.1 使用search指令查看支持的python的版本&#xff1a;2.1.2 使用create创建指定版本的虚拟环境&#xff1a;2.1.3 使用env list查看虚拟环境列表…

文件夹重命名技巧:如何通过重命名解决文件夹名混乱不规律的问题

在日常生活和工作中&#xff0c;我们经常需要管理大量的文件夹&#xff0c;整理文档、图片等其他类型的文件。随着时间的推移&#xff0c;文件夹名可能会变得混乱和不规律&#xff0c;导致查找和管理变得困难。现在一起来看云炫文件管理器如何让文件名变简洁的操作方法吧。 下…

【2024最新-python3小白零基础入门】No1.python简介以及环境搭建

文章目录 一 python3 简介二 python语言的特点三 python安装四 安装开发工具-pycharm五 新建一个python项目1.新建项目2 配置虚拟环境3 运行项目 一 python3 简介 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性&a…

Js-基础语法(二)

运算符 赋值运算符 赋值运算符&#xff1a;对变量进行赋值的运算符 已经学过的赋值运算符&#xff1a; 将等号右边的值赋予给左边, 要求左边必须是一个容器 其他赋值运算符&#xff1a; - */% 使用这些运算符可以在对变量赋值时进行快速操作 一元运算符 众多的 JavaScrip…

使用Linux防火墙管理HTTP流量

在Linux系统中&#xff0c;防火墙是用于控制网络流量的重要工具。通过防火墙&#xff0c;你可以根据需要限制、过滤或允许特定的网络流量&#xff0c;从而提高系统的安全性。在处理HTTP流量时&#xff0c;防火墙可以帮助你实施访问控制、流量监控和其他安全策略。 iptables i…

CSS3新增边框样式

边框样式 概念:在CSS3中&#xff0c;针对元素边框增加了丰富的修饰属性。 常见的边框样式属性有以下 属性说明border-radius圆角效果box-shadow边框阴影border-image边框背景 border-radius属性 概念&#xff1a;border-radius属性可以为元素添加圆角效果 语法&#xff1…

新书速览|循序渐进Vue.js 3.x前端开发实战

Vue.js初学者和前端开发人员使用&#xff0c;网课、培训机构与大中专院校的教学用书 作者简介 张益珲 美国亚利桑那州立大学计算机工程技术硕士&#xff0c;架构师&#xff0c;从业近10年&#xff0c;多年大前端开发经验&#xff0c;曾就职于知名上市公司&#xff0c;主导开发…

Java项目:115SSM宿舍管理系统

博主主页&#xff1a;Java旅途 简介&#xff1a;分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 宿舍管理系统基于SpringSpringMVCMybatis开发&#xff0c;系统主要功能如下&#xff1a; 学生管理班级管理宿舍管理卫生管理维修登记访客管理 二、技术框…

MyBatis:自定义 typeHandler 处理枚举类型

MyBatis 枚举类型typeHandler 枚举类型 枚举类型&#xff0c;在 Java 中属于基本数据类型&#xff0c;而不是构造数据类型&#xff0c;用于声明一组命名的常数。枚举可以根据 Integer 、Long 、Short 或 Byte 中的任意一种数据类型来创建一种新型变量。这种变量可以设置为已经…