图片中的图片(lightbox/greybox)支持plone

Products.pipbox的Python项目详细描述


简介

pip=图片中的图片

pipbox=图片框在plone中

pipbox是一个向后兼容层,它提供了plone 4的 plone 3.3.x中的ajax弹出式支持。

这允许lightbox样式的弹出窗口,可以作为图像、ajax html和 或iframes。

Pipbox目前做三件事:

< Buff行情>
  1. 加载plone.app.jquery tools;
  2. 添加许多标准的plone 4弹出表单;
  3. 提供将jquery工具bling连接到css选择器的框架。 没有javascript。

pipbox已经用plone 3.3.x进行了测试,它基本上与plone 4兼容, 但没什么理由用它。如果你把它和plone 4一起使用, 您需要关闭(在portal_javascripts中)由提供的popupforms.js 有利于PLONE提供的管道箱。

在pipbox和plone.app.jquerytools就位后,可以使用plone.app.jquerytools 添加弹出窗口的记录机制。

您也可以使用表驱动的设置,表中的设置允许 您可以通过jquery选择器指定dom元素。这些通常会 成为<;a ref…/>;或<;img src…/>;元素。指定url应该如何 已加载(作为图像、ajax或iframe)。您也可以选择提供 url的表达式搜索/替换对和 JS引擎。

选项使用javascript对象表示法指定并存储在属性表中 在门户属性中。

覆盖示例

比如说,你想点击新闻图片 打开图像的lightbox样式放大版本。要做到这一点,你需要 指定:

< Buff行情>
  • plone元素的jquery样式选择器,例如".newsImageContainer a"
  • 加载方法的"image"("ajax"和"iframe"是其他可选方法)
  • 一个正则表达式搜索/替换来转换ref或src url。 在本例中,我们将URL更改为指向预览大小 图像。因此,我们的搜索/替换对是"/image\u view\u fullscreen" 以及"预览"。
  • 您还可以指定其他覆盖配置参数。

pipbox的站点设置是表驱动的,在 portal_properties.pipbox_properties.selector_规格。在这个表中,每一行都是一个json 对象规范,因此,以上所有内容都需要像这样的行:

{type:'overlay',subtype:'image',selector:'.newsImageContainer a',urlmatch:'/image_view_fullscreen$',urlreplace:'_preview'}

另一个快速示例,为通过kupu放置的图像提供完整的图像弹出窗口:

{type:'overlay', subtype:'image', selector:'img.image-right,img.image-left,img.image-inline', urlmatch:'/image_.+$',urlreplace:''}

有什么不同?我们的目标是<;img…/>;标记,这些标记没有ref属性。 pipbox从src属性中获取目标url,这样我们就可以有一个弹出视图 未链接到该视图的图像元素的。还要注意,我们使用的是 在搜索/替换中使用正则表达式,这样我们就可以去掉图像预览、图像迷你, 等

并且,将站点地图放入带有公开设置的iframe弹出窗口中的配置 来自a href:

的目标
{type:'overlay',subtype:'iframe',selector:'#siteaction-sitemap a',config:{expose:{color:'#00f'}}}

选项卡示例

jquery工具将制表符、垂直折叠和水平折叠统一为"制表符"。标签是 绑定到"窗格"–选择制表符时显示的DOM元素。

通过提供"tabcontainer"选择器和选择选项卡的"tabs"选择器来标识选项卡 容器中的元素。提供"窗格"选择器以查找显示的窗格。

所以,如果我们想将带有"pbtabs"类选择器的显示列表转换为选项卡显示,我们 可以使用设置:

{type:'tabs',tabcontainer:'dl.pbtabs',tabs:'dt',panes:'dl.tabs > dd'}

为了帮助使用css,pipbox将用'pbactive'类标记tabcontainer和窗格 当js不可用时,帮助您确保制表符正常降级的选择器。

目前没有对选项卡的css支持;我们可能会添加一些看起来像 普拉塔BS。此外,可能还有子类型支持ajax加载选项卡内容。

选项

完整的选项列表:

< Buff行情>
  • type:'overlay','tabs'(其他jquery工具效果将出现)
  • config:jquery tools字典中的配置选项

对于套印格式,添加选项:

< Buff行情>
  • 子类型:"image""iframe""ajax"
  • 选择器:用于查找元素的jquery选择器
  • urlmatch:目标url的一部分的正则表达式
  • urlreplace:匹配表达式的替换表达式
  • 宽度:弹出窗口的宽度。让unset通过css确定。 由图像覆盖的图像宽度覆盖。

对于ajax覆盖,添加选项:

< Buff行情>
  • formselector:用于为任何 要处理的加载内容中的窗体 通过执行ajax加载来替换覆盖 内容。
  • noform:提交ajax表单并返回 内容与窗体选择器不匹配。可用操作包括 "close"只需关闭覆盖,"reload"重新加载页面,然后 "重定向"可重定向到另一页。如果选择"重定向",则 必须在重定向选项中指定URL。
  • closeSelector:使用此选项指定将要使用的jquery选择器 在覆盖中查找应关闭覆盖的元素 点击。最明显的例子是表单的取消按钮。
  • 重定向:如果为noform操作指定"重定向",请使用 重定向选项以指定完整的目标URL。

对于选项卡,添加选项:

< Buff行情>
  • tabcontainer:一个jquery选择器,用于标识选项卡的容器
  • tabs:一个jquery选择器,用于标识应该 成为标签。
  • 窗格:用于将窗格绑定到选项卡的jquery选择器。

ajax

一些pipbox选项允许使用ajax获取内容。当你 通过ajax将内容加载到覆盖图或选项卡中,几乎总是 只需要加载内容的一部分。例如,如果你 拿起一个plone页面,您可能只需要"content div"的内容。

为此,只需向目标url添加css(或jquery)选择器。 jquery的load方法(pipbox使用的)将只获取内部的内容 选择。

例如,假设您希望显示标准的plone站点地图 在一个覆盖层中。您可以使用:

{type:'overlay',subtype:'ajax',selector:'#siteaction-sitemap a',urlmatch:'$',urlreplace:' #content > *'}

urlmatch/urlreplace代码在url末尾添加一个选择器 调用jquery的load获取内容,只获取 #内容分区

如果不指定从加载页的dom中选择的内容,则将得到 页面正文部分的所有内容。

有些浏览器缓存ajax加载,因此会向url添加一个随机参数。

ajax表单

pipbox可以自动处理覆盖范围内的表单 通过执行ajax post操作,然后用 结果:

使用"formselector"选项指定此处理的表单。内容 重新使用原始覆盖中指定的筛选器。

例如,如果您希望在 覆盖,您可以指定:

{type:'overlay',subtype:'ajax',selector:'#siteaction-contact a',urlmatch:'$',urlreplace:' #content>*', formselector:'form'}

另一个示例:使用弹出窗口(从"操作"菜单)删除确认和重命名表单:

{type:'overlay',subtype:'ajax',selector:'a#delete,a#rename',urlmatch:'$',urlreplace:' #region-content','closeselector':'[name=form.button.Cancel]'}

这里有一些不同之处。首先,没有表单选择器 指定;这是因为我们不想安装ajax提交处理程序 当我们重命名或删除显示的对象时。第二,我们指定 关闭选择器,按下取消按钮将关闭覆盖 无需提交表格。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何拆分字符串(基于各种分隔符),但不保留空格?   解析。Json格式的txt文件和knime中的java   java Spring rest api为什么在rest api调用的响应中更改了数据类型   升华文本3抛出java。lang.ClassNotFoundException,而记事本++不存在   java Android指纹扫描仪在尝试5次后停止工作?   java Android如何设置精确的重复报警?   java如何使用HTTPGET connect为access API输入用户名和密码   java当测试报告显示没有测试失败时,Gradle为什么说“有失败的测试”?   用Gson实现java获取响应   MapReduce程序中函数错误的java不可映射参数   java spring安全性不符合自动代理的条件   java GWT使用异步回调进行同步/阻塞调用   java奇怪的类数组问题无法在jsp中显示   如何在java中使用PrinterJob使用epl打印条形码   java如何在JTable中居中单元格   将Java Mockito测试转换为Kotlin   html Java正则表达式模式匹配到多个相同标记   testCompile中缺少java Gradle(Android)多项目依赖项   在输入提示后输入字符串时发生java FileNotFoundException