{
"info": {
"author": "RedTurtle Technology",
"author_email": "sviluppoplone@redturtle.net",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Framework :: Plone",
"Programming Language :: JavaScript",
"Programming Language :: Python",
"Topic :: Software Development :: User Interfaces"
],
"description": ".. contents:: **Table of contents**\n\nDocumentation\n=============\n\nThis product load into your Plone site the *portlettabber* `jQuery`__ plugin. Before begin to look and\nsearch in the official `jQuery plugin repository`__ for this and waste your time, you must know that the\nplugin has been developed specifically for Plone even if you can use simply the Javascript code for other\nprojects (*maybe someday I will register this as an official jQuery plugin*).\n\n__ http://jquery.com/\n__ http://plugins.jquery.com/\n\nWhat can I do with it?\n----------------------\n\nThe products *try* to make simple an uncommon (and not-so-simple) task: you can use this to generate\non-the-fly a new portlet with a *tab* looks just using Javascript.\nThe new portlet will store inside contents grabbed and stolen from other existing portlets inside the\npage.\n\nOriginal portlets are removed by this operation. Why? Because in this way:\n\n* you have no additional portlets if Javascript is disabled\n* you see only the new generated portlets for Javascript enabled browsers\n\nHow the new portlet looks like?\n-------------------------------\n\nThe visual effect is similar to the one that Plone use for tabbing form's fieldsets. You have selectable\nheaders that can be clicked for showing related subelements.\n\n.. table:: The effect of collective.portettabber inside Plone\n\n +------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+------------------------------------------------------------------+ \n | | | |\n | .. figure:: http://keul.it/images/plone/portlettabber-no-js.png | .. figure:: http://keul.it/images/plone/portlettabber-tab1.png | .. figure:: http://keul.it/images/plone/portlettabber-tab2.png |\n | :scale: 50 | :scale: 50 | :scale: 50 |\n | :alt: No javascript, or no plugin preview | :alt: First tab selected preview | :alt: Second tab selected preview |\n | | | |\n | This is the portlet column without using the portlettabber plugin (or with Javascript disabled) | First tab selected | ...and second tab selected |\n | | | |\n +------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+------------------------------------------------------------------+\n\nHow to use?\n-----------\n\nThis product is targeted on developers, so right now you need to have some basic *jQuery/Javascript\nknowledge* and you must develop your own piece of product for Plone.\n\nYou need to register your own (maybe simple) Javascript source in your Plone product/theme and use in this\nway the portlettabber power.\n\nHere an example for the jsregistry.xml GenericSetup import step for your Javascript::\n\n \n\nWhat you need to put inside? The most simple example I can find (and that works for Plone Classic and Sunburst theme)\nis this::\n\n jq(document).ready(function() {\n try {\n var generatedPortlet = jq.tabbedportlet();\n\n generatedPortlet.makeTab(\"#portal-column-two .portletNews\");\n generatedPortlet.makeTab(\"#portal-column-two .portlet-foo\");\n jq(\"#portal-column-two div:not(.managePortletsLink):last\").prepend(generatedPortlet.getPortlet());\n } catch(error) {\n if (window.console)\n window.console.log(\"Something goes wrong with portlettabber: \" + error.message);\n }\n });\n\nAt load time, you can create a new *portlettabber object*. This object have some features you will need to\nrely on for obtaining the new portlet.\n\nAfter obtaining the *generatedPortlet* object, you can use the public *makePortlet* method to take an\nexisting portlet from the page and put it inside a tab.\n\nAbove we are doing it for two portlet, one for every *makeTab* call. The parameter you must provide to\nthis method must be a *DOM element* or a jQuery selector (in this case if it wrap more that one element,\nonly the first is used).\n\nThe *try/catch* statement raise the fault tolerance in case something goes wrong (a developer can still\nsee what's the problem on his Firebug/Safari/Chrome console).\n\nYou can change the \"*prepend*\" call above to \"*append*\" to put the generated portlet as last item in the column. The\njQuery expression given take care to always keep the \"Manage portlets\" link at the end of the column.\n\nYou can do a lot more (if you know what you are doing, you can move your portlet where you want inside the page).\nPlease, check the `jQuery reference`__ for know how.\n\n__ http://api.jquery.com/category/manipulation/\n\nStructure\n---------\n\nThe plugin make some assumptions on the structure of the portlet. You can however customize it a little\n(see below).\n\nThe final result will be an XHTML structure like this::\n\n \n \n \n {same content as in the old portlet, I mean all HTML and DOM events}\n \n [...]\n \n\nCan I use this for other (X)HTML structure?\n-------------------------------------------\n\nYes! You can customize the following:\n\n `portletNodeType` (String)\n HTML element that store a portlet. Default 'dl'\n `portletNodeClasses` (Array)\n list of CSS classes that must be added to the generated portlet but also\n found in the portlet that became a new tab. Default 'portlet'\n `portletNodeAdditionalClasses` (Array)\n additional list of classes that will be added to the generated\n portlet (use this if you want to add to tabbed portlet some new classes).\n Default 'portletTabGenerated'\n `portletHeaderNodeType` (String)\n the element used to generate the portlet header (and also must be the\n header of all portlet that became new tab. Default 'dt'\n `portletHeaderNodeClasses` (Array)\n list of CSS classes that must be added to the generated header but\n also found in the header of the portlet that became a new tab. Default 'portletHeader'\n `portletDataNodeType` (String)\n the element used to generate the portlet element (and also must be the\n element type inside all portlet that became new tab. Default 'dd'\n `portletDataNodeClasses` (Array)\n array of classes for portletDataNodeType elements that are valid to be\n used as elements inside the new portlet. Elements that aren't using at least one of those CSS classes\n will not be moved to the tab and simply disappear from the page after makeTab() call.\n Default 'portletItem' and 'portletFooter'\n `id` (String)\n an optional HTML id to be added to the portlet. Default *null*.\n\nTo use options above just write sentences like this::\n\n jq(document).ready(function() {\n var generatedPortlet = jq.tabbedportlet({portletNodeClasses: ['portlet','notBasicClass']});\n ...\n });\n\nIn this way you can use the default value for all options but set a custom value for one or more of them.\n\nSome more options available for new tabs?\n-----------------------------------------\n\nThe *makeTab* method can rely with some additional parameters:\n\n `cutChars` (Integer)\n When label stolen from the tabbed portlet can be too long, put there the maximum number of characters\n after which the tab header will only display this number on characters followed by the *…*.\n Default 0 (all the text found in old portlet)\n `label` (String)\n Show this label, not the one you'll find inside the grabbed header.\n Default *null* (use original text found in old portlet)\n `select` (Boolean)\n Select this tab as default.\n Default *false* (the first tab added is selected)\n\nTo use one or more of those::\n\n jq(document).ready(function() {\n ...\n generatedPortlet.makeTab(\"#portal-column-two .portletNews\", {label: 'Hello!', select: true});\n ...\n });\n\nDevelopment status\n==================\n\nMaybe that there are a lot of use-cases where it can fail right now... for example there aren't much\nerror check.\nUsing a try/catch statement around your tab actions avoid problems...\n\nFuture versions probably will be a more common jQuery plugin (with chaining purpose).\n\nCredits\n=======\n\nDeveloped with the support of `Regione Emilia Romagna`__; Regione Emilia Romagna supports\nthe `PloneGov initiative`__.\n\n__ http://www.regione.emilia-romagna.it/\n__ http://www.plonegov.it/\n\nAuthors\n=======\n\nThis product was developed by RedTurtle Technology team.\n\n.. image:: http://www.redturtle.net/redturtle_banner.png\n :alt: RedTurtle Technology Site\n :target: http://www.redturtle.net/\n\n\nChangelog\n=========\n\n0.2.0 (2010-12-09)\n------------------\n\n* Changed documentation examples to works also with Plone 4 and Sunburst theme [keul]\n* Added CSS rules to see tab effect also on Sunburts theme [keul]\n* Javascript cleanup with JSLint [keul]\n* Uninstall properly [keul]\n* Some cleanup in the egg structure [keul]\n\n0.1.0 (2010-05-17)\n------------------\n\n* Grabbed tab label was ignoring text if this was in the table header root [keul]\n* A better example in README file, adding try/catch statement [keul]\n\n0.0.2a (2010-05-05)\n-------------------\n\n* Removed debug stuff that grab the news item portlet [keul]\n* Do not show generated portlet if the portlet is empty [keul]\n\n0.0.1a (2010-05-02)\n-------------------\n\n* Initial (alpha) release",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://plone.org/products/collective.portlettabber",
"keywords": "plone plonegov tab portlet jquery",
"license": "GPL",
"maintainer": null,
"maintainer_email": null,
"name": "collective.portlettabber",
"package_url": "https://pypi.org/project/collective.portlettabber/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/collective.portlettabber/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "http://plone.org/products/collective.portlettabber"
},
"release_url": "https://pypi.org/project/collective.portlettabber/0.2.0/",
"requires_dist": null,
"requires_python": null,
"summary": "A jQuery plugin for Plone layouts that merge portlets together obtaining a single portlet with tabs",
"version": "0.2.0"
},
"last_serial": 1771621,
"releases": {
"0.0.1a": [
{
"comment_text": "",
"digests": {
"md5": "3f5e951969ffb8b7dbcb1abaec58d304",
"sha256": "b16776955268e51a3daeea4326aa7f7da9522f0c8a6d9815f3f931499f636cfb"
},
"downloads": -1,
"filename": "collective.portlettabber-0.0.1a-py2.4.egg",
"has_sig": false,
"md5_digest": "3f5e951969ffb8b7dbcb1abaec58d304",
"packagetype": "bdist_egg",
"python_version": "2.4",
"requires_python": null,
"size": 12839,
"upload_time": "2010-05-02T13:56:13",
"url": "https://files.pythonhosted.org/packages/53/3c/f653bef6d7f81f2966278996c06366a19db70f63fab07e016a456cabb209/collective.portlettabber-0.0.1a-py2.4.egg"
},
{
"comment_text": "",
"digests": {
"md5": "bdb88bf2fce84a7da6845f0659f06cfb",
"sha256": "8e7836cf9f715cb576d267756a62715ecef2e41e8a18098426f33cf1bbff132f"
},
"downloads": -1,
"filename": "collective.portlettabber-0.0.1a.tar.gz",
"has_sig": false,
"md5_digest": "bdb88bf2fce84a7da6845f0659f06cfb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18370,
"upload_time": "2010-05-02T13:56:12",
"url": "https://files.pythonhosted.org/packages/b1/74/c61c1250d924f6a18ed9658e5578f2671c46213954a82044ba84e31095a8/collective.portlettabber-0.0.1a.tar.gz"
}
],
"0.0.2a": [
{
"comment_text": "",
"digests": {
"md5": "c73717ecc7fe31c4abef31b1875476db",
"sha256": "fbbe5c16402c94030060b27cab35be1abfd53e5683c5059f8d5e9ec35440764b"
},
"downloads": -1,
"filename": "collective.portlettabber-0.0.2a.tar.gz",
"has_sig": false,
"md5_digest": "c73717ecc7fe31c4abef31b1875476db",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18806,
"upload_time": "2010-05-05T15:54:17",
"url": "https://files.pythonhosted.org/packages/75/1a/479f659426dc6b34326d27e301bd97370418a3ce510dc66e7898c58e3c47/collective.portlettabber-0.0.2a.tar.gz"
}
],
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "7015973271f47ef1251528f32d136e3d",
"sha256": "a01f39337a8e06530404d74d5ca8ae34db8fd0f4ae6fb53f939149ec0dc27fb7"
},
"downloads": -1,
"filename": "collective.portlettabber-0.1.0-py2.4.egg",
"has_sig": false,
"md5_digest": "7015973271f47ef1251528f32d136e3d",
"packagetype": "bdist_egg",
"python_version": "2.4",
"requires_python": null,
"size": 12969,
"upload_time": "2010-05-17T12:51:29",
"url": "https://files.pythonhosted.org/packages/c6/26/2a8734f0a1d2d8e79c30dea52367dfea27fd637e28e7951ff302fce30b7f/collective.portlettabber-0.1.0-py2.4.egg"
},
{
"comment_text": "",
"digests": {
"md5": "73904a810a94a0941be976782b56b90b",
"sha256": "25f0b6ffc6b4f6474326450276b5906eea196cfb6ec871115c5e04675936b44c"
},
"downloads": -1,
"filename": "collective.portlettabber-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "73904a810a94a0941be976782b56b90b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 19231,
"upload_time": "2010-05-17T12:51:28",
"url": "https://files.pythonhosted.org/packages/4c/30/8ee2835acb96583f94e249bd762756143ba46b54666d68e8698605588935/collective.portlettabber-0.1.0.tar.gz"
}
],
"0.2.0": [
{
"comment_text": "",
"digests": {
"md5": "f75f6c8aad0fad645accd7799957f195",
"sha256": "d1a8ddfc9cabb2ce03a6ebd689f11ccc4d645ba9e73053568336946363898409"
},
"downloads": -1,
"filename": "collective.portlettabber-0.2.0-py2.4.egg",
"has_sig": false,
"md5_digest": "f75f6c8aad0fad645accd7799957f195",
"packagetype": "bdist_egg",
"python_version": "2.4",
"requires_python": null,
"size": 13614,
"upload_time": "2010-12-09T11:17:11",
"url": "https://files.pythonhosted.org/packages/84/b8/cec332ae1f6811066df7be08d96dd6ac5dbf9d124a7c2389bf3d165c1e66/collective.portlettabber-0.2.0-py2.4.egg"
},
{
"comment_text": "",
"digests": {
"md5": "b10e6633e143b39942f242feaaa8ca34",
"sha256": "3bf0187a2a981395e40561e0edf7cba9cec0fede8c7508c377075df3e2f82aa3"
},
"downloads": -1,
"filename": "collective.portlettabber-0.2.0-py2.6.egg",
"has_sig": false,
"md5_digest": "b10e6633e143b39942f242feaaa8ca34",
"packagetype": "bdist_egg",
"python_version": "2.6",
"requires_python": null,
"size": 13696,
"upload_time": "2010-12-09T11:18:02",
"url": "https://files.pythonhosted.org/packages/64/27/bad318df1bee3c8f5b044ab7761a029048fff8a214d3fa439c478712da51/collective.portlettabber-0.2.0-py2.6.egg"
},
{
"comment_text": "",
"digests": {
"md5": "247305f41d05984e68a9ff7aa55dc1be",
"sha256": "cd0831c8423da69c45d4aae61b04f4995aaae51889fe14d9eb2db37142137f24"
},
"downloads": -1,
"filename": "collective.portlettabber-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "247305f41d05984e68a9ff7aa55dc1be",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20436,
"upload_time": "2010-12-09T11:17:10",
"url": "https://files.pythonhosted.org/packages/6d/bb/a331db6bff67e81108bb602c25c95496fcaa409f63eb0aa38f0d4fb34595/collective.portlettabber-0.2.0.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "f75f6c8aad0fad645accd7799957f195",
"sha256": "d1a8ddfc9cabb2ce03a6ebd689f11ccc4d645ba9e73053568336946363898409"
},
"downloads": -1,
"filename": "collective.portlettabber-0.2.0-py2.4.egg",
"has_sig": false,
"md5_digest": "f75f6c8aad0fad645accd7799957f195",
"packagetype": "bdist_egg",
"python_version": "2.4",
"requires_python": null,
"size": 13614,
"upload_time": "2010-12-09T11:17:11",
"url": "https://files.pythonhosted.org/packages/84/b8/cec332ae1f6811066df7be08d96dd6ac5dbf9d124a7c2389bf3d165c1e66/collective.portlettabber-0.2.0-py2.4.egg"
},
{
"comment_text": "",
"digests": {
"md5": "b10e6633e143b39942f242feaaa8ca34",
"sha256": "3bf0187a2a981395e40561e0edf7cba9cec0fede8c7508c377075df3e2f82aa3"
},
"downloads": -1,
"filename": "collective.portlettabber-0.2.0-py2.6.egg",
"has_sig": false,
"md5_digest": "b10e6633e143b39942f242feaaa8ca34",
"packagetype": "bdist_egg",
"python_version": "2.6",
"requires_python": null,
"size": 13696,
"upload_time": "2010-12-09T11:18:02",
"url": "https://files.pythonhosted.org/packages/64/27/bad318df1bee3c8f5b044ab7761a029048fff8a214d3fa439c478712da51/collective.portlettabber-0.2.0-py2.6.egg"
},
{
"comment_text": "",
"digests": {
"md5": "247305f41d05984e68a9ff7aa55dc1be",
"sha256": "cd0831c8423da69c45d4aae61b04f4995aaae51889fe14d9eb2db37142137f24"
},
"downloads": -1,
"filename": "collective.portlettabber-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "247305f41d05984e68a9ff7aa55dc1be",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20436,
"upload_time": "2010-12-09T11:17:10",
"url": "https://files.pythonhosted.org/packages/6d/bb/a331db6bff67e81108bb602c25c95496fcaa409f63eb0aa38f0d4fb34595/collective.portlettabber-0.2.0.tar.gz"
}
]
}