php对话框制作,织梦系统“提示窗口对话框类”详解,oxwindow.class.php、catalog_do.php...

如果对织梦系统做过二次开发或学深入研究过的话,一定会知道在我们做织梦二次开发时,一般会把php文件以及对应的模板文件起的名字,除了扩展名外,其它都一样,这是织梦文件起名的一个特点。例如,index_body.php文件,一般对应的模板文件是index_body.htm,文件album_add.php对应的模板文件是album_add.htm等等,一般都是这样的,织梦里面很少是不对应的,这是织梦一个特点,也是我们在学习织梦系统时,查找模板文件的一个方法。

我们举一个例子:当我们添加文档的时候,会打开如下图所示表单。

58bd173990c232fed4fa8daf649613d8.png

我们在浏览器看到这的这个表单,实际上是一个模板文件也就是html代码,如果是php代码是肯定不会在浏览器看到的,因为,php程序是运行在服务器上面的,知道这个原理我们就可以推测,这个表单一定是一个html代码并且嵌套了标签的模板文件,当我们提交之后,会被提交到对应的php文件进行处理。

由此,我们推断这个php文件一定引入了模板文件,而这个模板文件经过编译后,显示在我们的浏览器上面。根据上面我们讲到过的织梦命名规则,我们只要找到对应的php文件,一定会找到对应的模板文件。我们知道这个发布文档的php程序文件是article_add.php,那么,他对应的模板文件是一定是article_add.htm,一定也没有错,正是这个文件。

通过上例我们发现如果一个对话框,在浏览器显示,一般都是php和htm模板文件配合使用,在织梦里面是这样的,当然,还有一种情况就是只用js和php文件,但是,js里面也必定有html代码。

但是织梦里面有一种特殊的对话框,叫“提示窗口对话框”,这个对应框跟上面的表单一样又完全不一样,这个说的一样是,这个对话框也调用了模板文件/templets/plus/win_templet.htm,从这点来说是一样的,在织梦里面只要显示在浏览器上面的内容,都会有对应的模板文件。

但是又不一样,这个对话框是织梦通过一个类,进行动态加载的对话框内容的。这里说的动态加载内容,指的是不像上面模板文件是写好的,固定不变的,而是通过我们自己定义显示的内容,这样的最大好处是我们可以自由定义对话框,包括对话框的,颜色,按扭等各种选项。

这就是织梦的系统提供给我们的“提示窗口对话框类”,本教程会对这个类通过一个实例,来详细分析这个类,在以后开织梦二次开发时,如果想使用这种对话框可以自己定义特别方便。

其实,在织梦后台里面有很多地方都用到这个“提示窗口对话框”,例如,移动栏目,如下图所示。

e1c16d5171964cc44df2297aacb3186f.png

还有删除栏目对话框,如下图所示。

73bbc7f8b4e81bf9c59f736e82fa0098.png

这二个都是应用到“提示窗口对话框类”了,当然,在织梦系统里面并不仅仅这二个,还有很多,我们这里不一一列出。

今天,我们就以“移动”栏目为例子,来讲解“提示窗口对话框”是如何执行的,等我们把这个学会了,其它,都不成问题,我们自己也就会写出自己个性的对应框了。

用到的程序文件:

“提示窗口对话框类”对应的文件:http://www.dedebase.com/include/oxwindow.class.php

“移动”栏目:http://www.dedebase.com/dede/catalog_do.php

工作原理:

通过在文件catalog_do.php里面自定义对话框内容,然后,实例化oxwindow.class.php里面的类OxWindow。调用这个文件里面已经定义好的table表格及其相应的方法,然后,通过Display()方法显示出来。

提示窗口对话框类里面的方法有:

1、开始创建窗口方法:

StartWin(),这个方法的功能是定义了表格的开始,即<table width='100%'border='0'cellpadding='3'cellspacing='1'bgcolor='#DADADA'>\r\n,并存放在变量$this->myWin里面。

2、初始化为含表单的页面:Init($formaction="", $checkScript="js/blank.js", $formmethod="POST", $formname="myform")

通过初始化,得到一个类似下面的字符串,并赋给$this->myWin。

3、增加隐藏域方法:

AddHidden($iname,$ivalue),这个方法是增加隐藏域,如本例子“移动”栏目里面的,如下隐藏域。

上面这些隐藏域正是通过这个方法来实现的,定义好后的隐藏域赋给$this->myWin。

4、增加单列的标题行:

AddTitle($title, $col="2"),通过这个方法我们可以得到,对话框里面的标题,如下图所示。

dc699122ffb9c9626db4db41b6e9096b.png

这个标题对应的html代码为:

移动目录时不会删除原来已创建的列表,移动后需重新对栏目创建HTML。

对应的方法调用为是:$win->AddTitle("移动目录时不会删除原来已创建的列表,移动后需重新对栏目创建HTML。")

5、增加一个两列的行:

AddItem($iname, $ivalue),通过这个方法我们可以得到一个一行两列的表格内容,例如,本例中,通过$win->AddItem('你选择的栏目是:',"$typename($typeid)");

$win->AddItem('你希望移动到那个栏目?',"\r\n移动为顶级栏目\r\n$typeOptions\r\n");

$win->AddItem('注意事项:','不允许从父级移动到子级目录,只允许子级到更高级或同级或不同父级的情况。');

通过上面三次对方法AddItem()的调用,得到如下对话框内容。

你选择的栏目是:Javascript/Ajax(4)你希望移动到那个栏目?

移动为顶级栏目

网页基础

─Javascript/Ajax

─Dreamweaver

DIV&CSS

注意事项:不允许从父级移动到子级目录,只允许子级到更高级或同级或不同父级的情况。

对应的如下图所示对话框内容。

fb8252852f27dfe5db27888c8e6bf082.png

6、增加一个单列的消息行:

AddMsgItem($ivalue,$height="100",$col="2")这个方法是增加一个类似下面的一个单列:

 $ivalue 

这个方法在本例子中,没有用到,我们就实验一下这个方法。

在文件catalog_do.php里面加上$win->AddMsgItem("这是测试用的一个方法",$height="100",$col="2");这一行代码,移动栏目显示结果如下图所示。

32205e67797786d0824eb7d6e794c044.png

7、结束Window:CloseWin($isform=true),这个方法就是定义了一个表格的闭合,代码极简单没有什么好讲的。

8、增加自定义JS脚本:SetCheckScript($scripts)这个功能我们一般用不到,因为,在初始化时,我们就已经定义了js文件了。

9、获取窗口:GetWindow($wintype="save",$msg="",$isform=true),这个方法把上面的字符串变量$this->myWin和$this->myWinItem进行了对接,也就是把表格表单内容进行组合,同时这个方法还提供了一段表格定义。而且还定义了按扭的类型。

这个按扭本没有什么,但是,这种定义的方法确是值得我们学习的。例如本例子中,$win->GetWindow('ok')里面的“菜单类型”为ok,对应对话框如下图所示。

dbb54d218db32dc5487d5ee39df8ee13.png

若我们把类型save,即$win->GetWindow('save'),将看到如下所示对话框。

32e0d303b674b481959880bce9935470.png

窗口型按扭类型图:

c603115689c18abe7e29862280a67c83.png

通过这个窗口函数的调用,返回了对接后的表格$this->myWin,以备下面的display()函数使用。

10、显示页面:Display($modfile=""),这个对话框之所以能够显示出来,就是这个函数作用的结果,可以说,以上9个方法全为这个函数作显示准备。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

B-JUI文档、下载

概述 特别说明 本文档仅适用于最新版的B-JUI&#xff0c;网站首页或下载页可以查看B-JUI的最后更新时间。 B-JUI前端管理框架适用于快速开发各类WEB管理系统&#xff0c;可与任意后端程序&#xff08;java、php、.net...&#xff09;配合使用。 B-JUI基于Bootstrap样式及jQuery…

vba xml 怎么设置父节点_熊二做了一个xml报文处理的开源库easyxml

❝自信、冷静、专注。—— TM 熊的自我勉励❞1. 前言熊二从去年开始&#xff0c;因项目需求接触到xml报文的处理&#xff0c;也是我第一次学习用C/C的方式处理基于DOM模型的xml报文。因为本人比较懒hhh&#xff0c;所以第一反应就是去看看网上有没有什么大家都在用的比较好的xm…

实例10:python

#题目&#xff1a;暂停一秒输出&#xff0c;并格式化当前时间。 #!/usr/bin/python -- coding: UTF-8 -- import time print (time.strftime(’%Y-%m-%d %H:%M:%S’,time.localtime(time.time()))) 暂停一秒 time.sleep(1) print (time.strftime(’%Y-%m-%d %H:%M:%S’,…

iview 可以选择当天 禁用_人脸识别刚要普及,怎么就被禁用了?|人脸识别|人脸信息|世超|rekognition...

点击播放 GIF 0.5M人脸识别大家都不陌生了&#xff0c;从 iPhone 上面的 Face ID 再到支付宝刷脸支付&#xff0c;这个曾经只有在科幻电影上面才能见到的技术逐渐变得越来越司空见惯。点击播放 GIF 0.4M按理来讲&#xff0c;一项方便的技术应该越来越普及才对&#xff0c;不过世…

oracle ytd,hana ytd计算

YTD解答方案要求&#xff1a;输出字段: 年月, YTD金额因为我这边只有system一个账号&#xff0c;就用system账号写合同表的结构和数据如下:create column table "SYSTEM"."CONTRACTS"("CONTRACT_ID" INTEGER null, --合同ID"START_DATE&qu…

linux 识别文件类型,技术|Linux 中 7 个判断文件系统类型的方法

文件通过文件系统在磁盘及分区上命名、存储、检索以及更新&#xff0c;文件系统是在磁盘上组织文件的方式。文件系统分为两个部分&#xff1a;用户数据和元数据(文件名、创建时间、修改时间、大小以及目录层次结构中的位置等)。在本指南中&#xff0c;我们将用 7 种方法来识别你…

二分归并排序算法_第五篇排序算法|归并排序

0x01&#xff0c;前言闲叙最近几年很少看电视了&#xff0c;因为没时间看了&#xff0c;除了偶尔刷刷头条&#xff0c;基本上不会花大块的时间沉迷于电视剧&#xff0c;综艺&#xff0c;这或许就是短视频时代所带来的一些改变吧&#xff0c;我们都会深受其中。0x02&#xff0c;…

linux系统访问文件夹ls,Linux系统目录结构,文件类型以及ls、alias命令

一、Linux目录结构登录系统之后&#xff0c;在当前命令窗口输入以下指令&#xff0c;/是Linux操作系统里最核心的一个目录&#xff0c;所有的文件和目录全部在它下面&#xff0c;所以称为“根目录”&#xff1a;# ls / //列出根目录下的文件得到如图结果&#xff1a;如图上图所…

qq文件对方接收后一定会有提示吗_为什么微信、QQ不推出已读功能?因为它敢出网友就敢卸载...

12月14日&#xff0c;腾讯 QQ突然发起了一个"很吓人"的调查——你希望 QQ 出已读功能吗&#xff1f;在短时间内&#xff0c;有 超过3000 人参与&#xff0c;其中有 2660 人(71.6%)投票 "你出我就卸载 QQ"选项&#xff0c;大家旗帜鲜明地表示&#xff0c;并…

实例11:python

#古典问题&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c; #小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总数为多少&#xff1f; #!/usr/bin/python -- coding: UTF-8 -- #兔子的规律…

实例12:python

#判断101-200之间有多少个素数&#xff0c;并输出所有素数。 #程序分析&#xff1a;判断素数的方法&#xff1a;用一个数分别去除2到sqrt(这个数)&#xff0c;如果能被整除&#xff0c;则表明此数不是素数&#xff0c;反之是素数。 #!/usr/bin/python -- coding: UTF-8 -- #…

javascript用户登录_SAP HANA XS的JavaScript安全事项

公众号&#xff1a;matinal前言部分我们都知道web程序都有潜在的安全隐患问题&#xff0c;那么SAP HANA XS的JavaScript也是一样&#xff0c;使用服务器端JavaScript编写应用程序代码&#xff0c;也有潜在的外部攻击&#xff08;和风险&#xff09;。注意事项下面列出几点注意事…

实例13:python

#题目&#xff1a;打印出所有的"水仙花数"&#xff0c;所谓"水仙花数"是指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如&#xff1a;153是一个"水仙花数"&#xff0c;因为1531的三次方&#xff0b;5的三次方&#xff0b;3的三次方…

spring的基本用法

关于spring的几种注入方式 理解类之间的关联关系 一&#xff0c;set注入 在这之前我们得spring的jar包&#xff0c;可以去官网下&#xff0c;添加到WebContent下 WEB-INF 下 lib里 这种方式就得首先实现set方法&#xff0c;现在以英雄&#xff08;Hero接口&#xff09;和武器&a…

linux下anaconda3安装教程,Ubuntu18.04 安装 Anaconda3的教程详解

Anaconda指的是一个开源的Python发行版本&#xff0c;其包含了conda、Python等180多个科学包及其依赖项。 因为包含了大量的科学包&#xff0c;Anaconda 的下载文件比较大(约 531 MB)&#xff0c;如果只需要某些包&#xff0c;或者需要节省带宽或存储空间&#xff0c;也可以使用…

实例14:python

#将一个正整数分解质因数。例如&#xff1a;输入90,打印出90233*5。 #对n进行分解质因数&#xff0c;应先找到一个最小的质数k&#xff0c;然后按下述步骤完成&#xff1a; #(1)如果这个质数恰等于n&#xff0c;则说明分解质因数的过程已经结束&#xff0c;打印出即可。 #(2)如…

call,apply,bind的用法与区别

1.call/apply/bind方法的来源 首先&#xff0c;在使用call&#xff0c;apply&#xff0c;bind方法时&#xff0c;我们有必要知道这三个方法究竟是来自哪里&#xff1f;为什么可以使用的到这三个方法&#xff1f; call&#xff0c;apply&#xff0c;bind这三个方法其实都是继承自…

幅值与峰峰值的计算_电厂振动测量、计算基础及汽轮机组振动标准!

法律顾问&#xff1a;张友全律师正文&#xff1a;电厂振动测量、计算基础及汽轮机组振动标准&#xff01;1. 常用的振动测量参数常用的振动测量参数有振幅、振动速度(振速)、振动加速度。对应单位表示为&#xff1a;mm、mm/s、mm/s。 振幅是表象&#xff0c;定义为在波动或振动…

实例15:python

#利用条件运算符的嵌套来完成此题&#xff1a;学习成绩>90分的同学用A表示&#xff0c;60-89分之间的用B表示&#xff0c;60分以下的用C表示。 #!/usr/bin/python -- coding: UTF-8 -- score int(input(‘输入分数:\n’)) if score > 90: grade ‘A’ elif score &g…

对比分析

【课程1.3】 对比分析对比分析 → 两个互相联系的指标进行比较绝对数比较&#xff08;相减&#xff09; / 相对数比较&#xff08;相除&#xff09; 结构分析、比例分析、空间比较分析、动态对比分析 import numpy as np import pandas as pd import matplotlib.pyplot as plt…