From: <die...@us...> - 2010-05-18 13:13:43
|
Revision: 2477 http://openutils.svn.sourceforge.net/openutils/?rev=2477&view=rev Author: diego_schivo Date: 2010-05-18 13:13:34 +0000 (Tue, 18 May 2010) Log Message: ----------- openutils-mgnlcontextmenu Modified Paths: -------------- trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/setup/ContextMenuModuleVersionHandler.java trunk/openutils-mgnlexpressions/src/main/java/net/sourceforge/openutils/mgnlexpressions/pages/ExpressionValidator.java trunk/openutils-mgnlexpressions/src/main/java/net/sourceforge/openutils/mgnlexpressions/tags/EvaluateTag.java Added Paths: ----------- trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/EditContentInfo.java trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/el/ trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/el/ContextMenuElFunctions.java trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/setup/FilesExtractionTask.java trunk/openutils-mgnlcontextmenu/src/main/resources/META-INF/tld/ trunk/openutils-mgnlcontextmenu/src/main/resources/META-INF/tld/mgnlcontextmenu.tld trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.dialogs.samples-contextmenu.xml trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.paragraphs.samples-contextmenu.xml trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.templates.sampleContextMenu.xml trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/website.sample-contextmenu.xml trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/templates/ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/templates/samples-contextmenu/ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/templates/samples-contextmenu/paragraph-contextmenu.jsp trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/templates/samples-contextmenu/template.jsp trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/css/ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/css/img/ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/css/img/menu-text.png trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/css/jquery.contextMenu.css trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/js/ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/js/jquery-1.4.2.min.js trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/js/jquery.contextMenu.js Property Changed: ---------------- trunk/magnolia-test-webapp/src/main/webapp/templates/ trunk/openutils-mgnlcontextmenu/ Property changes on: trunk/magnolia-test-webapp/src/main/webapp/templates ___________________________________________________________________ Modified: svn:ignore - samples samples-media dms samples-controls samples-expressions + samples samples-media dms samples-controls samples-expressions samples-contextmenu Property changes on: trunk/openutils-mgnlcontextmenu ___________________________________________________________________ Added: svn:ignore + .checkstyle .classpath .project .settings target Added: trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/EditContentInfo.java =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/EditContentInfo.java (rev 0) +++ trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/EditContentInfo.java 2010-05-18 13:13:34 UTC (rev 2477) @@ -0,0 +1,125 @@ +/** + * + * Magnolia SimpleMedia Module (http://www.openmindlab.com/lab/products/media.html) + * Copyright (C)2008 - 2010, Openmind S.r.l. http://www.openmindonline.it + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package net.sourceforge.openutils.mgnlcontextmenu; + +/** + * @author dschivo + * @version $Id$ + */ +public class EditContentInfo +{ + + /** + * Content key + */ + private final String key; + + /** + * Paragraph's handle + */ + private final String path; + + /** + * HTML identifier of the element containing the content + */ + private final String elementId; + + /** + * Wrapper HTML tag to which attach context menu + */ + private String parentTrigger; + + /** + * Context menu type + */ + private String contextMenu; + + /** + * Enter mode for FCK editor + */ + private String enterMode; + + /** + * JavaScript function to call when context menu opens + */ + private String showCallback; + + public EditContentInfo(String key, String path, String elementId) + { + this.key = key; + this.path = path; + this.elementId = elementId; + } + + public String getKey() + { + return key; + } + + public String getPath() + { + return path; + } + + public String getElementId() + { + return elementId; + } + + public String getParentTrigger() + { + return parentTrigger; + } + + public void setParentTrigger(String parentTrigger) + { + this.parentTrigger = parentTrigger; + } + + public String getContextMenu() + { + return contextMenu; + } + + public void setContextMenu(String contextMenu) + { + this.contextMenu = contextMenu; + } + + public String getEnterMode() + { + return enterMode; + } + + public void setEnterMode(String enterMode) + { + this.enterMode = enterMode; + } + + public String getShowCallback() + { + return showCallback; + } + + public void setShowCallback(String showCallback) + { + this.showCallback = showCallback; + } +} Property changes on: trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/EditContentInfo.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/el/ContextMenuElFunctions.java =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/el/ContextMenuElFunctions.java (rev 0) +++ trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/el/ContextMenuElFunctions.java 2010-05-18 13:13:34 UTC (rev 2477) @@ -0,0 +1,103 @@ +/** + * + * Magnolia SimpleMedia Module (http://www.openmindlab.com/lab/products/media.html) + * Copyright (C)2008 - 2010, Openmind S.r.l. http://www.openmindonline.it + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package net.sourceforge.openutils.mgnlcontextmenu.el; + +import info.magnolia.context.MgnlContext; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import net.sourceforge.openutils.mgnlcontextmenu.EditContentInfo; + +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * @author dschivo + */ +public class ContextMenuElFunctions +{ + + /** + * Logger. + */ + private static Logger log = LoggerFactory.getLogger(ContextMenuElFunctions.class); + + private static final String EDIT_CONTENT_INFOS_KEY = ContextMenuElFunctions.class.getName() + ".editContentInfos"; + + @SuppressWarnings("unchecked") + public static EditContentInfo addEditContentInfo(String key, String path, String elementId) + { + HttpServletRequest request = MgnlContext.getWebContext().getRequest(); + List infos = (List) request.getAttribute(EDIT_CONTENT_INFOS_KEY); + if (infos == null) + { + infos = new ArrayList(); + request.setAttribute(EDIT_CONTENT_INFOS_KEY, infos); + } + EditContentInfo info = new EditContentInfo(key, path, elementId); + infos.add(info); + return info; + } + + @SuppressWarnings("unchecked") + public static List editContentInfos() + { + List infos = (List) MgnlContext.getWebContext().getRequest().getAttribute(EDIT_CONTENT_INFOS_KEY); + return infos != null ? infos : Collections.EMPTY_LIST; + } + + public static String editContentInfosJs() + { + StringBuilder sb = new StringBuilder(); + for (Object item : editContentInfos()) + { + if (sb.length() > 0) + { + sb.append(','); + } + EditContentInfo info = (EditContentInfo) item; + sb.append("'").append(info.getElementId()).append("'"); + sb.append(":{"); + if (!StringUtils.isEmpty(info.getParentTrigger())) + { + sb.append("'parentTrigger':'").append(info.getParentTrigger()).append("',"); + } + if (!StringUtils.isEmpty(info.getContextMenu())) + { + sb.append("'contextMenu':'").append(info.getContextMenu()).append("',"); + } + if (!StringUtils.isEmpty(info.getEnterMode())) + { + sb.append("'enterMode':'").append(info.getEnterMode()).append("',"); + } + sb.append("'key':'").append(info.getKey()).append("',"); + sb.append("'path':'").append(info.getPath()).append("'"); + sb.append('}'); + } + return "{" + sb + "}"; + } + +} Property changes on: trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/el/ContextMenuElFunctions.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/setup/ContextMenuModuleVersionHandler.java =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/setup/ContextMenuModuleVersionHandler.java 2010-05-18 12:12:03 UTC (rev 2476) +++ trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/setup/ContextMenuModuleVersionHandler.java 2010-05-18 13:13:34 UTC (rev 2477) @@ -19,13 +19,47 @@ package net.sourceforge.openutils.mgnlcontextmenu.setup; +import info.magnolia.cms.core.SystemProperty; +import info.magnolia.module.InstallContext; +import info.magnolia.module.delta.Task; import it.openutils.mgnltasks.SimpleModuleVersionHandler; +import java.util.ArrayList; +import java.util.List; +import org.apache.commons.lang.StringUtils; + + /** * @author dschivo */ public class ContextMenuModuleVersionHandler extends SimpleModuleVersionHandler { + /** + * {@inheritDoc} + */ + @Override + protected List<Task> getStartupTasks(InstallContext installContext) + { + List<Task> tasks = new ArrayList<Task>(); + + if (SystemProperty.getBooleanProperty(SystemProperty.MAGNOLIA_BOOTSTRAP_SAMPLES)) + { + tasks.add(new FilesExtractionTask("Samples extraction", "Extracts jsp files for samples.") + { + + /** + * {@inheritDoc} + */ + @Override + protected boolean accept(String resource) + { + return super.accept(resource) && StringUtils.contains(resource, "/samples-contextmenu/"); + } + }); + } + + return tasks; + } } Added: trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/setup/FilesExtractionTask.java =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/setup/FilesExtractionTask.java (rev 0) +++ trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/setup/FilesExtractionTask.java 2010-05-18 13:13:34 UTC (rev 2477) @@ -0,0 +1,98 @@ +/** + * + * Magnolia SimpleMedia Module (http://www.openmindlab.com/lab/products/media.html) + * Copyright (C)2008 - 2010, Openmind S.r.l. http://www.openmindonline.it + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package net.sourceforge.openutils.mgnlcontextmenu.setup; + +import info.magnolia.cms.core.HierarchyManager; +import info.magnolia.cms.core.Path; +import info.magnolia.module.InstallContext; +import info.magnolia.module.delta.AbstractTask; +import info.magnolia.module.delta.TaskExecutionException; +import info.magnolia.module.files.FileExtractionLogger; +import info.magnolia.module.files.FileExtractor; +import info.magnolia.module.files.MD5CheckingFileExtractor; + +import java.io.IOException; + +import org.apache.commons.lang.StringUtils; + + +/** + * Extract files to webapp root. + * @author fgiust + * @author dschivo + */ +public class FilesExtractionTask extends AbstractTask +{ + + public FilesExtractionTask(String taskName, String taskDescription) + { + super(taskName, taskDescription); + } + + public FilesExtractionTask() + { + this("Files extraction", "Extracts files to webapp root."); + } + + /** + * {@inheritDoc} + */ + public void execute(final InstallContext ctx) throws TaskExecutionException + { + final HierarchyManager hm = ctx.getConfigHierarchyManager(); + final MD5CheckingFileExtractor extractor = new MD5CheckingFileExtractor(new FileExtractionLogger() + { + + public void error(String message) + { + ctx.warn(message); + } + }, hm); + try + { + extractor.extractFiles(new FileExtractor.Transformer() + { + + public String accept(String resourcePath) + { + if (!FilesExtractionTask.this.accept(resourcePath)) + { + return null; + } + final String relTargetPath = StringUtils.removeStart(resourcePath, "/mgnl-files/"); + return Path.getAbsoluteFileSystemPath(relTargetPath); + } + + }); + } + catch (IOException e) + { + throw new TaskExecutionException("Could not extract files for module " + + ctx.getCurrentModuleDefinition() + + ": " + + e.getMessage(), e); + } + } + + protected boolean accept(String resource) + { + return resource.startsWith("/mgnl-files/"); + } +} Property changes on: trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/setup/FilesExtractionTask.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlcontextmenu/src/main/resources/META-INF/tld/mgnlcontextmenu.tld =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/resources/META-INF/tld/mgnlcontextmenu.tld (rev 0) +++ trunk/openutils-mgnlcontextmenu/src/main/resources/META-INF/tld/mgnlcontextmenu.tld 2010-05-18 13:13:34 UTC (rev 2477) @@ -0,0 +1,24 @@ +<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" + version="2.0"> + <description>Magnolia context menu Tags and EL functions</description> + <display-name>Magnolia context menu Tags and EL functions</display-name> + <tlib-version>1.0</tlib-version> + <short-name>mcmenu</short-name> + <uri>mgnlcontextmenu</uri> + <function> + <name>addEditContentInfo</name> + <function-class>net.sourceforge.openutils.mgnlcontextmenu.el.ContextMenuElFunctions</function-class> + <function-signature>nl.genialloyd.magnolia.el.EditMessageInfo addEditContentInfo(java.lang.String, java.lang.String, java.lang.String)</function-signature> + </function> + <function> + <name>editContentInfos</name> + <function-class>net.sourceforge.openutils.mgnlcontextmenu.el.ContextMenuElFunctions</function-class> + <function-signature>java.util.List editContentInfos()</function-signature> + </function> + <function> + <name>editContentInfosJs</name> + <function-class>net.sourceforge.openutils.mgnlcontextmenu.el.ContextMenuElFunctions</function-class> + <function-signature>java.lang.String editContentInfosJs()</function-signature> + </function> +</taglib> \ No newline at end of file Property changes on: trunk/openutils-mgnlcontextmenu/src/main/resources/META-INF/tld/mgnlcontextmenu.tld ___________________________________________________________________ Added: svn:mime-type + text/xml Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.dialogs.samples-contextmenu.xml =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.dialogs.samples-contextmenu.xml (rev 0) +++ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.dialogs.samples-contextmenu.xml 2010-05-18 13:13:34 UTC (rev 2477) @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sv:node sv:name="samples-contextmenu" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:contentNode</sv:value> + </sv:property> + <sv:property sv:name="jcr:uuid" sv:type="String"> + <sv:value>32b4f187-530a-4977-ad1d-d804681a504f</sv:value> + </sv:property> + <sv:property sv:name="i18nBasename" sv:type="String"> + <sv:value>net.sourceforge.openutils.mgnltestwebapp.lang.messages</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:node sv:name="MetaData"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:metaData</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="mgnl:Data" sv:type="String"> + <sv:value>MetaData</sv:value> + </sv:property> + <sv:property sv:name="mgnl:activated" sv:type="Boolean"> + <sv:value>false</sv:value> + </sv:property> + <sv:property sv:name="mgnl:activatorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:authorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:creationdate" sv:type="String"> + <sv:value>2004-11-02T15:34:43.213+01:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastaction" sv:type="Date"> + <sv:value>2008-04-28T23:43:10.557+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> + <sv:value>2010-05-18T15:06:09.656+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:title" sv:type="String"> + <sv:value/> + </sv:property> + </sv:node> + <sv:node sv:name="tabContextMenu"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:contentNode</sv:value> + </sv:property> + <sv:property sv:name="jcr:uuid" sv:type="String"> + <sv:value>166020a2-ec2f-403d-a01a-8752115ca00c</sv:value> + </sv:property> + <sv:property sv:name="controlType" sv:type="String"> + <sv:value>tab</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="label" sv:type="String"> + <sv:value>Context menu</sv:value> + </sv:property> + <sv:node sv:name="MetaData"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:metaData</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="mgnl:Data" sv:type="String"> + <sv:value>MetaData</sv:value> + </sv:property> + <sv:property sv:name="mgnl:activated" sv:type="Boolean"> + <sv:value>false</sv:value> + </sv:property> + <sv:property sv:name="mgnl:activatorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:authorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:creationdate" sv:type="String"> + <sv:value>2004-11-02T15:34:29.217+01:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastaction" sv:type="Date"> + <sv:value>2008-06-19T14:49:08.436+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> + <sv:value>2010-05-18T15:07:50.609+02:00</sv:value> + </sv:property> + </sv:node> + <sv:node sv:name="title"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:contentNode</sv:value> + </sv:property> + <sv:property sv:name="jcr:uuid" sv:type="String"> + <sv:value>db0ea0ec-e130-42ad-abf4-e805472c98fe</sv:value> + </sv:property> + <sv:property sv:name="controlType" sv:type="String"> + <sv:value>edit</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="label" sv:type="String"> + <sv:value>Title</sv:value> + </sv:property> + <sv:property sv:name="type" sv:type="String"> + <sv:value>String</sv:value> + </sv:property> + <sv:node sv:name="MetaData"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:metaData</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="mgnl:Data" sv:type="String"> + <sv:value>MetaData</sv:value> + </sv:property> + <sv:property sv:name="mgnl:activated" sv:type="Boolean"> + <sv:value>false</sv:value> + </sv:property> + <sv:property sv:name="mgnl:activatorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:authorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:creationdate" sv:type="String"> + <sv:value>2004-11-02T15:34:29.357+01:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastaction" sv:type="Date"> + <sv:value>2008-07-07T14:56:33.437+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> + <sv:value>2010-05-18T15:06:55.765+02:00</sv:value> + </sv:property> + </sv:node> + </sv:node> + </sv:node> +</sv:node> Property changes on: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.dialogs.samples-contextmenu.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.paragraphs.samples-contextmenu.xml =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.paragraphs.samples-contextmenu.xml (rev 0) +++ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.paragraphs.samples-contextmenu.xml 2010-05-18 13:13:34 UTC (rev 2477) @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sv:node sv:name="samples-contextmenu" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:contentNode</sv:value> + </sv:property> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> + <sv:value>mix:lockable</sv:value> + </sv:property> + <sv:property sv:name="jcr:uuid" sv:type="String"> + <sv:value>83483500-da3b-41bf-a5ea-1ce24830b782</sv:value> + </sv:property> + <sv:property sv:name="description" sv:type="String"> + <sv:value>Sample context menu paragraph</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="templatePath" sv:type="String"> + <sv:value>/templates/samples-contextmenu/paragraph-contextmenu.jsp</sv:value> + </sv:property> + <sv:property sv:name="title" sv:type="String"> + <sv:value>Context menu sample</sv:value> + </sv:property> + <sv:property sv:name="type" sv:type="String"> + <sv:value>jsp</sv:value> + </sv:property> + <sv:node sv:name="MetaData"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:metaData</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="mgnl:activated" sv:type="Boolean"> + <sv:value>false</sv:value> + </sv:property> + <sv:property sv:name="mgnl:authorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:creationdate" sv:type="Date"> + <sv:value>2008-09-25T12:45:26.721+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> + <sv:value>2010-05-18T15:08:11.515+02:00</sv:value> + </sv:property> + </sv:node> +</sv:node> Property changes on: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.paragraphs.samples-contextmenu.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.templates.sampleContextMenu.xml =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.templates.sampleContextMenu.xml (rev 0) +++ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.templates.sampleContextMenu.xml 2010-05-18 13:13:34 UTC (rev 2477) @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sv:node sv:name="sampleContextMenu" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:contentNode</sv:value> + </sv:property> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> + <sv:value>mix:lockable</sv:value> + </sv:property> + <sv:property sv:name="jcr:uuid" sv:type="String"> + <sv:value>0589824a-e17f-47ea-9035-3dcc8df430ce</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="templatePath" sv:type="String"> + <sv:value>/templates/samples-contextmenu/template.jsp</sv:value> + </sv:property> + <sv:property sv:name="title" sv:type="String"> + <sv:value>Context menu sample template</sv:value> + </sv:property> + <sv:property sv:name="type" sv:type="String"> + <sv:value>jsp</sv:value> + </sv:property> + <sv:property sv:name="visible" sv:type="String"> + <sv:value>true</sv:value> + </sv:property> + <sv:node sv:name="MetaData"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:metaData</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="mgnl:activated" sv:type="Boolean"> + <sv:value>false</sv:value> + </sv:property> + <sv:property sv:name="mgnl:authorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:creationdate" sv:type="Date"> + <sv:value>2008-09-23T16:56:46.344+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> + <sv:value>2010-05-18T14:15:34.703+02:00</sv:value> + </sv:property> + </sv:node> +</sv:node> Property changes on: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/config.modules.contextmenu.templates.sampleContextMenu.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/website.sample-contextmenu.xml =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/website.sample-contextmenu.xml (rev 0) +++ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/website.sample-contextmenu.xml 2010-05-18 13:13:34 UTC (rev 2477) @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sv:node sv:name="sample-contextmenu" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:content</sv:value> + </sv:property> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> + <sv:value>mix:lockable</sv:value> + </sv:property> + <sv:property sv:name="jcr:uuid" sv:type="String"> + <sv:value>b4aa718a-8c78-45b2-8baf-947578471d8e</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="title" sv:type="String"> + <sv:value>Context menu sample</sv:value> + </sv:property> + <sv:node sv:name="MetaData"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:metaData</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="mgnl:authorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:creationdate" sv:type="Date"> + <sv:value>2010-05-18T14:33:10.812+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> + <sv:value>2010-05-18T14:33:25.500+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:template" sv:type="String"> + <sv:value>sampleContextMenu</sv:value> + </sv:property> + </sv:node> +</sv:node> Property changes on: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-bootstrap/contextmenu/website.sample-contextmenu.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/templates/samples-contextmenu/paragraph-contextmenu.jsp =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/templates/samples-contextmenu/paragraph-contextmenu.jsp (rev 0) +++ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/templates/samples-contextmenu/paragraph-contextmenu.jsp 2010-05-18 13:13:34 UTC (rev 2477) @@ -0,0 +1,8 @@ +<jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:cms="urn:jsptld:cms-taglib" + xmlns:c="urn:jsptld:http://java.sun.com/jsp/jstl/core" xmlns:fmt="urn:jsptld:http://java.sun.com/jsp/jstl/fmt" + xmlns:fn="urn:jsptld:http://java.sun.com/jsp/jstl/functions" xmlns:cmsu="urn:jsptld:cms-util-taglib" + xmlns:cmsfn="http://www.magnolia.info/tlds/cmsfn-taglib.tld" xmlns:media="http://net.sourceforge.openutils/mgnlMedia" + xmlns:mu="mgnlutils"> + <jsp:directive.page contentType="text/html; charset=UTF-8" session="false" /> + <cms:setNode var="node" /> +</jsp:root> \ No newline at end of file Property changes on: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/templates/samples-contextmenu/paragraph-contextmenu.jsp ___________________________________________________________________ Added: svn:mime-type + text/xml Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/templates/samples-contextmenu/template.jsp =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/templates/samples-contextmenu/template.jsp (rev 0) +++ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/templates/samples-contextmenu/template.jsp 2010-05-18 13:13:34 UTC (rev 2477) @@ -0,0 +1,34 @@ +<jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="http://java.sun.com/jsp/jstl/core" + xmlns:fmt="http://java.sun.com/jsp/jstl/fmt" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:cms="urn:jsptld:cms-taglib" + xmlns:cmsu="urn:jsptld:cms-util-taglib" xmlns:cmsfn="http://www.magnolia.info/tlds/cmsfn-taglib.tld" + xmlns:media="http://net.sourceforge.openutils/mgnlMedia"> + <jsp:directive.page contentType="text/html; charset=UTF-8" session="false" /> + <jsp:text> + <![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> ]]> + </jsp:text> + <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <title>${actpage.title}</title> + <cms:links /> + <![CDATA[<script src="${pageContext.request.contextPath}/.resources/contextmenu/js/jquery-1.4.2.min.js"></script>]]> + <![CDATA[<script src="${pageContext.request.contextPath}/.resources/contextmenu/js/jquery.contextMenu.js"></script>]]> + <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/.resources/contextmenu/css/jquery.contextMenu.css" media="screen" /> + </head> + <body> + <h1>${actpage.title}</h1> + + <cms:contentNodeIterator contentNodeCollectionName="main"> + <cms:editBar /> + <cms:includeTemplate /> + </cms:contentNodeIterator> + <cms:newBar contentNodeCollectionName="main" paragraph="samples-contextmenu" /> + + <c:if test="${cmsfn:canEdit()}"> + <ul id="defaultContextMenu" class="contextMenu"> + <li class="menuText"><a href="#text">Edit text</a></li> + </ul> + </c:if> + </body> + </html> +</jsp:root> \ No newline at end of file Property changes on: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-files/templates/samples-contextmenu/template.jsp ___________________________________________________________________ Added: svn:mime-type + text/xml Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/css/img/menu-text.png =================================================================== (Binary files differ) Property changes on: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/css/img/menu-text.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/css/jquery.contextMenu.css =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/css/jquery.contextMenu.css (rev 0) +++ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/css/jquery.contextMenu.css 2010-05-18 13:13:34 UTC (rev 2477) @@ -0,0 +1,50 @@ +/* Generic context menu styles */ +.contextMenu { + position: absolute; + width: 150px; + z-index: 99999; + border: solid 1px #CCC; + background: #EEE; + padding: 0px; + margin: 0px; + display: none; +} + +.contextMenu LI { + list-style: none; + padding: 0px; + margin: 0px; +} + +.contextMenu A { + color: #333; + text-decoration: none; + display: block; + line-height: 20px; + height: 20px; + background-position: 6px center; + background-repeat: no-repeat; + outline: none; + padding: 1px 5px; + padding-left: 28px; +} + +.contextMenu LI.hover A { + color: #FFF; + background-color: #3399FF; +} + +.contextMenu LI.disabled A { + color: #AAA; + cursor: default; +} + +.contextMenu LI.hover.disabled A { + background-color: transparent; +} + +.contextMenu LI.separator { + border-top: solid 1px #CCC; +} + +.contextMenu LI.menuText A { background-image: url(img/menu-text.png); } Property changes on: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/css/jquery.contextMenu.css ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/js/jquery-1.4.2.min.js =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/js/jquery-1.4.2.min.js (rev 0) +++ trunk/openutils-mgnlcontextmenu/src/main/resources/mgnl-resources/contextmenu/js/jquery-1.4.2.min.js 2010-05-18 13:13:34 UTC (rev 2477) @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i? +e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r= +j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g, +"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e= +true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)|| +c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded", +L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype, +"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+ +a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f], +d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]=== +a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&& +!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari= +true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ", +i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ", +" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className= +this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i= +e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!= +null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else fo... [truncated message content] |