Added bulk updater to get snippets area. Added contributor details to snippets table. Imporved the installer to update the library matchup of old snippets. gh-92

This commit is contained in:
Llewellyn van der Merwe 2017-11-20 14:35:30 +02:00
parent eb43f1e3bc
commit 5ae67c1ecc
No known key found for this signature in database
GPG Key ID: CAD7B16D27AF28C5
54 changed files with 1817 additions and 1242 deletions

View File

@ -10,7 +10,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo
Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will safe you lots of time and money. A real must have!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.6.4) with **ALL** its features and **ALL** concepts totally open-source and free!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.6.5) with **ALL** its features and **ALL** concepts totally open-source and free!
> Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45)
@ -111,12 +111,12 @@ Component Builder is mapped as a component in itself on my local development env
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](http://vdm.bz/component-builder)
+ *First Build*: 30th April, 2015
+ *Last Build*: 18th November, 2017
+ *Version*: 2.6.4
+ *Last Build*: 20th November, 2017
+ *Version*: 2.6.5
+ *Copyright*: Copyright (C) 2015. All Rights Reserved
+ *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
+ *Line count*: **168070**
+ *File count*: **1070**
+ *Line count*: **168378**
+ *File count*: **1073**
+ *Folder count*: **176**
> This **component** was build with a Joomla [Automated Component Builder](http://vdm.bz/component-builder).

View File

@ -10,7 +10,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo
Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will safe you lots of time and money. A real must have!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.6.4) with **ALL** its features and **ALL** concepts totally open-source and free!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.6.5) with **ALL** its features and **ALL** concepts totally open-source and free!
> Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45)
@ -111,12 +111,12 @@ Component Builder is mapped as a component in itself on my local development env
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](http://vdm.bz/component-builder)
+ *First Build*: 30th April, 2015
+ *Last Build*: 18th November, 2017
+ *Version*: 2.6.4
+ *Last Build*: 20th November, 2017
+ *Version*: 2.6.5
+ *Copyright*: Copyright (C) 2015. All Rights Reserved
+ *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
+ *Line count*: **168070**
+ *File count*: **1070**
+ *Line count*: **168378**
+ *File count*: **1073**
+ *Folder count*: **176**
> This **component** was build with a Joomla [Automated Component Builder](http://vdm.bz/component-builder).

View File

@ -144,6 +144,7 @@
<action name="component_updates.edit.own" title="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_OWN" description="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_OWN_DESC" />
<action name="component_updates.edit.state" title="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_STATE" description="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_STATE_DESC" />
<action name="component_updates.version" title="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_VERSION" description="COM_COMPONENTBUILDER_COMPONENTS_UPDATES_EDIT_VERSION_DESC" />
<action name="custom_admin_view.get_snippets" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_GET_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_GET_SNIPPETS_BUTTON_ACCESS_DESC" />
<action name="custom_admin_view.access" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_ACCESS_DESC" />
<action name="custom_admin_view.batch" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_BATCH_USE_DESC" />
<action name="custom_admin_view.dashboard_add" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_DASHBOARD_ADD" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_DASHBOARD_ADD_DESC" />
@ -226,7 +227,11 @@
<action name="ftp.import" title="COM_COMPONENTBUILDER_FTPS_IMPORT" description="COM_COMPONENTBUILDER_FTPS_IMPORT_DESC" />
<action name="ftp.submenu" title="COM_COMPONENTBUILDER_FTPS_SUBMENU" description="COM_COMPONENTBUILDER_FTPS_SUBMENU_DESC" />
<action name="get_snippets.access" title="COM_COMPONENTBUILDER_GET_SNIPPETS_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_ACCESS_DESC" />
<action name="get_snippets.custom_admin_views" title="COM_COMPONENTBUILDER_GET_SNIPPETS_CUSTOM_ADMIN_VIEWS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_CUSTOM_ADMIN_VIEWS_BUTTON_ACCESS_DESC" />
<action name="get_snippets.layouts" title="COM_COMPONENTBUILDER_GET_SNIPPETS_LAYOUTS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_LAYOUTS_BUTTON_ACCESS_DESC" />
<action name="get_snippets.site_views" title="COM_COMPONENTBUILDER_GET_SNIPPETS_SITE_VIEWS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_SITE_VIEWS_BUTTON_ACCESS_DESC" />
<action name="get_snippets.snippets" title="COM_COMPONENTBUILDER_GET_SNIPPETS_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_SNIPPETS_BUTTON_ACCESS_DESC" />
<action name="get_snippets.templates" title="COM_COMPONENTBUILDER_GET_SNIPPETS_TEMPLATES_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_GET_SNIPPETS_TEMPLATES_BUTTON_ACCESS_DESC" />
<action name="help_document.access" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_ACCESS" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_ACCESS_DESC" />
<action name="help_document.batch" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_BATCH_USE" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_BATCH_USE_DESC" />
<action name="help_document.create" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_CREATE" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_CREATE_DESC" />
@ -281,6 +286,7 @@
<action name="language.export" title="COM_COMPONENTBUILDER_LANGUAGES_EXPORT" description="COM_COMPONENTBUILDER_LANGUAGES_EXPORT_DESC" />
<action name="language.import" title="COM_COMPONENTBUILDER_LANGUAGES_IMPORT" description="COM_COMPONENTBUILDER_LANGUAGES_IMPORT_DESC" />
<action name="language.submenu" title="COM_COMPONENTBUILDER_LANGUAGES_SUBMENU" description="COM_COMPONENTBUILDER_LANGUAGES_SUBMENU_DESC" />
<action name="layout.get_snippets" title="COM_COMPONENTBUILDER_LAYOUT_GET_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_LAYOUT_GET_SNIPPETS_BUTTON_ACCESS_DESC" />
<action name="layout.access" title="COM_COMPONENTBUILDER_LAYOUTS_ACCESS" description="COM_COMPONENTBUILDER_LAYOUTS_ACCESS_DESC" />
<action name="layout.batch" title="COM_COMPONENTBUILDER_LAYOUTS_BATCH_USE" description="COM_COMPONENTBUILDER_LAYOUTS_BATCH_USE_DESC" />
<action name="layout.dashboard_add" title="COM_COMPONENTBUILDER_LAYOUTS_DASHBOARD_ADD" description="COM_COMPONENTBUILDER_LAYOUTS_DASHBOARD_ADD_DESC" />
@ -297,6 +303,7 @@
<action name="library.edit.own" title="COM_COMPONENTBUILDER_LIBRARIES_EDIT_OWN" description="COM_COMPONENTBUILDER_LIBRARIES_EDIT_OWN_DESC" />
<action name="library.edit.state" title="COM_COMPONENTBUILDER_LIBRARIES_EDIT_STATE" description="COM_COMPONENTBUILDER_LIBRARIES_EDIT_STATE_DESC" />
<action name="library.version" title="COM_COMPONENTBUILDER_LIBRARIES_EDIT_VERSION" description="COM_COMPONENTBUILDER_LIBRARIES_EDIT_VERSION_DESC" />
<action name="site_view.get_snippets" title="COM_COMPONENTBUILDER_SITE_VIEW_GET_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_SITE_VIEW_GET_SNIPPETS_BUTTON_ACCESS_DESC" />
<action name="site_view.access" title="COM_COMPONENTBUILDER_SITE_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_SITE_VIEWS_ACCESS_DESC" />
<action name="site_view.batch" title="COM_COMPONENTBUILDER_SITE_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_SITE_VIEWS_BATCH_USE_DESC" />
<action name="site_view.dashboard_add" title="COM_COMPONENTBUILDER_SITE_VIEWS_DASHBOARD_ADD" description="COM_COMPONENTBUILDER_SITE_VIEWS_DASHBOARD_ADD_DESC" />
@ -323,6 +330,7 @@
<action name="snippet.export" title="COM_COMPONENTBUILDER_SNIPPETS_EXPORT" description="COM_COMPONENTBUILDER_SNIPPETS_EXPORT_DESC" />
<action name="snippet.import" title="COM_COMPONENTBUILDER_SNIPPETS_IMPORT" description="COM_COMPONENTBUILDER_SNIPPETS_IMPORT_DESC" />
<action name="snippet.submenu" title="COM_COMPONENTBUILDER_SNIPPETS_SUBMENU" description="COM_COMPONENTBUILDER_SNIPPETS_SUBMENU_DESC" />
<action name="template.get_snippets" title="COM_COMPONENTBUILDER_TEMPLATE_GET_SNIPPETS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_TEMPLATE_GET_SNIPPETS_BUTTON_ACCESS_DESC" />
<action name="template.access" title="COM_COMPONENTBUILDER_TEMPLATES_ACCESS" description="COM_COMPONENTBUILDER_TEMPLATES_ACCESS_DESC" />
<action name="template.batch" title="COM_COMPONENTBUILDER_TEMPLATES_BATCH_USE" description="COM_COMPONENTBUILDER_TEMPLATES_BATCH_USE_DESC" />
<action name="template.dashboard_add" title="COM_COMPONENTBUILDER_TEMPLATES_DASHBOARD_ADD" description="COM_COMPONENTBUILDER_TEMPLATES_DASHBOARD_ADD_DESC" />

View File

@ -107,5 +107,14 @@ class ComponentbuilderControllerCustom_admin_views extends JControllerAdmin
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=custom_admin_views', false), $message, 'error');
return;
}
}
public function getSnippets()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// redirect to the import snippets custom admin view
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=get_snippets', false));
return;
}
}

View File

@ -60,4 +60,40 @@ class ComponentbuilderControllerGet_snippets extends JControllerAdmin
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=snippets', false));
return;
}
public function openSiteViews()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// redirect to the snippets admin view
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=site_views', false));
return;
}
public function openCustomAdminViews()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// redirect to the snippets admin view
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=custom_admin_views', false));
return;
}
public function openTemplates()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// redirect to the snippets admin view
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=templates', false));
return;
}
public function openLayouts()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// redirect to the snippets admin view
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=layouts', false));
return;
}
}

View File

@ -107,5 +107,14 @@ class ComponentbuilderControllerLayouts extends JControllerAdmin
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=layouts', false), $message, 'error');
return;
}
}
public function getSnippets()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// redirect to the import snippets custom admin view
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=get_snippets', false));
return;
}
}

View File

@ -107,5 +107,14 @@ class ComponentbuilderControllerSite_views extends JControllerAdmin
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=site_views', false), $message, 'error');
return;
}
}
public function getSnippets()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// redirect to the import snippets custom admin view
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=get_snippets', false));
return;
}
}

View File

@ -146,8 +146,32 @@ class ComponentbuilderControllerSnippets extends JControllerAdmin
// get the data to export
if ($model->shareSnippets($pks))
{
// Redirect to the list screen with success
$message = JText::_('COM_COMPONENTBUILDER_SNIPPETS_HAVE_BEEN_EXPORTED_AND_ZIPPED_READY_TO_SHARE_PLEASE_WATCH_THE_FOLLOWING_A_HREF_TARGET_BLANKVIDEO_TUTORIALA_THAT_SHOWS_YOU_HOW_TO_SHARE_THESE_SNIPPETS_WITH_THE_REST_OF_THE_JCB_COMMUNITY');
// Message of successful build
if (count($pks) > 1)
{
$message = '<h1>' . JText::_('COM_COMPONENTBUILDER_THE_SNIPPETS_WERE_SUCCESSFULLY_EXPORTED') . '</h1>';
$message .= '<p>' . JText::sprintf('To share these snippets with the rest of the JCB community,');
}
else
{
$message = '<h1>' . JText::_('COM_COMPONENTBUILDER_THE_SNIPPET_WAS_SUCCESSFULLY_EXPORTED') . '</h1>';
$message .= '<p>' . JText::sprintf('To share this snippet with the rest of the JCB community,');
}
$message .= JText::sprintf('COM_COMPONENTBUILDER_YOU_WILL_NEED_TO_KNOW_HOW_S_WORKS_BASIC_YOU_WILL_ALSO_NEED_A_S_ACCOUNT_AND_KNOW_HOW_TO_MAKE_A_PULL_REQUEST_ON_GITHUB',
'<a href="https://try.github.io" target="_blank">git</a>',
'<a href="https://github.com/join" target="_blank">github.com</a>') . '</p>';
$message .= '<h2>' . JText::_('COM_COMPONENTBUILDER_NEED_HELP') . '</h2>';
$message .= '<ul>';
$message .= '<li>'.JText::sprintf('COM_COMPONENTBUILDER_GENERAL_OVERVIEW_OF_HOW_THINGS_WORK_BSB', '<a href="https://www.youtube.com" target="_blank">https://www.youtube.com</a>').'</li>';
$message .= '<li>'.JText::sprintf('COM_COMPONENTBUILDER_BASIC_TUTORIAL_ON_GIT_BSB', '<a href="https://www.udemy.com/git-quick-start/" target="_blank">https://www.udemy.com/git-quick-start/</a>').'</li>';
$message .= '<li>'.JText::sprintf('COM_COMPONENTBUILDER_GET_AN_ACCOUNT_WITH_GITHUB_BSB', '<a href="https://github.com/join" target="_blank">https://github.com/join</a>').'</li>';
$message .= '<li>'.JText::sprintf('COM_COMPONENTBUILDER_TUTORIAL_ON_FORKING_JCB_SNIPPETS_BSB', '<a href="https://www.youtube.com" target="_blank">https://www.youtube.com</a>').'</li>';
$message .= '<li>'.JText::sprintf('COM_COMPONENTBUILDER_TUTORIAL_ON_MAKING_A_PULL_REQUEST_BSB', '<a href="https://www.youtube.com" target="_blank">https://www.youtube.com</a>').'</li>';
$message .= '<li>'.JText::sprintf('COM_COMPONENTBUILDER_REPORT_AN_ISSUE_BSB', '<a href="https://github.com/vdm-io/Joomla-Component-Builder-Snippets/issues" target="_blank">https://github.com/vdm-io/Joomla-Component-Builder-Snippets/issues</a>').'</li>';
$message .= '</ul>';
$message .= '<h2>' . JText::_('COM_COMPONENTBUILDER_ZIPPED_FILE_LOCATION') . '</h2>';
$message .= '<p>' . JText::sprintf('COM_COMPONENTBUILDER_PATH_CODESCODE', $model->zipPath). '</p>';
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=snippets', false), $message);
return;
}

View File

@ -107,5 +107,14 @@ class ComponentbuilderControllerTemplates extends JControllerAdmin
$message = JText::_('COM_COMPONENTBUILDER_IMPORT_FAILED');
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=templates', false), $message, 'error');
return;
}
}
public function getSnippets()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// redirect to the import snippets custom admin view
$this->setRedirect(JRoute::_('index.php?option=com_componentbuilder&view=get_snippets', false));
return;
}
}

View File

@ -250,6 +250,75 @@ abstract class ComponentbuilderHelper
**/
protected static $params = false;
/**
* The local company details
**/
protected static $localCompany = array();
/**
* The snippet paths
**/
public static $snippetPath = 'https://raw.githubusercontent.com/vdm-io/Joomla-Component-Builder-Snippets/master/';
public static $snippetsPath = 'https://api.github.com/repos/vdm-io/Joomla-Component-Builder-Snippets/git/trees/master';
/**
* Get the snippet contributor details
*
* @param string $filename The file name
* @param string $type The type of file
*
* @return array On success the contributor details
*
*/
public static function getContributorDetails($filename, $type = 'snippet')
{
// start loading he contributor details
$contributor = array();
// get the path & content
switch ($type)
{
case 'snippet':
$path = $snippetPath.$filename;
// get the file if available
$content = self::getFileContents($path);
if (self::checkJson($content))
{
$content = json_decode($content, true);
}
break;
default:
// only allow types that are being targeted
return false;
break;
}
// see if we have content and all needed details
if (isset($content) && self::checkArray($content)
&& isset($content['contributor_company'])
&& isset($content['contributor_name'])
&& isset($content['contributor_email'])
&& isset($content['contributor_website']))
{
// got the details from file
return array('contributor_company' => $content['contributor_company'] ,'contributor_name' => $content['contributor_name'], 'contributor_email' => $content['contributor_email'], 'contributor_website' => $content['contributor_website'], 'origin' => 'file');
}
// get the global settings
if (!self::checkObject(self::$params))
{
self::$params = JComponentHelper::getParams('com_componentbuilder');
}
// get the global company details
if (!self::checkArray(self::$localCompany))
{
// Set the person sharing information (default VDM ;)
self::$localCompany['company'] = self::$params->get('export_company', 'Vast Development Method');
self::$localCompany['owner'] = self::$params->get('export_owner', 'Llewellyn van der Merwe');
self::$localCompany['email'] = self::$params->get('export_email', 'joomla@vdm.io');
self::$localCompany['website'] = self::$params->get('export_website', 'https://www.vdm.io/');
}
// default global
return array('contributor_company' => self::$localCompany['company'] ,'contributor_name' => self::$localCompany['owner'], 'contributor_email' => self::$localCompany['email'], 'contributor_website' => self::$localCompany['website'], 'origin' => 'global');
}
/**
* get all component IDs
*/

View File

@ -857,6 +857,7 @@ COM_COMPONENTBUILDER_ADMIN_VIEW_YOUTUBE="Youtube"
COM_COMPONENTBUILDER_ADMIN_VIEW_ZOOM_IN="Zoom In"
COM_COMPONENTBUILDER_ADMIN_VIEW_ZOOM_OUT="Zoom Out"
COM_COMPONENTBUILDER_AHEAD="Ahead"
COM_COMPONENTBUILDER_AHEAD_MEANS_YOUR_BLOCAL_SNIPPETB_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_HAS_A_BNEWER_MODIFIED_DATEB_THEN_THE_COMMUNITY_SNIPPET_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE="Ahead means your <b>local snippet</b> (with the same name, library and type) has a <b>newer modified date</b> then the community snippet (with the same name, library and type)."
COM_COMPONENTBUILDER_ALIAS="Alias"
COM_COMPONENTBUILDER_ALIGNMENT="Alignment"
COM_COMPONENTBUILDER_ALL="All"
@ -885,7 +886,10 @@ COM_COMPONENTBUILDER_BACKUP_FAILED_PLEASE_TRY_AGAIN_IF_THE_ERROR_CONTINUE_PLEASE
COM_COMPONENTBUILDER_BACKUP_LOCAL_DATA_FIRST="Backup Local Data First"
COM_COMPONENTBUILDER_BACKUP_WAS_DONE_SUCCESSFULLY="Backup was done successfully"
COM_COMPONENTBUILDER_BASIC_METHOD="Basic Method"
COM_COMPONENTBUILDER_BASIC_TUTORIAL_ON_GIT_BSB="Basic Tutorial on git: <b>%s</b>"
COM_COMPONENTBUILDER_BCUSTOM_FILESB_NOT_MOVE_TO_CORRECT_LOCATION="<b>Custom files</b> not move to correct location!"
COM_COMPONENTBUILDER_BEHIND="Behind"
COM_COMPONENTBUILDER_BEHIND_MEANS_YOUR_BLOCAL_SNIPPETB_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_HAS_A_BOLDER_MODIFIED_DATEB_THEN_THE_COMMUNITY_SNIPPET_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE="Behind means your <b>local snippet</b> (with the same name, library and type) has a <b>older modified date</b> then the community snippet (with the same name, library and type)."
COM_COMPONENTBUILDER_BE_CAUTIOUS_DO_NOT_CONTINUE_UNLESS_YOU_TRUST_THE_ORIGIN_OF_THIS_PACKAGE="Be cautious! Do not continue unless you trust the origin of this package!"
COM_COMPONENTBUILDER_BFIELD_TYPEB_IDS_MISMATCH_IN_BSB="<b>Field type</b> id:%s mismatch in <b>%s</b>."
COM_COMPONENTBUILDER_BFIELD_TYPEB_NOT_SET_FOR_BSB="<b>Field type</b> not set for <b>%s</b>."
@ -899,6 +903,7 @@ COM_COMPONENTBUILDER_BSB_HAS_BEEN_IMPORTED="<b>%s</b> has been imported!"
COM_COMPONENTBUILDER_BSB_HAS_BEEN_UPDATED="<b>%s</b> has been updated!"
COM_COMPONENTBUILDER_BULK="Bulk"
COM_COMPONENTBUILDER_BULK_GET_ALL_NEW_SNIPPETS="Bulk Get All New Snippets"
COM_COMPONENTBUILDER_BULK_TOOLS="Bulk Tools"
COM_COMPONENTBUILDER_BULK_UPDATE_ALL_AHEAD_SNIPPETS="Bulk Update All Ahead Snippets"
COM_COMPONENTBUILDER_BULK_UPDATE_ALL_AVAILABLE_SNIPPETS="Bulk Update All Available Snippets"
COM_COMPONENTBUILDER_BULK_UPDATE_ALL_DIVERGED_SNIPPETS="Bulk Update All Diverged Snippets"
@ -2588,6 +2593,8 @@ COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_FOLDER_THREE="Folder 3"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_FORWARD_CIRCLE="Forward Circle"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_FORWARD_TWO="Forward 2"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_GENERIC="Generic"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_GET_SNIPPETS_BUTTON_ACCESS="Custom Admin View Get Snippets Button Access"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_GET_SNIPPETS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the get snippets button."
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_GRID="Grid"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_GRID_TWO="Grid 2"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_HEALTH="Health"
@ -2614,7 +2621,6 @@ COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_KEY="Key"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_LAMP="Lamp"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_LAST="Last"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_LINK="Link"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_LINKED_COMPONENTS="Linked - Components"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_LIST="List"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_LIST_TWO="List 2"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_LOCATION="Location"
@ -3052,6 +3058,7 @@ COM_COMPONENTBUILDER_DEFAULT_VIEW="Default View"
COM_COMPONENTBUILDER_DESCRIPTION="Description"
COM_COMPONENTBUILDER_DETAILS="Details"
COM_COMPONENTBUILDER_DIVERGED="Diverged"
COM_COMPONENTBUILDER_DIVERGED_MEANS_YOUR_BLOCAL_SNIPPETB_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_HAS_A_BDIVERGEDB_FROM_THE_COMMUNITY_SNIPPET_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_IN_THAT_IT_DOES_NOT_HAVE_THE_SAME_BCREATIONB_OR_BMODIFIED_DATEB="Diverged means your <b>local snippet</b> (with the same name, library and type) has a <b>diverged</b> from the community snippet (with the same name, library and type) in that it does not have the same <b>creation</b> or <b>modified date</b>."
COM_COMPONENTBUILDER_DOES_THIS_PACKAGE_REQUIRE_A_KEY_TO_INSTALL="Does this package require a key to install"
COM_COMPONENTBUILDER_DOWNLOAD="download"
COM_COMPONENTBUILDER_DYNAMIC_GET="Dynamic Get"
@ -3378,6 +3385,8 @@ COM_COMPONENTBUILDER_EMEMAILEM_BSB="<em>Email:</em> <b>%s</b>"
COM_COMPONENTBUILDER_EMLICENSEEM_BSB="<em>License:</em> <b>%s</b>"
COM_COMPONENTBUILDER_EMOWNEREM_BSB="<em>Owner:</em> <b>%s</b>"
COM_COMPONENTBUILDER_EMWEBSITEEM_BSB="<em>Website:</em> <b>%s</b>"
COM_COMPONENTBUILDER_EQUAL="Equal"
COM_COMPONENTBUILDER_EQUAL_MEANS_THAT_THE_COMMUNITY_SNIPPET_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_AND_YOUR_LOCAL_SNIPPET_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_HAS_THE_SAME_BCREATIONB_AND_BMODIFIED_DATEB="Equal means that the community snippet (with the same name, library and type) and your local snippet (with the same name, library and type) has the same <b>creation</b> and <b>modified date</b>."
COM_COMPONENTBUILDER_ERROR_THE_PATH_HAS_A_MISMATCH_AND_COULD_THEREFORE_NOT_RETRIEVE_THE_SNIPPET_FROM_GITHUB="Error! The path has a mismatch and could therefore not retrieve the snippet from gitHub!"
COM_COMPONENTBUILDER_ERROR_THE_SNIPPET_IS_FAULTY_AND_COULD_NOT_BE_SAVED="Error! The snippet is faulty and could not be saved."
COM_COMPONENTBUILDER_ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THE_SNIPPETS="Error! You do not have access to the snippets."
@ -3782,14 +3791,24 @@ COM_COMPONENTBUILDER_FTP_STATUS="Status"
COM_COMPONENTBUILDER_FTP_VERSION_DESC="A count of the number of times this FTP has been revised."
COM_COMPONENTBUILDER_FTP_VERSION_LABEL="Revision"
COM_COMPONENTBUILDER_FULL_WIDTH_IN_TAB="Full Width in Tab"
COM_COMPONENTBUILDER_GENERAL_OVERVIEW_OF_HOW_THINGS_WORK_BSB="General overview of how things work: <b>%s</b>"
COM_COMPONENTBUILDER_GET_ALL_NEW_SNIPPETS="Get All New Snippets"
COM_COMPONENTBUILDER_GET_AN_ACCOUNT_WITH_GITHUB_BSB="Get an Account with gitHub: <b>%s</b>"
COM_COMPONENTBUILDER_GET_SNIPPET="Get snippet"
COM_COMPONENTBUILDER_GET_SNIPPETS="Get Snippets"
COM_COMPONENTBUILDER_GET_SNIPPETS_ACCESS="Get Snippets Access"
COM_COMPONENTBUILDER_GET_SNIPPETS_ACCESS_DESC=" Allows the users in this group to access get snippets."
COM_COMPONENTBUILDER_GET_SNIPPETS_CUSTOM_ADMIN_VIEWS_BUTTON_ACCESS="Get Snippets Custom Admin Views Button Access"
COM_COMPONENTBUILDER_GET_SNIPPETS_CUSTOM_ADMIN_VIEWS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the custom admin views button."
COM_COMPONENTBUILDER_GET_SNIPPETS_DESC="The compiler"
COM_COMPONENTBUILDER_GET_SNIPPETS_LAYOUTS_BUTTON_ACCESS="Get Snippets Layouts Button Access"
COM_COMPONENTBUILDER_GET_SNIPPETS_LAYOUTS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the layouts button."
COM_COMPONENTBUILDER_GET_SNIPPETS_SITE_VIEWS_BUTTON_ACCESS="Get Snippets Site Views Button Access"
COM_COMPONENTBUILDER_GET_SNIPPETS_SITE_VIEWS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the site views button."
COM_COMPONENTBUILDER_GET_SNIPPETS_SNIPPETS_BUTTON_ACCESS="Get Snippets Snippets Button Access"
COM_COMPONENTBUILDER_GET_SNIPPETS_SNIPPETS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the snippets button."
COM_COMPONENTBUILDER_GET_SNIPPETS_TEMPLATES_BUTTON_ACCESS="Get Snippets Templates Button Access"
COM_COMPONENTBUILDER_GET_SNIPPETS_TEMPLATES_BUTTON_ACCESS_DESC=" Allows the users in this group to access the templates button."
COM_COMPONENTBUILDER_GET_THE_KEY_FROM_BSB_FOR_A_CLASSBTN_BTNPRIMARY_HREFS_TARGET_BLANK_TITLEGET_A_KEY_FROM_SSA="Get the key from <b>%s</b> for <a class="btn btn-primary" href="%s" target="_blank" title="get a key from %s">%s</a>"
COM_COMPONENTBUILDER_GET_THE_SNIPPET_FROM_GITHUB_AND_INSTALL_IT_LOCALLY="Get the snippet from gitHub and install it locally"
COM_COMPONENTBUILDER_GET_THE_SNIPPET_FROM_GITHUB_AND_UPDATE_THE_LOCAL_VERSION="Get the snippet from gitHub and update the local version"
@ -3971,6 +3990,7 @@ COM_COMPONENTBUILDER_ISSUE="issue"
COM_COMPONENTBUILDER_IS_NOT_ONLY_FOUR_LISTRADIOCHECKBOXES="Is Not (only 4 list/radio/checkboxes)"
COM_COMPONENTBUILDER_IS_ONLY_FOUR_LISTRADIOCHECKBOXES="Is (only 4 list/radio/checkboxes)"
COM_COMPONENTBUILDER_JCB_COMMUNITY="JCB Community"
COM_COMPONENTBUILDER_JCB_COMMUNITY_SNIPPETS="JCB Community Snippets"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT="Joomla Component"
COM_COMPONENTBUILDER_JOOMLA_COMPONENTS="Joomla Components"
COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_ACCESS="Joomla Components Access"
@ -4655,6 +4675,8 @@ COM_COMPONENTBUILDER_LAYOUT_DYNAMIC_VALUES_DESCRIPTION="Only use dynamic get val
COM_COMPONENTBUILDER_LAYOUT_DYNAMIC_VALUES_LABEL="Dynamic Values"
COM_COMPONENTBUILDER_LAYOUT_EDIT="Editing the Layout"
COM_COMPONENTBUILDER_LAYOUT_ERROR_UNIQUE_ALIAS="Another Layout has the same alias."
COM_COMPONENTBUILDER_LAYOUT_GET_SNIPPETS_BUTTON_ACCESS="Layout Get Snippets Button Access"
COM_COMPONENTBUILDER_LAYOUT_GET_SNIPPETS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the get snippets button."
COM_COMPONENTBUILDER_LAYOUT_ID="Id"
COM_COMPONENTBUILDER_LAYOUT_LAYOUT="Layout"
COM_COMPONENTBUILDER_LAYOUT_LAYOUT_HINT="// Add the layout code here. $displayData is the Object that is used inside the layout file to build displayed output"
@ -4764,6 +4786,7 @@ COM_COMPONENTBUILDER_LICENSE="License"
COM_COMPONENTBUILDER_LICENSE_S="License: %s"
COM_COMPONENTBUILDER_LINK="Link"
COM_COMPONENTBUILDER_LINK_TO_THE_CONTRIBUTOR="Link to the contributor"
COM_COMPONENTBUILDER_LOADING="loading"
COM_COMPONENTBUILDER_LOCAL_SNIPPET="Local snippet"
COM_COMPONENTBUILDER_MAIN_MENU="Main Menu"
COM_COMPONENTBUILDER_MATCH_BEHAVIOR="Match Behavior"
@ -4774,8 +4797,10 @@ COM_COMPONENTBUILDER_MIN_LENGTH_ONLY_FOUR_TEXT_FIELD="Min Length (only 4 text_fi
COM_COMPONENTBUILDER_NAME="Name"
COM_COMPONENTBUILDER_NAME_ASC="Name (Asc)"
COM_COMPONENTBUILDER_NAME_DESC="Name (Desc)"
COM_COMPONENTBUILDER_NEED_HELP="Need help?"
COM_COMPONENTBUILDER_NEW="New"
COM_COMPONENTBUILDER_NEW_ISSUE="New Issue"
COM_COMPONENTBUILDER_NEW_MEANS_THAT_WE_COULD_NOT_FIND_A_LOCAL_SNIPPET_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_AND_SO_HAVE_MARKED_THIS_SNIPPET_AS_NEW="New means that we could not find a local snippet with the same name, library and type, and so have marked this snippet as new."
COM_COMPONENTBUILDER_NEW_NOTICE="New Notice"
COM_COMPONENTBUILDER_NO="No"
COM_COMPONENTBUILDER_NOTRANSLATION="no-translation"
@ -4796,6 +4821,7 @@ COM_COMPONENTBUILDER_OPEN="Open"
COM_COMPONENTBUILDER_OPENED="opened"
COM_COMPONENTBUILDER_OPENED_THIS="opened this"
COM_COMPONENTBUILDER_OPEN_ON_GITHUB="Open on Github"
COM_COMPONENTBUILDER_OPTIONS="Options"
COM_COMPONENTBUILDER_ORDER_BEFORE="Order Before"
COM_COMPONENTBUILDER_ORDER_IN_EDIT="Order in Edit"
COM_COMPONENTBUILDER_ORDER_IN_LIST_VIEWS="Order in list views"
@ -4805,6 +4831,7 @@ COM_COMPONENTBUILDER_OWNER_S="Owner: %s"
COM_COMPONENTBUILDER_PACKAGE_OWNER_DETAILS="Package Owner Details"
COM_COMPONENTBUILDER_PACKAGE_OWNER_DETAILS_NOT_FOUND="Package owner details not found!"
COM_COMPONENTBUILDER_PACKAGE_OWNER_NOT_SET="Package Owner Not Set"
COM_COMPONENTBUILDER_PATH_CODESCODE="Path: <code>%s</code>"
COM_COMPONENTBUILDER_PATH_TO_THE_ZIPPED_PACKAGE_IS_CODESCODE_BR_S_S="Path to the zipped package is: <code>%s</code> <br />%s %s"
COM_COMPONENTBUILDER_PERMISSIONS="Permissions"
COM_COMPONENTBUILDER_PLEASE_ADD_FILES_TO_S="Please add files to (%s)"
@ -4818,6 +4845,7 @@ COM_COMPONENTBUILDER_PUBLISHED="Published"
COM_COMPONENTBUILDER_PUBLISHING="Publishing"
COM_COMPONENTBUILDER_READY_TO_COMPILE_A_COMPONENT="Ready to compile a component"
COM_COMPONENTBUILDER_RELEASED_THIS="released this"
COM_COMPONENTBUILDER_REPORT_AN_ISSUE_BSB="Report an issue: <b>%s</b>"
COM_COMPONENTBUILDER_RESPOND_TO_THIS_ISSUE_ON_GITHUB="Respond to this issue on Github"
COM_COMPONENTBUILDER_REVERT_ALL_AHEAD_SNIPPETS="Revert All Ahead Snippets"
COM_COMPONENTBUILDER_REVIEW_THIS_ISSUE_ON_GITHUB="Review this issue on Github"
@ -5049,6 +5077,8 @@ COM_COMPONENTBUILDER_SITE_VIEW_FOLDER_THREE="Folder 3"
COM_COMPONENTBUILDER_SITE_VIEW_FORWARD_CIRCLE="Forward Circle"
COM_COMPONENTBUILDER_SITE_VIEW_FORWARD_TWO="Forward 2"
COM_COMPONENTBUILDER_SITE_VIEW_GENERIC="Generic"
COM_COMPONENTBUILDER_SITE_VIEW_GET_SNIPPETS_BUTTON_ACCESS="Site View Get Snippets Button Access"
COM_COMPONENTBUILDER_SITE_VIEW_GET_SNIPPETS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the get snippets button."
COM_COMPONENTBUILDER_SITE_VIEW_GRID="Grid"
COM_COMPONENTBUILDER_SITE_VIEW_GRID_TWO="Grid 2"
COM_COMPONENTBUILDER_SITE_VIEW_HEALTH="Health"
@ -5081,7 +5111,6 @@ COM_COMPONENTBUILDER_SITE_VIEW_KEY="Key"
COM_COMPONENTBUILDER_SITE_VIEW_LAMP="Lamp"
COM_COMPONENTBUILDER_SITE_VIEW_LAST="Last"
COM_COMPONENTBUILDER_SITE_VIEW_LINK="Link"
COM_COMPONENTBUILDER_SITE_VIEW_LINKED_COMPONENTS="Linked - Components"
COM_COMPONENTBUILDER_SITE_VIEW_LIST="List"
COM_COMPONENTBUILDER_SITE_VIEW_LIST_TWO="List 2"
COM_COMPONENTBUILDER_SITE_VIEW_LOCATION="Location"
@ -5289,7 +5318,7 @@ COM_COMPONENTBUILDER_SNIPPETS_BATCH_OPTIONS="Batch process the selected Snippets
COM_COMPONENTBUILDER_SNIPPETS_BATCH_TIP="All changes will be applied to all selected Snippets"
COM_COMPONENTBUILDER_SNIPPETS_BATCH_USE="Snippets Batch Use"
COM_COMPONENTBUILDER_SNIPPETS_BATCH_USE_DESC="Allows users in this group to use batch copy/update method of batch snippets"
COM_COMPONENTBUILDER_SNIPPETS_BULK_TOOLS="Snippets Bulk Tools"
COM_COMPONENTBUILDER_SNIPPETS_COULD_NOT_BE_UPDATEDSAVED="Snippets could not be updated/saved"
COM_COMPONENTBUILDER_SNIPPETS_CREATE="Snippets Create"
COM_COMPONENTBUILDER_SNIPPETS_CREATE_DESC="Allows the users in this group to create create snippets"
COM_COMPONENTBUILDER_SNIPPETS_DASHBOARD_ADD="Snippets Dashboard Add"
@ -5308,7 +5337,6 @@ COM_COMPONENTBUILDER_SNIPPETS_EDIT_VERSION="Snippets Edit Version"
COM_COMPONENTBUILDER_SNIPPETS_EDIT_VERSION_DESC="Allows users in this group to edit versions of version snippets"
COM_COMPONENTBUILDER_SNIPPETS_EXPORT="Snippets Export"
COM_COMPONENTBUILDER_SNIPPETS_EXPORT_DESC="Allows the users in this group to export export snippets"
COM_COMPONENTBUILDER_SNIPPETS_HAVE_BEEN_EXPORTED_AND_ZIPPED_READY_TO_SHARE_PLEASE_WATCH_THE_FOLLOWING_A_HREF_TARGET_BLANKVIDEO_TUTORIALA_THAT_SHOWS_YOU_HOW_TO_SHARE_THESE_SNIPPETS_WITH_THE_REST_OF_THE_JCB_COMMUNITY="Snippets have been exported and zipped ready to share! Please watch the following <a href="#" target="_blank">video tutorial</a> that shows you how to share these snippets with the rest of the JCB community."
COM_COMPONENTBUILDER_SNIPPETS_IMPORT="Snippets Import"
COM_COMPONENTBUILDER_SNIPPETS_IMPORT_DESC="Allows the users in this group to import import snippets"
COM_COMPONENTBUILDER_SNIPPETS_N_ITEMS_ARCHIVED="%s Snippets archived."
@ -5330,6 +5358,27 @@ COM_COMPONENTBUILDER_SNIPPETS_N_ITEMS_UNPUBLISHED="%s Snippets unpublished."
COM_COMPONENTBUILDER_SNIPPETS_N_ITEMS_UNPUBLISHED_1="%s Snippet unpublished."
COM_COMPONENTBUILDER_SNIPPETS_SUBMENU="Snippets Submenu"
COM_COMPONENTBUILDER_SNIPPETS_SUBMENU_DESC="Allows the users in this group to update the submenu of the snippet"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR="Contributor"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_COMPANY="Contributor Company"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_COMPANY_DESCRIPTION="The contributor company name"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_COMPANY_HINT="dynamic field"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_COMPANY_LABEL="Contributor Company"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_COMPANY_MESSAGE="Error! Please add company name here."
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_EMAIL="Contributor Email"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_EMAIL_DESCRIPTION="The contributor email"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_EMAIL_HINT="dynamic field"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_EMAIL_LABEL="Contributor Email"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_EMAIL_MESSAGE="Error! Please add email here."
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_NAME="Contributor Name"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_NAME_DESCRIPTION="The contributor name"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_NAME_HINT="dynamic field"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_NAME_LABEL="Contributor Name"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_NAME_MESSAGE="Error! Please add name here."
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_WEBSITE="Contributor Website"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_WEBSITE_DESCRIPTION="The contributor website"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_WEBSITE_HINT="dynamic field"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_WEBSITE_LABEL="Contributor Website"
COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_WEBSITE_MESSAGE="Error! Please add website here."
COM_COMPONENTBUILDER_SNIPPET_COULD_NOT_BE_UPDATEDSAVED="Snippet could not be updated/saved"
COM_COMPONENTBUILDER_SNIPPET_CREATED_BY_DESC="The user that created this Snippet."
COM_COMPONENTBUILDER_SNIPPET_CREATED_BY_LABEL="Created By"
@ -5363,6 +5412,8 @@ COM_COMPONENTBUILDER_SNIPPET_NAME_HINT="Name Here"
COM_COMPONENTBUILDER_SNIPPET_NAME_LABEL="Name"
COM_COMPONENTBUILDER_SNIPPET_NAME_MESSAGE="Error! Please add name here."
COM_COMPONENTBUILDER_SNIPPET_NEW="A New Snippet"
COM_COMPONENTBUILDER_SNIPPET_NOTE_CONTRIBUTOR_DETAILS_DESCRIPTION="We will use your company details as set in the global <span id='contributor-global-settings'>options</span> under the company tap of JCB for new snippets you create. You can not change the contributor details of snippets that already exist at this time via this area."
COM_COMPONENTBUILDER_SNIPPET_NOTE_CONTRIBUTOR_DETAILS_LABEL="How Contributor Details Work"
COM_COMPONENTBUILDER_SNIPPET_ORDERING_LABEL="Ordering"
COM_COMPONENTBUILDER_SNIPPET_PERMISSION="Permissions"
COM_COMPONENTBUILDER_SNIPPET_PUBLISHING="Publishing"
@ -5552,6 +5603,8 @@ COM_COMPONENTBUILDER_TEMPLATE_DYNAMIC_VALUES_DESCRIPTION="Only use dynamic get v
COM_COMPONENTBUILDER_TEMPLATE_DYNAMIC_VALUES_LABEL="Dynamic Values"
COM_COMPONENTBUILDER_TEMPLATE_EDIT="Editing the Template"
COM_COMPONENTBUILDER_TEMPLATE_ERROR_UNIQUE_ALIAS="Another Template has the same alias."
COM_COMPONENTBUILDER_TEMPLATE_GET_SNIPPETS_BUTTON_ACCESS="Template Get Snippets Button Access"
COM_COMPONENTBUILDER_TEMPLATE_GET_SNIPPETS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the get snippets button."
COM_COMPONENTBUILDER_TEMPLATE_ID="Id"
COM_COMPONENTBUILDER_TEMPLATE_MODIFIED_BY_DESC="The last user that modified this Template."
COM_COMPONENTBUILDER_TEMPLATE_MODIFIED_BY_LABEL="Modified By"
@ -5608,14 +5661,21 @@ COM_COMPONENTBUILDER_THE_NOTICE_BOARD_IS_LOADING="The notice board is loading"
COM_COMPONENTBUILDER_THE_PACKAGE_KEY_IS_CODESCODE="The package key is: <code>%s</code>"
COM_COMPONENTBUILDER_THE_PACKAGE_KEY_IS_S="The package key is: %s"
COM_COMPONENTBUILDER_THE_README_IS_LOADING="The readme is loading"
COM_COMPONENTBUILDER_THE_SNIPPETS_IS_LOADING="The snippets is loading"
COM_COMPONENTBUILDER_THE_SEARCH_FOR_THE_SNIPPETS_ARE_CASE_SENSITIVE_SO_IF_YOU_CHANGED_THE_LOCAL_BNAMESB_OF_EITHER_OR_THE_BSNIPPET_LIBRARY_OR_SNIPPET_TYPESB_IN_ANY_SMALL_WAY_THE_SYSTEM_WILL_NOT_BE_ABLE_TO_CONNECT_YOUR_LOCAL_SNIPPETS_WITH_THOSE_IN_THE_COMMUNITY_REPOSITORY_SO_WE_STRONGLY_ADVICE_TO_BKEEP_TO_THE_COMMUNITY_NAMINGB_TO_AVOID_MISMATCHING_THAT_WILL_IN_TURN_CAUSE_DUPLICATION_SO_IF_YOU_CHANGED_ANY_NAMES_JUST_CHANGE_THEM_BACK_AND_ALL_WILL_AGAIN_WORK_AS_EXPECTED="The search for the snippets are case sensitive so if you changed the local <b>names</b> of either or the <b>snippet, library or snippet types</b> in any small way, the system will not be able to connect your local snippets with those in the community repository. So we strongly advice to <b>keep to the community naming</b> to avoid mismatching, that will in turn cause duplication. So if you changed any names, just change them back and all will again work as expected."
COM_COMPONENTBUILDER_THE_SNIPPETS_IS="The snippets is"
COM_COMPONENTBUILDER_THE_SNIPPETS_WERE_SUCCESSFULLY_EXPORTED="The Snippets Were Successfully Exported!"
COM_COMPONENTBUILDER_THE_SNIPPET_WAS_SUCCESSFULLY_EXPORTED="The Snippet Was Successfully Exported!"
COM_COMPONENTBUILDER_THE_WIKI_IS_LOADING="The wiki is loading"
COM_COMPONENTBUILDER_THIS_PACKAGE_HAS_NO_KEY="This package has no key."
COM_COMPONENTBUILDER_TITLE="Title"
COM_COMPONENTBUILDER_TOTAL_DOWNLOADS="total downloads"
COM_COMPONENTBUILDER_TO_CHANGE_THE_PACKAGE_OWNER_DEFAULTS_OPEN_THE_BJCB_GLOBAL_OPTIONSB_GO_TO_THE_BCOMPANYB_TAB_AND_ADD_THE_CORRECT_COMPANY_DETAILS_THERE="To change the package owner defaults. Open the <b>JCB Global Options</b>, go to the <b>Company</b> tab and add the correct company details there."
COM_COMPONENTBUILDER_TO_CHANGE_THE_PACKAGE_OWNER_DEFAULTS_OPEN_THE_JCB_GLOBAL_OPTIONS_GO_TO_THE_COMPANY_TAB_AND_ADD_THE_CORRECT_COMPANY_DETAILS_THERE="To change the package owner defaults. Open the JCB Global Options, go to the Company tab and add the correct company details there."
COM_COMPONENTBUILDER_TO_SHARE_THESE_SNIPPETS_WITH_THE_REST_OF_THE_JCB_COMMUNITY="To share these snippets with the rest of the JCB community,"
COM_COMPONENTBUILDER_TO_SHARE_THIS_SNIPPET_WITH_THE_REST_OF_THE_JCB_COMMUNITY="To share this snippet with the rest of the JCB community,"
COM_COMPONENTBUILDER_TRASHED="Trashed"
COM_COMPONENTBUILDER_TUTORIAL_ON_FORKING_JCB_SNIPPETS_BSB="Tutorial on forking JCB snippets: <b>%s</b>"
COM_COMPONENTBUILDER_TUTORIAL_ON_MAKING_A_PULL_REQUEST_BSB="Tutorial on making a pull request: <b>%s</b>"
COM_COMPONENTBUILDER_TYPE="Type"
COM_COMPONENTBUILDER_TYPE_ASC="Type (Asc)"
COM_COMPONENTBUILDER_TYPE_DESC="Type (Desc)"
@ -5645,6 +5705,7 @@ COM_COMPONENTBUILDER_VIEW_USAGE_OF_COMMUNITY_VERSION="View Usage of community ve
COM_COMPONENTBUILDER_VIEW_WHO_CONTRIBUTED_TO_THIS_SNIPPET="View who contributed to this snippet"
COM_COMPONENTBUILDER_WEBSITE="Website"
COM_COMPONENTBUILDER_WEBSITE_S="Website: %s"
COM_COMPONENTBUILDER_WE_DID_NOT_CHECK_THE_SNIPPET_IT_SELF_TO_SEE_IF_IT_CHANGED_WE_ONLY_WORK_ON_DATES="We did not check the snippet it self, to see if it changed. We only work on dates."
COM_COMPONENTBUILDER_WE_FAILED_TO_MOVE_BSB="We failed to move <b>%s</b>!"
COM_COMPONENTBUILDER_YES="Yes"
COM_COMPONENTBUILDER_YOUR_DATA_IS_ENCRYPTED_WITH_A_AES_ONE_HUNDRED_AND_TWENTY_EIGHT_BIT_ENCRYPTION_USING_THE_ABOVE_THIRTY_TWO_CHARACTER_KEYBR_WITHOUT_THIS_KEY_IT_WILL_TAKE_THE_CURRENT_TECHNOLOGY_WITH_A_BRUTE_FORCE_ATTACK_METHOD_MORE_THEN_A_HREFHTTPRANDOMIZECOMHOWLONGTOHACKPASS_TARGET_BLANK_TITLEHOW_LONG_TO_HACK_PASSSEVEN_HUNDRED_ZERO_ZERO_ZERO_ZERO_ZERO_ZERO_ZERO_ZERO_ZERO_ZEROA_YEARS_TO_CRACK_THEORETICALLY="Your data is encrypted with a AES 128 bit encryption using the above 32 character key.<br />Without this key it will take the current technology with a brute force attack method more then <a href="http://random-ize.com/how-long-to-hack-pass/" target="_blank" title="How long to hack pass">700 000 000 000 000 000 000 000 000 000 000</a> years to crack theoretically."
@ -5657,6 +5718,8 @@ COM_COMPONENTBUILDER_YOU_HAVE_S_S_ADDING_MORE_THEN_FIFTY_S_IS_CONSIDERED_BAD_PRA
COM_COMPONENTBUILDER_YOU_MUST_SELECT_A_COMPONENT="You must select a component!"
COM_COMPONENTBUILDER_YOU_SHOULD_ADD_THE_CORRECT_OWNER_DETAILS="You should add the correct owner details."
COM_COMPONENTBUILDER_YOU_SHOULD_ONLY_CONTINUE_THIS_IMPORT_IF_YOU_HAVE_BACKUP_YOUR_COMPONENTS_AND_INSURED_THAT_THE_PACKAGE_OWNER_IS_REPUTABLE="You should only continue this import if you have backup your components, and insured that the package owner is reputable."
COM_COMPONENTBUILDER_YOU_WILL_NEED_TO_KNOW_HOW_S_WORKS_BASIC_YOU_WILL_ALSO_NEED_A_S_ACCOUNT_AND_KNOW_HOW_TO_MAKE_A_PULL_REQUEST_ON_GITHUB="you will need to know how %s works (basic). You will also need a %s account and know how to make a pull request on github."
COM_COMPONENTBUILDER_ZIPPED_FILE_LOCATION="Zipped File Location"
COM_COMPONENTBUILDER__SELECT_COMPONENT_="- Select Component -"
COM_COMPONENTBUILDER__SINCE_YOU_DONT_HAVE_PERMISSION_TO_CREATE_S=", since you don't have permission to create %s!"
COM_COMPONENTBUILDER__SINCE_YOU_DONT_HAVE_PERMISSION_TO_EDIT_S=", since you don't have permission to edit %s!"

View File

@ -284,6 +284,8 @@ COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_IMPORT="Custom Admin Views Import"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_IMPORT_DESC="Allows the users in this group to import import custom admin views"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_SUBMENU="Custom Admin Views Submenu"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_SUBMENU_DESC="Allows the users in this group to update the submenu of the custom admin view"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_GET_SNIPPETS_BUTTON_ACCESS="Custom Admin View Get Snippets Button Access"
COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_GET_SNIPPETS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the get snippets button."
COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS="Custom Codes Access"
COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS_DESC="Allows the users in this group to access access custom codes"
COM_COMPONENTBUILDER_CUSTOM_CODES_BATCH_USE="Custom Codes Batch Use"
@ -440,8 +442,16 @@ COM_COMPONENTBUILDER_FTPS_SUBMENU="Ftps Submenu"
COM_COMPONENTBUILDER_FTPS_SUBMENU_DESC="Allows the users in this group to update the submenu of the ftp"
COM_COMPONENTBUILDER_GET_SNIPPETS_ACCESS="Get Snippets Access"
COM_COMPONENTBUILDER_GET_SNIPPETS_ACCESS_DESC=" Allows the users in this group to access get snippets."
COM_COMPONENTBUILDER_GET_SNIPPETS_CUSTOM_ADMIN_VIEWS_BUTTON_ACCESS="Get Snippets Custom Admin Views Button Access"
COM_COMPONENTBUILDER_GET_SNIPPETS_CUSTOM_ADMIN_VIEWS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the custom admin views button."
COM_COMPONENTBUILDER_GET_SNIPPETS_LAYOUTS_BUTTON_ACCESS="Get Snippets Layouts Button Access"
COM_COMPONENTBUILDER_GET_SNIPPETS_LAYOUTS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the layouts button."
COM_COMPONENTBUILDER_GET_SNIPPETS_SITE_VIEWS_BUTTON_ACCESS="Get Snippets Site Views Button Access"
COM_COMPONENTBUILDER_GET_SNIPPETS_SITE_VIEWS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the site views button."
COM_COMPONENTBUILDER_GET_SNIPPETS_SNIPPETS_BUTTON_ACCESS="Get Snippets Snippets Button Access"
COM_COMPONENTBUILDER_GET_SNIPPETS_SNIPPETS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the snippets button."
COM_COMPONENTBUILDER_GET_SNIPPETS_TEMPLATES_BUTTON_ACCESS="Get Snippets Templates Button Access"
COM_COMPONENTBUILDER_GET_SNIPPETS_TEMPLATES_BUTTON_ACCESS_DESC=" Allows the users in this group to access the templates button."
COM_COMPONENTBUILDER_HELP_DOCUMENTS_ACCESS="Help Documents Access"
COM_COMPONENTBUILDER_HELP_DOCUMENTS_ACCESS_DESC="Allows the users in this group to access access help documents"
COM_COMPONENTBUILDER_HELP_DOCUMENTS_BATCH_USE="Help Documents Batch Use"
@ -578,6 +588,8 @@ COM_COMPONENTBUILDER_LAYOUTS_IMPORT="Layouts Import"
COM_COMPONENTBUILDER_LAYOUTS_IMPORT_DESC="Allows the users in this group to import import layouts"
COM_COMPONENTBUILDER_LAYOUTS_SUBMENU="Layouts Submenu"
COM_COMPONENTBUILDER_LAYOUTS_SUBMENU_DESC="Allows the users in this group to update the submenu of the layout"
COM_COMPONENTBUILDER_LAYOUT_GET_SNIPPETS_BUTTON_ACCESS="Layout Get Snippets Button Access"
COM_COMPONENTBUILDER_LAYOUT_GET_SNIPPETS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the get snippets button."
COM_COMPONENTBUILDER_LIBRARIES_ACCESS="Libraries Access"
COM_COMPONENTBUILDER_LIBRARIES_ACCESS_DESC="Allows the users in this group to access access libraries"
COM_COMPONENTBUILDER_LIBRARIES_BATCH_USE="Libraries Batch Use"
@ -635,6 +647,8 @@ COM_COMPONENTBUILDER_SITE_VIEWS_IMPORT="Site Views Import"
COM_COMPONENTBUILDER_SITE_VIEWS_IMPORT_DESC="Allows the users in this group to import import site views"
COM_COMPONENTBUILDER_SITE_VIEWS_SUBMENU="Site Views Submenu"
COM_COMPONENTBUILDER_SITE_VIEWS_SUBMENU_DESC="Allows the users in this group to update the submenu of the site view"
COM_COMPONENTBUILDER_SITE_VIEW_GET_SNIPPETS_BUTTON_ACCESS="Site View Get Snippets Button Access"
COM_COMPONENTBUILDER_SITE_VIEW_GET_SNIPPETS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the get snippets button."
COM_COMPONENTBUILDER_SNIPPETS_ACCESS="Snippets Access"
COM_COMPONENTBUILDER_SNIPPETS_ACCESS_DESC="Allows the users in this group to access access snippets"
COM_COMPONENTBUILDER_SNIPPETS_BATCH_USE="Snippets Batch Use"
@ -707,5 +721,7 @@ COM_COMPONENTBUILDER_TEMPLATES_IMPORT="Templates Import"
COM_COMPONENTBUILDER_TEMPLATES_IMPORT_DESC="Allows the users in this group to import import templates"
COM_COMPONENTBUILDER_TEMPLATES_SUBMENU="Templates Submenu"
COM_COMPONENTBUILDER_TEMPLATES_SUBMENU_DESC="Allows the users in this group to update the submenu of the template"
COM_COMPONENTBUILDER_TEMPLATE_GET_SNIPPETS_BUTTON_ACCESS="Template Get Snippets Button Access"
COM_COMPONENTBUILDER_TEMPLATE_GET_SNIPPETS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the get snippets button."
COM_COMPONENTBUILDER_USE_BATCH="Use Batch"
COM_COMPONENTBUILDER_USE_BATCH_DESC=" Allows users in this group to use batch copy/update method."

View File

@ -1,138 +0,0 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.6.x
@created 30th April, 2015
@package Component Builder
@subpackage linked_components_fullwidth.php
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// set the defaults
$items = $displayData->vyelinked_components;
$user = JFactory::getUser();
$id = $displayData->item->id;
$edit = "index.php?option=com_componentbuilder&view=joomla_components&task=joomla_component.edit";
?>
<div class="form-vertical">
<?php if (ComponentbuilderHelper::checkArray($items)): ?>
<table class="footable table data joomla_components" data-show-toggle="true" data-toggle-column="first" data-sorting="true" data-paging="true" data-paging-size="20" data-filtering="true">
<thead>
<tr>
<th data-type="html" data-sort-use="text">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SYSTEM_NAME_LABEL'); ?>
</th>
<th data-breakpoints="xs sm" data-type="html" data-sort-use="text">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NAME_CODE_LABEL'); ?>
</th>
<th data-breakpoints="xs sm" data-type="html" data-sort-use="text">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_COMPONENT_VERSION_LABEL'); ?>
</th>
<th data-breakpoints="xs sm md" data-type="html" data-sort-use="text">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SHORT_DESCRIPTION_LABEL'); ?>
</th>
<th data-breakpoints="xs sm md" data-type="html" data-sort-use="text">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_COMPANYNAME_LABEL'); ?>
</th>
<th data-breakpoints="xs sm md" data-type="html" data-sort-use="text">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_AUTHOR_LABEL'); ?>
</th>
<th width="10" data-breakpoints="xs sm md">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_STATUS'); ?>
</th>
<th width="5" data-type="number" data-breakpoints="xs sm md">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ID'); ?>
</th>
</tr>
</thead>
<tbody>
<?php foreach ($items as $i => $item): ?>
<?php
$canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->id || $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo = ComponentbuilderHelper::getActions('joomla_component',$item,'joomla_components');
?>
<tr>
<td class="nowrap">
<?php if ($canDo->get('joomla_component.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo $item->id; ?>&ref=custom_admin_view&refid=<?php echo $id; ?>"><?php echo $displayData->escape($item->system_name); ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i, $userChkOut->name, $item->checked_out_time, 'joomla_components.', $canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<div class="name"><?php echo $displayData->escape($item->system_name); ?></div>
<?php endif; ?>
</td>
<td>
<?php echo $displayData->escape($item->name_code); ?>
</td>
<td>
<?php echo $displayData->escape($item->component_version); ?>
</td>
<td>
<?php echo $displayData->escape($item->short_description); ?>
</td>
<td>
<?php echo $displayData->escape($item->companyname); ?>
</td>
<td>
<?php echo $displayData->escape($item->author); ?>
</td>
<?php if ($item->published == 1):?>
<td class="center" data-sort-value="1">
<span class="status-metro status-published" title="<?php echo JText::_('COM_COMPONENTBUILDER_PUBLISHED'); ?>">
<?php echo JText::_('COM_COMPONENTBUILDER_PUBLISHED'); ?>
</span>
</td>
<?php elseif ($item->published == 0):?>
<td class="center" data-sort-value="2">
<span class="status-metro status-inactive" title="<?php echo JText::_('COM_COMPONENTBUILDER_INACTIVE'); ?>">
<?php echo JText::_('COM_COMPONENTBUILDER_INACTIVE'); ?>
</span>
</td>
<?php elseif ($item->published == 2):?>
<td class="center" data-sort-value="3">
<span class="status-metro status-archived" title="<?php echo JText::_('COM_COMPONENTBUILDER_ARCHIVED'); ?>">
<?php echo JText::_('COM_COMPONENTBUILDER_ARCHIVED'); ?>
</span>
</td>
<?php elseif ($item->published == -2):?>
<td class="center" data-sort-value="4">
<span class="status-metro status-trashed" title="<?php echo JText::_('COM_COMPONENTBUILDER_TRASHED'); ?>">
<?php echo JText::_('COM_COMPONENTBUILDER_TRASHED'); ?>
</span>
</td>
<?php endif; ?>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php else: ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php endif; ?>
</div>

View File

@ -28,7 +28,7 @@
defined('_JEXEC') or die('Restricted access');
// set the defaults
$items = $displayData->vzwfields;
$items = $displayData->vzufields;
$user = JFactory::getUser();
$id = $displayData->item->id;
$edit = "index.php?option=com_componentbuilder&view=fields&task=field.edit";

View File

@ -28,7 +28,7 @@
defined('_JEXEC') or die('Restricted access');
// set the defaults
$items = $displayData->vzxlinked_components;
$items = $displayData->vzvlinked_components;
$user = JFactory::getUser();
$id = $displayData->item->id;
$edit = "index.php?option=com_componentbuilder&view=joomla_components&task=joomla_component.edit";

View File

@ -1,138 +0,0 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.6.x
@created 30th April, 2015
@package Component Builder
@subpackage linked_components_fullwidth.php
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// set the defaults
$items = $displayData->vyplinked_components;
$user = JFactory::getUser();
$id = $displayData->item->id;
$edit = "index.php?option=com_componentbuilder&view=joomla_components&task=joomla_component.edit";
?>
<div class="form-vertical">
<?php if (ComponentbuilderHelper::checkArray($items)): ?>
<table class="footable table data joomla_components" data-show-toggle="true" data-toggle-column="first" data-sorting="true" data-paging="true" data-paging-size="20" data-filtering="true">
<thead>
<tr>
<th data-type="html" data-sort-use="text">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SYSTEM_NAME_LABEL'); ?>
</th>
<th data-breakpoints="xs sm" data-type="html" data-sort-use="text">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NAME_CODE_LABEL'); ?>
</th>
<th data-breakpoints="xs sm" data-type="html" data-sort-use="text">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_COMPONENT_VERSION_LABEL'); ?>
</th>
<th data-breakpoints="xs sm md" data-type="html" data-sort-use="text">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SHORT_DESCRIPTION_LABEL'); ?>
</th>
<th data-breakpoints="xs sm md" data-type="html" data-sort-use="text">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_COMPANYNAME_LABEL'); ?>
</th>
<th data-breakpoints="xs sm md" data-type="html" data-sort-use="text">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_AUTHOR_LABEL'); ?>
</th>
<th width="10" data-breakpoints="xs sm md">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_STATUS'); ?>
</th>
<th width="5" data-type="number" data-breakpoints="xs sm md">
<?php echo JText::_('COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ID'); ?>
</th>
</tr>
</thead>
<tbody>
<?php foreach ($items as $i => $item): ?>
<?php
$canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->id || $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo = ComponentbuilderHelper::getActions('joomla_component',$item,'joomla_components');
?>
<tr>
<td class="nowrap">
<?php if ($canDo->get('joomla_component.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo $item->id; ?>&ref=site_view&refid=<?php echo $id; ?>"><?php echo $displayData->escape($item->system_name); ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i, $userChkOut->name, $item->checked_out_time, 'joomla_components.', $canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<div class="name"><?php echo $displayData->escape($item->system_name); ?></div>
<?php endif; ?>
</td>
<td>
<?php echo $displayData->escape($item->name_code); ?>
</td>
<td>
<?php echo $displayData->escape($item->component_version); ?>
</td>
<td>
<?php echo $displayData->escape($item->short_description); ?>
</td>
<td>
<?php echo $displayData->escape($item->companyname); ?>
</td>
<td>
<?php echo $displayData->escape($item->author); ?>
</td>
<?php if ($item->published == 1):?>
<td class="center" data-sort-value="1">
<span class="status-metro status-published" title="<?php echo JText::_('COM_COMPONENTBUILDER_PUBLISHED'); ?>">
<?php echo JText::_('COM_COMPONENTBUILDER_PUBLISHED'); ?>
</span>
</td>
<?php elseif ($item->published == 0):?>
<td class="center" data-sort-value="2">
<span class="status-metro status-inactive" title="<?php echo JText::_('COM_COMPONENTBUILDER_INACTIVE'); ?>">
<?php echo JText::_('COM_COMPONENTBUILDER_INACTIVE'); ?>
</span>
</td>
<?php elseif ($item->published == 2):?>
<td class="center" data-sort-value="3">
<span class="status-metro status-archived" title="<?php echo JText::_('COM_COMPONENTBUILDER_ARCHIVED'); ?>">
<?php echo JText::_('COM_COMPONENTBUILDER_ARCHIVED'); ?>
</span>
</td>
<?php elseif ($item->published == -2):?>
<td class="center" data-sort-value="4">
<span class="status-metro status-trashed" title="<?php echo JText::_('COM_COMPONENTBUILDER_TRASHED'); ?>">
<?php echo JText::_('COM_COMPONENTBUILDER_TRASHED'); ?>
</span>
</td>
<?php endif; ?>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php else: ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php endif; ?>
</div>

View File

@ -0,0 +1,48 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.6.x
@created 30th April, 2015
@package Component Builder
@subpackage contributor_fullwidth.php
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
'note_contributor_details'
);
?>
<div class="form-vertical">
<?php foreach($fields as $field): ?>
<div class="control-group">
<div class="control-label">
<?php echo $form->getLabel($field); ?>
</div>
<div class="controls">
<?php echo $form->getInput($field); ?>
</div>
</div>
<?php endforeach; ?>
</div>

View File

@ -0,0 +1,55 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.6.x
@created 30th April, 2015
@package Component Builder
@subpackage contributor_left.php
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
'contributor_company',
'contributor_website'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
foreach ($fields as $field)
{
$field = is_array($field) ? $field : array($field);
foreach ($field as $f)
{
if ($form->getField($f))
{
if (in_array($f, $hiddenFields))
{
$form->setFieldAttribute($f, 'type', 'hidden');
}
echo $form->renderField($f);
break;
}
}
}

View File

@ -0,0 +1,55 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.6.x
@created 30th April, 2015
@package Component Builder
@subpackage contributor_right.php
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
'contributor_name',
'contributor_email'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
foreach ($fields as $field)
{
$field = is_array($field) ? $field : array($field);
foreach ($field as $f)
{
if ($form->getField($f))
{
if (in_array($f, $hiddenFields))
{
$form->setFieldAttribute($f, 'type', 'hidden');
}
echo $form->renderField($f);
break;
}
}
}

View File

@ -1743,7 +1743,7 @@ class ComponentbuilderModelAjax extends JModelList
// secure path
$path = ComponentbuilderHelper::safeString(str_replace('.json','',$path), 'filename', '', false).'.json';
// set url
$url = 'https://raw.githubusercontent.com/vdm-io/Joomla-Component-Builder-Snippets/master/'.rawurlencode(basename($path));
$url = ComponentbuilderHelper::$snippetPath.rawurlencode(basename($path));
// get the snippets
$snippet = ComponentbuilderHelper::getFileContents($url);
if (ComponentbuilderHelper::checkJson($snippet))

View File

@ -197,102 +197,9 @@ class ComponentbuilderModelCustom_admin_view extends JModelAdmin
$item->tags = new JHelperTags;
$item->tags->getTagIds($item->id, 'com_componentbuilder.custom_admin_view');
}
}
$this->addcustom_admin_viewsvvvw = $item->id;
}
return $item;
}
/**
* Method to get list data.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getVyelinked_components()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the componentbuilder_joomla_component table
$query->from($db->quoteName('#__componentbuilder_joomla_component', 'a'));
// Join over the asset groups.
$query->select('ag.title AS access_level');
$query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access');
// Filter by access level.
if ($access = $this->getState('filter.access'))
{
$query->where('a.access = ' . (int) $access);
}
// Implement View Level Access
if (!$user->authorise('core.options', 'com_componentbuilder'))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
// Order the results by ordering
$query->order('a.published ASC');
$query->order('a.ordering ASC');
// Load the items
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
$items = $db->loadObjectList();
// set values to display correctly.
if (ComponentbuilderHelper::checkArray($items))
{
// get user object.
$user = JFactory::getUser();
foreach ($items as $nr => &$item)
{
$access = ($user->authorise('joomla_component.access', 'com_componentbuilder.joomla_component.' . (int) $item->id) && $user->authorise('joomla_component.access', 'com_componentbuilder'));
if (!$access)
{
unset($items[$nr]);
continue;
}
}
}
// Filter by addcustom_admin_viewsvvvw in this Repetable Field
if (ComponentbuilderHelper::checkArray($items) && isset($this->addcustom_admin_viewsvvvw))
{
foreach ($items as $nr => &$item)
{
if (isset($item->addcustom_admin_views) && ComponentbuilderHelper::checkJson($item->addcustom_admin_views))
{
$tmpArray = json_decode($item->addcustom_admin_views,true);
if (!isset($tmpArray['customadminview']) || !ComponentbuilderHelper::checkArray($tmpArray['customadminview']) || !in_array($this->addcustom_admin_viewsvvvw, $tmpArray['customadminview']))
{
unset($items[$nr]);
continue;
}
}
else
{
unset($items[$nr]);
continue;
}
}
}
else
{
return false;
}
return $items;
}
return false;
}
/**

View File

@ -129,7 +129,7 @@ class ComponentbuilderModelFieldtype extends JModelAdmin
$item->tags->getTagIds($item->id, 'com_componentbuilder.fieldtype');
}
}
$this->fieldtypevvvy = $item->id;
$this->fieldtypevvvw = $item->id;
return $item;
}
@ -139,7 +139,7 @@ class ComponentbuilderModelFieldtype extends JModelAdmin
*
* @return mixed An array of data items on success, false on failure.
*/
public function getVzwfields()
public function getVzufields()
{
// Get the user object.
$user = JFactory::getUser();
@ -159,15 +159,15 @@ class ComponentbuilderModelFieldtype extends JModelAdmin
$query->select($db->quoteName('g.name','fieldtype_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_fieldtype', 'g') . ' ON (' . $db->quoteName('a.fieldtype') . ' = ' . $db->quoteName('g.id') . ')');
// Filter by fieldtypevvvy global.
$fieldtypevvvy = $this->fieldtypevvvy;
if (is_numeric($fieldtypevvvy ))
// Filter by fieldtypevvvw global.
$fieldtypevvvw = $this->fieldtypevvvw;
if (is_numeric($fieldtypevvvw ))
{
$query->where('a.fieldtype = ' . (int) $fieldtypevvvy );
$query->where('a.fieldtype = ' . (int) $fieldtypevvvw );
}
elseif (is_string($fieldtypevvvy))
elseif (is_string($fieldtypevvvw))
{
$query->where('a.fieldtype = ' . $db->quote($fieldtypevvvy));
$query->where('a.fieldtype = ' . $db->quote($fieldtypevvvw));
}
else
{
@ -223,13 +223,13 @@ class ComponentbuilderModelFieldtype extends JModelAdmin
foreach ($items as $nr => &$item)
{
// convert datatype
$item->datatype = $this->selectionTranslationVzwfields($item->datatype, 'datatype');
$item->datatype = $this->selectionTranslationVzufields($item->datatype, 'datatype');
// convert indexes
$item->indexes = $this->selectionTranslationVzwfields($item->indexes, 'indexes');
$item->indexes = $this->selectionTranslationVzufields($item->indexes, 'indexes');
// convert null_switch
$item->null_switch = $this->selectionTranslationVzwfields($item->null_switch, 'null_switch');
$item->null_switch = $this->selectionTranslationVzufields($item->null_switch, 'null_switch');
// convert store
$item->store = $this->selectionTranslationVzwfields($item->store, 'store');
$item->store = $this->selectionTranslationVzufields($item->store, 'store');
}
}
@ -243,7 +243,7 @@ class ComponentbuilderModelFieldtype extends JModelAdmin
*
* @return translatable string
*/
public function selectionTranslationVzwfields($value,$name)
public function selectionTranslationVzufields($value,$name)
{
// Array of datatype language strings
if ($name === 'datatype')

View File

@ -23,10 +23,10 @@
/-----------------------------------------------------------------------------------------------------------------------------*/
// Some Global Values
jform_vvvvvzqvzk_required = false;
jform_vvvvvzqvzi_required = false;
jform_vvvvvzrvzj_required = false;
jform_vvvvvzrvzk_required = false;
jform_vvvvvzrvzl_required = false;
jform_vvvvvzrvzm_required = false;
jform_vvvvvzrvzn_required = false;
// Initial Script
jQuery(document).ready(function()
@ -53,13 +53,13 @@ function vvvvvzq(target_vvvvvzq)
if (target_vvvvvzq == 2)
{
jQuery('#jform_function_name').closest('.control-group').show();
if (jform_vvvvvzqvzk_required)
if (jform_vvvvvzqvzi_required)
{
updateFieldRequired('function_name',0);
jQuery('#jform_function_name').prop('required','required');
jQuery('#jform_function_name').attr('aria-required',true);
jQuery('#jform_function_name').addClass('required');
jform_vvvvvzqvzk_required = false;
jform_vvvvvzqvzi_required = false;
}
jQuery('.note_jcb_placeholder').closest('.control-group').show();
@ -68,13 +68,13 @@ function vvvvvzq(target_vvvvvzq)
else
{
jQuery('#jform_function_name').closest('.control-group').hide();
if (!jform_vvvvvzqvzk_required)
if (!jform_vvvvvzqvzi_required)
{
updateFieldRequired('function_name',1);
jQuery('#jform_function_name').removeAttr('required');
jQuery('#jform_function_name').removeAttr('aria-required');
jQuery('#jform_function_name').removeClass('required');
jform_vvvvvzqvzk_required = true;
jform_vvvvvzqvzi_required = true;
}
jQuery('.note_jcb_placeholder').closest('.control-group').hide();
jQuery('#jform_system_name').closest('.control-group').hide();
@ -88,70 +88,70 @@ function vvvvvzr(target_vvvvvzr)
if (target_vvvvvzr == 1)
{
jQuery('#jform_component').closest('.control-group').show();
if (jform_vvvvvzrvzl_required)
if (jform_vvvvvzrvzj_required)
{
updateFieldRequired('component',0);
jQuery('#jform_component').prop('required','required');
jQuery('#jform_component').attr('aria-required',true);
jQuery('#jform_component').addClass('required');
jform_vvvvvzrvzl_required = false;
jform_vvvvvzrvzj_required = false;
}
jQuery('#jform_path').closest('.control-group').show();
if (jform_vvvvvzrvzm_required)
if (jform_vvvvvzrvzk_required)
{
updateFieldRequired('path',0);
jQuery('#jform_path').prop('required','required');
jQuery('#jform_path').attr('aria-required',true);
jQuery('#jform_path').addClass('required');
jform_vvvvvzrvzm_required = false;
jform_vvvvvzrvzk_required = false;
}
jQuery('#jform_from_line').closest('.control-group').show();
jQuery('#jform_hashtarget').closest('.control-group').show();
jQuery('#jform_to_line').closest('.control-group').show();
jQuery('#jform_type').closest('.control-group').show();
if (jform_vvvvvzrvzn_required)
if (jform_vvvvvzrvzl_required)
{
updateFieldRequired('type',0);
jQuery('#jform_type').prop('required','required');
jQuery('#jform_type').attr('aria-required',true);
jQuery('#jform_type').addClass('required');
jform_vvvvvzrvzn_required = false;
jform_vvvvvzrvzl_required = false;
}
}
else
{
jQuery('#jform_component').closest('.control-group').hide();
if (!jform_vvvvvzrvzl_required)
if (!jform_vvvvvzrvzj_required)
{
updateFieldRequired('component',1);
jQuery('#jform_component').removeAttr('required');
jQuery('#jform_component').removeAttr('aria-required');
jQuery('#jform_component').removeClass('required');
jform_vvvvvzrvzl_required = true;
jform_vvvvvzrvzj_required = true;
}
jQuery('#jform_path').closest('.control-group').hide();
if (!jform_vvvvvzrvzm_required)
if (!jform_vvvvvzrvzk_required)
{
updateFieldRequired('path',1);
jQuery('#jform_path').removeAttr('required');
jQuery('#jform_path').removeAttr('aria-required');
jQuery('#jform_path').removeClass('required');
jform_vvvvvzrvzm_required = true;
jform_vvvvvzrvzk_required = true;
}
jQuery('#jform_from_line').closest('.control-group').hide();
jQuery('#jform_hashtarget').closest('.control-group').hide();
jQuery('#jform_to_line').closest('.control-group').hide();
jQuery('#jform_type').closest('.control-group').hide();
if (!jform_vvvvvzrvzn_required)
if (!jform_vvvvvzrvzl_required)
{
updateFieldRequired('type',1);
jQuery('#jform_type').removeAttr('required');
jQuery('#jform_type').removeAttr('aria-required');
jQuery('#jform_type').removeClass('required');
jform_vvvvvzrvzn_required = true;
jform_vvvvvzrvzl_required = true;
}
}
}

View File

@ -23,24 +23,24 @@
/-----------------------------------------------------------------------------------------------------------------------------*/
// Some Global Values
jform_vvvvvyuvys_required = false;
jform_vvvvvyvvyt_required = false;
jform_vvvvvywvyu_required = false;
jform_vvvvvyxvyv_required = false;
jform_vvvvvyyvyw_required = false;
jform_vvvvvyzvyx_required = false;
jform_vvvvvzevyy_required = false;
jform_vvvvvzgvyz_required = false;
jform_vvvvvzhvza_required = false;
jform_vvvvvzjvzb_required = false;
jform_vvvvvzjvzc_required = false;
jform_vvvvvzkvzd_required = false;
jform_vvvvvzlvze_required = false;
jform_vvvvvzmvzf_required = false;
jform_vvvvvyuvyq_required = false;
jform_vvvvvyvvyr_required = false;
jform_vvvvvywvys_required = false;
jform_vvvvvyxvyt_required = false;
jform_vvvvvyyvyu_required = false;
jform_vvvvvyzvyv_required = false;
jform_vvvvvzevyw_required = false;
jform_vvvvvzgvyx_required = false;
jform_vvvvvzhvyy_required = false;
jform_vvvvvzjvyz_required = false;
jform_vvvvvzjvza_required = false;
jform_vvvvvzkvzb_required = false;
jform_vvvvvzlvzc_required = false;
jform_vvvvvzmvzd_required = false;
jform_vvvvvzovze_required = false;
jform_vvvvvzovzf_required = false;
jform_vvvvvzovzg_required = false;
jform_vvvvvzovzh_required = false;
jform_vvvvvzovzi_required = false;
jform_vvvvvzpvzj_required = false;
jform_vvvvvzpvzh_required = false;
// Initial Script
jQuery(document).ready(function()
@ -127,26 +127,26 @@ function vvvvvyu(gettype_vvvvvyu)
if (gettype)
{
jQuery('#jform_getcustom').closest('.control-group').show();
if (jform_vvvvvyuvys_required)
if (jform_vvvvvyuvyq_required)
{
updateFieldRequired('getcustom',0);
jQuery('#jform_getcustom').prop('required','required');
jQuery('#jform_getcustom').attr('aria-required',true);
jQuery('#jform_getcustom').addClass('required');
jform_vvvvvyuvys_required = false;
jform_vvvvvyuvyq_required = false;
}
}
else
{
jQuery('#jform_getcustom').closest('.control-group').hide();
if (!jform_vvvvvyuvys_required)
if (!jform_vvvvvyuvyq_required)
{
updateFieldRequired('getcustom',1);
jQuery('#jform_getcustom').removeAttr('required');
jQuery('#jform_getcustom').removeAttr('aria-required');
jQuery('#jform_getcustom').removeClass('required');
jform_vvvvvyuvys_required = true;
jform_vvvvvyuvyq_required = true;
}
}
}
@ -182,26 +182,26 @@ function vvvvvyv(main_source_vvvvvyv)
if (main_source)
{
jQuery('#jform_view_table_main').closest('.control-group').show();
if (jform_vvvvvyvvyt_required)
if (jform_vvvvvyvvyr_required)
{
updateFieldRequired('view_table_main',0);
jQuery('#jform_view_table_main').prop('required','required');
jQuery('#jform_view_table_main').attr('aria-required',true);
jQuery('#jform_view_table_main').addClass('required');
jform_vvvvvyvvyt_required = false;
jform_vvvvvyvvyr_required = false;
}
}
else
{
jQuery('#jform_view_table_main').closest('.control-group').hide();
if (!jform_vvvvvyvvyt_required)
if (!jform_vvvvvyvvyr_required)
{
updateFieldRequired('view_table_main',1);
jQuery('#jform_view_table_main').removeAttr('required');
jQuery('#jform_view_table_main').removeAttr('aria-required');
jQuery('#jform_view_table_main').removeClass('required');
jform_vvvvvyvvyt_required = true;
jform_vvvvvyvvyr_required = true;
}
}
}
@ -237,26 +237,26 @@ function vvvvvyw(main_source_vvvvvyw)
if (main_source)
{
jQuery('#jform_view_selection').closest('.control-group').show();
if (jform_vvvvvywvyu_required)
if (jform_vvvvvywvys_required)
{
updateFieldRequired('view_selection',0);
jQuery('#jform_view_selection').prop('required','required');
jQuery('#jform_view_selection').attr('aria-required',true);
jQuery('#jform_view_selection').addClass('required');
jform_vvvvvywvyu_required = false;
jform_vvvvvywvys_required = false;
}
}
else
{
jQuery('#jform_view_selection').closest('.control-group').hide();
if (!jform_vvvvvywvyu_required)
if (!jform_vvvvvywvys_required)
{
updateFieldRequired('view_selection',1);
jQuery('#jform_view_selection').removeAttr('required');
jQuery('#jform_view_selection').removeAttr('aria-required');
jQuery('#jform_view_selection').removeClass('required');
jform_vvvvvywvyu_required = true;
jform_vvvvvywvys_required = true;
}
}
}
@ -292,26 +292,26 @@ function vvvvvyx(main_source_vvvvvyx)
if (main_source)
{
jQuery('#jform_db_table_main').closest('.control-group').show();
if (jform_vvvvvyxvyv_required)
if (jform_vvvvvyxvyt_required)
{
updateFieldRequired('db_table_main',0);
jQuery('#jform_db_table_main').prop('required','required');
jQuery('#jform_db_table_main').attr('aria-required',true);
jQuery('#jform_db_table_main').addClass('required');
jform_vvvvvyxvyv_required = false;
jform_vvvvvyxvyt_required = false;
}
}
else
{
jQuery('#jform_db_table_main').closest('.control-group').hide();
if (!jform_vvvvvyxvyv_required)
if (!jform_vvvvvyxvyt_required)
{
updateFieldRequired('db_table_main',1);
jQuery('#jform_db_table_main').removeAttr('required');
jQuery('#jform_db_table_main').removeAttr('aria-required');
jQuery('#jform_db_table_main').removeClass('required');
jform_vvvvvyxvyv_required = true;
jform_vvvvvyxvyt_required = true;
}
}
}
@ -347,26 +347,26 @@ function vvvvvyy(main_source_vvvvvyy)
if (main_source)
{
jQuery('#jform_db_selection').closest('.control-group').show();
if (jform_vvvvvyyvyw_required)
if (jform_vvvvvyyvyu_required)
{
updateFieldRequired('db_selection',0);
jQuery('#jform_db_selection').prop('required','required');
jQuery('#jform_db_selection').attr('aria-required',true);
jQuery('#jform_db_selection').addClass('required');
jform_vvvvvyyvyw_required = false;
jform_vvvvvyyvyu_required = false;
}
}
else
{
jQuery('#jform_db_selection').closest('.control-group').hide();
if (!jform_vvvvvyyvyw_required)
if (!jform_vvvvvyyvyu_required)
{
updateFieldRequired('db_selection',1);
jQuery('#jform_db_selection').removeAttr('required');
jQuery('#jform_db_selection').removeAttr('aria-required');
jQuery('#jform_db_selection').removeClass('required');
jform_vvvvvyyvyw_required = true;
jform_vvvvvyyvyu_required = true;
}
}
}
@ -389,26 +389,26 @@ function vvvvvyz(addcalculation_vvvvvyz)
if (addcalculation_vvvvvyz == 1)
{
jQuery('#jform_php_calculation').closest('.control-group').show();
if (jform_vvvvvyzvyx_required)
if (jform_vvvvvyzvyv_required)
{
updateFieldRequired('php_calculation',0);
jQuery('#jform_php_calculation').prop('required','required');
jQuery('#jform_php_calculation').attr('aria-required',true);
jQuery('#jform_php_calculation').addClass('required');
jform_vvvvvyzvyx_required = false;
jform_vvvvvyzvyv_required = false;
}
}
else
{
jQuery('#jform_php_calculation').closest('.control-group').hide();
if (!jform_vvvvvyzvyx_required)
if (!jform_vvvvvyzvyv_required)
{
updateFieldRequired('php_calculation',1);
jQuery('#jform_php_calculation').removeAttr('required');
jQuery('#jform_php_calculation').removeAttr('aria-required');
jQuery('#jform_php_calculation').removeClass('required');
jform_vvvvvyzvyx_required = true;
jform_vvvvvyzvyv_required = true;
}
}
}
@ -555,26 +555,26 @@ function vvvvvze(main_source_vvvvvze)
if (main_source)
{
jQuery('#jform_php_custom_get').closest('.control-group').show();
if (jform_vvvvvzevyy_required)
if (jform_vvvvvzevyw_required)
{
updateFieldRequired('php_custom_get',0);
jQuery('#jform_php_custom_get').prop('required','required');
jQuery('#jform_php_custom_get').attr('aria-required',true);
jQuery('#jform_php_custom_get').addClass('required');
jform_vvvvvzevyy_required = false;
jform_vvvvvzevyw_required = false;
}
}
else
{
jQuery('#jform_php_custom_get').closest('.control-group').hide();
if (!jform_vvvvvzevyy_required)
if (!jform_vvvvvzevyw_required)
{
updateFieldRequired('php_custom_get',1);
jQuery('#jform_php_custom_get').removeAttr('required');
jQuery('#jform_php_custom_get').removeAttr('aria-required');
jQuery('#jform_php_custom_get').removeClass('required');
jform_vvvvvzevyy_required = true;
jform_vvvvvzevyw_required = true;
}
}
}
@ -670,26 +670,26 @@ function vvvvvzg(add_php_before_getitem_vvvvvzg,gettype_vvvvvzg)
if (add_php_before_getitem && gettype)
{
jQuery('#jform_php_before_getitem').closest('.control-group').show();
if (jform_vvvvvzgvyz_required)
if (jform_vvvvvzgvyx_required)
{
updateFieldRequired('php_before_getitem',0);
jQuery('#jform_php_before_getitem').prop('required','required');
jQuery('#jform_php_before_getitem').attr('aria-required',true);
jQuery('#jform_php_before_getitem').addClass('required');
jform_vvvvvzgvyz_required = false;
jform_vvvvvzgvyx_required = false;
}
}
else
{
jQuery('#jform_php_before_getitem').closest('.control-group').hide();
if (!jform_vvvvvzgvyz_required)
if (!jform_vvvvvzgvyx_required)
{
updateFieldRequired('php_before_getitem',1);
jQuery('#jform_php_before_getitem').removeAttr('required');
jQuery('#jform_php_before_getitem').removeAttr('aria-required');
jQuery('#jform_php_before_getitem').removeClass('required');
jform_vvvvvzgvyz_required = true;
jform_vvvvvzgvyx_required = true;
}
}
}
@ -748,26 +748,26 @@ function vvvvvzh(add_php_after_getitem_vvvvvzh,gettype_vvvvvzh)
if (add_php_after_getitem && gettype)
{
jQuery('#jform_php_after_getitem').closest('.control-group').show();
if (jform_vvvvvzhvza_required)
if (jform_vvvvvzhvyy_required)
{
updateFieldRequired('php_after_getitem',0);
jQuery('#jform_php_after_getitem').prop('required','required');
jQuery('#jform_php_after_getitem').attr('aria-required',true);
jQuery('#jform_php_after_getitem').addClass('required');
jform_vvvvvzhvza_required = false;
jform_vvvvvzhvyy_required = false;
}
}
else
{
jQuery('#jform_php_after_getitem').closest('.control-group').hide();
if (!jform_vvvvvzhvza_required)
if (!jform_vvvvvzhvyy_required)
{
updateFieldRequired('php_after_getitem',1);
jQuery('#jform_php_after_getitem').removeAttr('required');
jQuery('#jform_php_after_getitem').removeAttr('aria-required');
jQuery('#jform_php_after_getitem').removeClass('required');
jform_vvvvvzhvza_required = true;
jform_vvvvvzhvyy_required = true;
}
}
}
@ -814,45 +814,45 @@ function vvvvvzj(gettype_vvvvvzj)
if (gettype)
{
jQuery('#jform_add_php_after_getitem').closest('.control-group').show();
if (jform_vvvvvzjvzb_required)
if (jform_vvvvvzjvyz_required)
{
updateFieldRequired('add_php_after_getitem',0);
jQuery('#jform_add_php_after_getitem').prop('required','required');
jQuery('#jform_add_php_after_getitem').attr('aria-required',true);
jQuery('#jform_add_php_after_getitem').addClass('required');
jform_vvvvvzjvzb_required = false;
jform_vvvvvzjvyz_required = false;
}
jQuery('#jform_add_php_before_getitem').closest('.control-group').show();
if (jform_vvvvvzjvzc_required)
if (jform_vvvvvzjvza_required)
{
updateFieldRequired('add_php_before_getitem',0);
jQuery('#jform_add_php_before_getitem').prop('required','required');
jQuery('#jform_add_php_before_getitem').attr('aria-required',true);
jQuery('#jform_add_php_before_getitem').addClass('required');
jform_vvvvvzjvzc_required = false;
jform_vvvvvzjvza_required = false;
}
}
else
{
jQuery('#jform_add_php_after_getitem').closest('.control-group').hide();
if (!jform_vvvvvzjvzb_required)
if (!jform_vvvvvzjvyz_required)
{
updateFieldRequired('add_php_after_getitem',1);
jQuery('#jform_add_php_after_getitem').removeAttr('required');
jQuery('#jform_add_php_after_getitem').removeAttr('aria-required');
jQuery('#jform_add_php_after_getitem').removeClass('required');
jform_vvvvvzjvzb_required = true;
jform_vvvvvzjvyz_required = true;
}
jQuery('#jform_add_php_before_getitem').closest('.control-group').hide();
if (!jform_vvvvvzjvzc_required)
if (!jform_vvvvvzjvza_required)
{
updateFieldRequired('add_php_before_getitem',1);
jQuery('#jform_add_php_before_getitem').removeAttr('required');
jQuery('#jform_add_php_before_getitem').removeAttr('aria-required');
jQuery('#jform_add_php_before_getitem').removeClass('required');
jform_vvvvvzjvzc_required = true;
jform_vvvvvzjvza_required = true;
}
}
}
@ -900,26 +900,26 @@ function vvvvvzk(add_php_getlistquery_vvvvvzk,gettype_vvvvvzk)
if (add_php_getlistquery && gettype)
{
jQuery('#jform_php_getlistquery').closest('.control-group').show();
if (jform_vvvvvzkvzd_required)
if (jform_vvvvvzkvzb_required)
{
updateFieldRequired('php_getlistquery',0);
jQuery('#jform_php_getlistquery').prop('required','required');
jQuery('#jform_php_getlistquery').attr('aria-required',true);
jQuery('#jform_php_getlistquery').addClass('required');
jform_vvvvvzkvzd_required = false;
jform_vvvvvzkvzb_required = false;
}
}
else
{
jQuery('#jform_php_getlistquery').closest('.control-group').hide();
if (!jform_vvvvvzkvzd_required)
if (!jform_vvvvvzkvzb_required)
{
updateFieldRequired('php_getlistquery',1);
jQuery('#jform_php_getlistquery').removeAttr('required');
jQuery('#jform_php_getlistquery').removeAttr('aria-required');
jQuery('#jform_php_getlistquery').removeClass('required');
jform_vvvvvzkvzd_required = true;
jform_vvvvvzkvzb_required = true;
}
}
}
@ -978,26 +978,26 @@ function vvvvvzl(add_php_before_getitems_vvvvvzl,gettype_vvvvvzl)
if (add_php_before_getitems && gettype)
{
jQuery('#jform_php_before_getitems').closest('.control-group').show();
if (jform_vvvvvzlvze_required)
if (jform_vvvvvzlvzc_required)
{
updateFieldRequired('php_before_getitems',0);
jQuery('#jform_php_before_getitems').prop('required','required');
jQuery('#jform_php_before_getitems').attr('aria-required',true);
jQuery('#jform_php_before_getitems').addClass('required');
jform_vvvvvzlvze_required = false;
jform_vvvvvzlvzc_required = false;
}
}
else
{
jQuery('#jform_php_before_getitems').closest('.control-group').hide();
if (!jform_vvvvvzlvze_required)
if (!jform_vvvvvzlvzc_required)
{
updateFieldRequired('php_before_getitems',1);
jQuery('#jform_php_before_getitems').removeAttr('required');
jQuery('#jform_php_before_getitems').removeAttr('aria-required');
jQuery('#jform_php_before_getitems').removeClass('required');
jform_vvvvvzlvze_required = true;
jform_vvvvvzlvzc_required = true;
}
}
}
@ -1056,26 +1056,26 @@ function vvvvvzm(add_php_after_getitems_vvvvvzm,gettype_vvvvvzm)
if (add_php_after_getitems && gettype)
{
jQuery('#jform_php_after_getitems').closest('.control-group').show();
if (jform_vvvvvzmvzf_required)
if (jform_vvvvvzmvzd_required)
{
updateFieldRequired('php_after_getitems',0);
jQuery('#jform_php_after_getitems').prop('required','required');
jQuery('#jform_php_after_getitems').attr('aria-required',true);
jQuery('#jform_php_after_getitems').addClass('required');
jform_vvvvvzmvzf_required = false;
jform_vvvvvzmvzd_required = false;
}
}
else
{
jQuery('#jform_php_after_getitems').closest('.control-group').hide();
if (!jform_vvvvvzmvzf_required)
if (!jform_vvvvvzmvzd_required)
{
updateFieldRequired('php_after_getitems',1);
jQuery('#jform_php_after_getitems').removeAttr('required');
jQuery('#jform_php_after_getitems').removeAttr('aria-required');
jQuery('#jform_php_after_getitems').removeClass('required');
jform_vvvvvzmvzf_required = true;
jform_vvvvvzmvzd_required = true;
}
}
}
@ -1122,64 +1122,64 @@ function vvvvvzo(gettype_vvvvvzo)
if (gettype)
{
jQuery('#jform_add_php_after_getitems').closest('.control-group').show();
if (jform_vvvvvzovzg_required)
if (jform_vvvvvzovze_required)
{
updateFieldRequired('add_php_after_getitems',0);
jQuery('#jform_add_php_after_getitems').prop('required','required');
jQuery('#jform_add_php_after_getitems').attr('aria-required',true);
jQuery('#jform_add_php_after_getitems').addClass('required');
jform_vvvvvzovzg_required = false;
jform_vvvvvzovze_required = false;
}
jQuery('#jform_add_php_before_getitems').closest('.control-group').show();
if (jform_vvvvvzovzh_required)
if (jform_vvvvvzovzf_required)
{
updateFieldRequired('add_php_before_getitems',0);
jQuery('#jform_add_php_before_getitems').prop('required','required');
jQuery('#jform_add_php_before_getitems').attr('aria-required',true);
jQuery('#jform_add_php_before_getitems').addClass('required');
jform_vvvvvzovzh_required = false;
jform_vvvvvzovzf_required = false;
}
jQuery('#jform_add_php_getlistquery').closest('.control-group').show();
if (jform_vvvvvzovzi_required)
if (jform_vvvvvzovzg_required)
{
updateFieldRequired('add_php_getlistquery',0);
jQuery('#jform_add_php_getlistquery').prop('required','required');
jQuery('#jform_add_php_getlistquery').attr('aria-required',true);
jQuery('#jform_add_php_getlistquery').addClass('required');
jform_vvvvvzovzi_required = false;
jform_vvvvvzovzg_required = false;
}
}
else
{
jQuery('#jform_add_php_after_getitems').closest('.control-group').hide();
if (!jform_vvvvvzovzg_required)
if (!jform_vvvvvzovze_required)
{
updateFieldRequired('add_php_after_getitems',1);
jQuery('#jform_add_php_after_getitems').removeAttr('required');
jQuery('#jform_add_php_after_getitems').removeAttr('aria-required');
jQuery('#jform_add_php_after_getitems').removeClass('required');
jform_vvvvvzovzg_required = true;
jform_vvvvvzovze_required = true;
}
jQuery('#jform_add_php_before_getitems').closest('.control-group').hide();
if (!jform_vvvvvzovzh_required)
if (!jform_vvvvvzovzf_required)
{
updateFieldRequired('add_php_before_getitems',1);
jQuery('#jform_add_php_before_getitems').removeAttr('required');
jQuery('#jform_add_php_before_getitems').removeAttr('aria-required');
jQuery('#jform_add_php_before_getitems').removeClass('required');
jform_vvvvvzovzh_required = true;
jform_vvvvvzovzf_required = true;
}
jQuery('#jform_add_php_getlistquery').closest('.control-group').hide();
if (!jform_vvvvvzovzi_required)
if (!jform_vvvvvzovzg_required)
{
updateFieldRequired('add_php_getlistquery',1);
jQuery('#jform_add_php_getlistquery').removeAttr('required');
jQuery('#jform_add_php_getlistquery').removeAttr('aria-required');
jQuery('#jform_add_php_getlistquery').removeClass('required');
jform_vvvvvzovzi_required = true;
jform_vvvvvzovzg_required = true;
}
}
}
@ -1215,26 +1215,26 @@ function vvvvvzp(gettype_vvvvvzp)
if (gettype)
{
jQuery('#jform_pagination').closest('.control-group').show();
if (jform_vvvvvzpvzj_required)
if (jform_vvvvvzpvzh_required)
{
updateFieldRequired('pagination',0);
jQuery('#jform_pagination').prop('required','required');
jQuery('#jform_pagination').attr('aria-required',true);
jQuery('#jform_pagination').addClass('required');
jform_vvvvvzpvzj_required = false;
jform_vvvvvzpvzh_required = false;
}
}
else
{
jQuery('#jform_pagination').closest('.control-group').hide();
if (!jform_vvvvvzpvzj_required)
if (!jform_vvvvvzpvzh_required)
{
updateFieldRequired('pagination',1);
jQuery('#jform_pagination').removeAttr('required');
jQuery('#jform_pagination').removeAttr('aria-required');
jQuery('#jform_pagination').removeClass('required');
jform_vvvvvzpvzj_required = true;
jform_vvvvvzpvzh_required = true;
}
}
}

View File

@ -23,14 +23,14 @@
/-----------------------------------------------------------------------------------------------------------------------------*/
// Some Global Values
jform_vvvvvzuvzo_required = false;
jform_vvvvvzvvzp_required = false;
jform_vvvvvzwvzq_required = false;
jform_vvvvvzxvzr_required = false;
jform_vvvvwaavzs_required = false;
jform_vvvvwabvzt_required = false;
jform_vvvvwacvzu_required = false;
jform_vvvvwadvzv_required = false;
jform_vvvvvzuvzm_required = false;
jform_vvvvvzvvzn_required = false;
jform_vvvvvzwvzo_required = false;
jform_vvvvvzxvzp_required = false;
jform_vvvvwaavzq_required = false;
jform_vvvvwabvzr_required = false;
jform_vvvvwacvzs_required = false;
jform_vvvvwadvzt_required = false;
// Initial Script
jQuery(document).ready(function()
@ -84,26 +84,26 @@ function vvvvvzu(datalenght_vvvvvzu)
if (datalenght)
{
jQuery('#jform_datalenght_other').closest('.control-group').show();
if (jform_vvvvvzuvzo_required)
if (jform_vvvvvzuvzm_required)
{
updateFieldRequired('datalenght_other',0);
jQuery('#jform_datalenght_other').prop('required','required');
jQuery('#jform_datalenght_other').attr('aria-required',true);
jQuery('#jform_datalenght_other').addClass('required');
jform_vvvvvzuvzo_required = false;
jform_vvvvvzuvzm_required = false;
}
}
else
{
jQuery('#jform_datalenght_other').closest('.control-group').hide();
if (!jform_vvvvvzuvzo_required)
if (!jform_vvvvvzuvzm_required)
{
updateFieldRequired('datalenght_other',1);
jQuery('#jform_datalenght_other').removeAttr('required');
jQuery('#jform_datalenght_other').removeAttr('aria-required');
jQuery('#jform_datalenght_other').removeClass('required');
jform_vvvvvzuvzo_required = true;
jform_vvvvvzuvzm_required = true;
}
}
}
@ -139,26 +139,26 @@ function vvvvvzv(datadefault_vvvvvzv)
if (datadefault)
{
jQuery('#jform_datadefault_other').closest('.control-group').show();
if (jform_vvvvvzvvzp_required)
if (jform_vvvvvzvvzn_required)
{
updateFieldRequired('datadefault_other',0);
jQuery('#jform_datadefault_other').prop('required','required');
jQuery('#jform_datadefault_other').attr('aria-required',true);
jQuery('#jform_datadefault_other').addClass('required');
jform_vvvvvzvvzp_required = false;
jform_vvvvvzvvzn_required = false;
}
}
else
{
jQuery('#jform_datadefault_other').closest('.control-group').hide();
if (!jform_vvvvvzvvzp_required)
if (!jform_vvvvvzvvzn_required)
{
updateFieldRequired('datadefault_other',1);
jQuery('#jform_datadefault_other').removeAttr('required');
jQuery('#jform_datadefault_other').removeAttr('aria-required');
jQuery('#jform_datadefault_other').removeClass('required');
jform_vvvvvzvvzp_required = true;
jform_vvvvvzvvzn_required = true;
}
}
}
@ -196,13 +196,13 @@ function vvvvvzw(datatype_vvvvvzw)
jQuery('#jform_datadefault').closest('.control-group').show();
jQuery('#jform_datalenght').closest('.control-group').show();
jQuery('#jform_indexes').closest('.control-group').show();
if (jform_vvvvvzwvzq_required)
if (jform_vvvvvzwvzo_required)
{
updateFieldRequired('indexes',0);
jQuery('#jform_indexes').prop('required','required');
jQuery('#jform_indexes').attr('aria-required',true);
jQuery('#jform_indexes').addClass('required');
jform_vvvvvzwvzq_required = false;
jform_vvvvvzwvzo_required = false;
}
}
@ -211,13 +211,13 @@ function vvvvvzw(datatype_vvvvvzw)
jQuery('#jform_datadefault').closest('.control-group').hide();
jQuery('#jform_datalenght').closest('.control-group').hide();
jQuery('#jform_indexes').closest('.control-group').hide();
if (!jform_vvvvvzwvzq_required)
if (!jform_vvvvvzwvzo_required)
{
updateFieldRequired('indexes',1);
jQuery('#jform_indexes').removeAttr('required');
jQuery('#jform_indexes').removeAttr('aria-required');
jQuery('#jform_indexes').removeClass('required');
jform_vvvvvzwvzq_required = true;
jform_vvvvvzwvzo_required = true;
}
}
}
@ -253,26 +253,26 @@ function vvvvvzx(datatype_vvvvvzx)
if (datatype)
{
jQuery('#jform_store').closest('.control-group').show();
if (jform_vvvvvzxvzr_required)
if (jform_vvvvvzxvzp_required)
{
updateFieldRequired('store',0);
jQuery('#jform_store').prop('required','required');
jQuery('#jform_store').attr('aria-required',true);
jQuery('#jform_store').addClass('required');
jform_vvvvvzxvzr_required = false;
jform_vvvvvzxvzp_required = false;
}
}
else
{
jQuery('#jform_store').closest('.control-group').hide();
if (!jform_vvvvvzxvzr_required)
if (!jform_vvvvvzxvzp_required)
{
updateFieldRequired('store',1);
jQuery('#jform_store').removeAttr('required');
jQuery('#jform_store').removeAttr('aria-required');
jQuery('#jform_store').removeClass('required');
jform_vvvvvzxvzr_required = true;
jform_vvvvvzxvzp_required = true;
}
}
}
@ -356,26 +356,26 @@ function vvvvwaa(add_css_view_vvvvwaa)
if (add_css_view_vvvvwaa == 1)
{
jQuery('#jform_css_view').closest('.control-group').show();
if (jform_vvvvwaavzs_required)
if (jform_vvvvwaavzq_required)
{
updateFieldRequired('css_view',0);
jQuery('#jform_css_view').prop('required','required');
jQuery('#jform_css_view').attr('aria-required',true);
jQuery('#jform_css_view').addClass('required');
jform_vvvvwaavzs_required = false;
jform_vvvvwaavzq_required = false;
}
}
else
{
jQuery('#jform_css_view').closest('.control-group').hide();
if (!jform_vvvvwaavzs_required)
if (!jform_vvvvwaavzq_required)
{
updateFieldRequired('css_view',1);
jQuery('#jform_css_view').removeAttr('required');
jQuery('#jform_css_view').removeAttr('aria-required');
jQuery('#jform_css_view').removeClass('required');
jform_vvvvwaavzs_required = true;
jform_vvvvwaavzq_required = true;
}
}
}
@ -387,26 +387,26 @@ function vvvvwab(add_css_views_vvvvwab)
if (add_css_views_vvvvwab == 1)
{
jQuery('#jform_css_views').closest('.control-group').show();
if (jform_vvvvwabvzt_required)
if (jform_vvvvwabvzr_required)
{
updateFieldRequired('css_views',0);
jQuery('#jform_css_views').prop('required','required');
jQuery('#jform_css_views').attr('aria-required',true);
jQuery('#jform_css_views').addClass('required');
jform_vvvvwabvzt_required = false;
jform_vvvvwabvzr_required = false;
}
}
else
{
jQuery('#jform_css_views').closest('.control-group').hide();
if (!jform_vvvvwabvzt_required)
if (!jform_vvvvwabvzr_required)
{
updateFieldRequired('css_views',1);
jQuery('#jform_css_views').removeAttr('required');
jQuery('#jform_css_views').removeAttr('aria-required');
jQuery('#jform_css_views').removeClass('required');
jform_vvvvwabvzt_required = true;
jform_vvvvwabvzr_required = true;
}
}
}
@ -418,26 +418,26 @@ function vvvvwac(add_javascript_view_footer_vvvvwac)
if (add_javascript_view_footer_vvvvwac == 1)
{
jQuery('#jform_javascript_view_footer').closest('.control-group').show();
if (jform_vvvvwacvzu_required)
if (jform_vvvvwacvzs_required)
{
updateFieldRequired('javascript_view_footer',0);
jQuery('#jform_javascript_view_footer').prop('required','required');
jQuery('#jform_javascript_view_footer').attr('aria-required',true);
jQuery('#jform_javascript_view_footer').addClass('required');
jform_vvvvwacvzu_required = false;
jform_vvvvwacvzs_required = false;
}
}
else
{
jQuery('#jform_javascript_view_footer').closest('.control-group').hide();
if (!jform_vvvvwacvzu_required)
if (!jform_vvvvwacvzs_required)
{
updateFieldRequired('javascript_view_footer',1);
jQuery('#jform_javascript_view_footer').removeAttr('required');
jQuery('#jform_javascript_view_footer').removeAttr('aria-required');
jQuery('#jform_javascript_view_footer').removeClass('required');
jform_vvvvwacvzu_required = true;
jform_vvvvwacvzs_required = true;
}
}
}
@ -449,26 +449,26 @@ function vvvvwad(add_javascript_views_footer_vvvvwad)
if (add_javascript_views_footer_vvvvwad == 1)
{
jQuery('#jform_javascript_views_footer').closest('.control-group').show();
if (jform_vvvvwadvzv_required)
if (jform_vvvvwadvzt_required)
{
updateFieldRequired('javascript_views_footer',0);
jQuery('#jform_javascript_views_footer').prop('required','required');
jQuery('#jform_javascript_views_footer').attr('aria-required',true);
jQuery('#jform_javascript_views_footer').addClass('required');
jform_vvvvwadvzv_required = false;
jform_vvvvwadvzt_required = false;
}
}
else
{
jQuery('#jform_javascript_views_footer').closest('.control-group').hide();
if (!jform_vvvvwadvzv_required)
if (!jform_vvvvwadvzt_required)
{
updateFieldRequired('javascript_views_footer',1);
jQuery('#jform_javascript_views_footer').removeAttr('required');
jQuery('#jform_javascript_views_footer').removeAttr('aria-required');
jQuery('#jform_javascript_views_footer').removeClass('required');
jform_vvvvwadvzv_required = true;
jform_vvvvwadvzt_required = true;
}
}
}

View File

@ -23,12 +23,12 @@
/-----------------------------------------------------------------------------------------------------------------------------*/
// Some Global Values
jform_vvvvwaevzy_required = false;
jform_vvvvwafvzz_required = false;
jform_vvvvwagwaa_required = false;
jform_vvvvwahwab_required = false;
jform_vvvvwaiwac_required = false;
jform_vvvvwajwad_required = false;
jform_vvvvwaevzw_required = false;
jform_vvvvwafvzx_required = false;
jform_vvvvwagvzy_required = false;
jform_vvvvwahvzz_required = false;
jform_vvvvwaiwaa_required = false;
jform_vvvvwajwab_required = false;
// Initial Script
jQuery(document).ready(function()
@ -59,26 +59,26 @@ function vvvvwae(location_vvvvwae)
if (location_vvvvwae == 1)
{
jQuery('#jform_admin_view').closest('.control-group').show();
if (jform_vvvvwaevzy_required)
if (jform_vvvvwaevzw_required)
{
updateFieldRequired('admin_view',0);
jQuery('#jform_admin_view').prop('required','required');
jQuery('#jform_admin_view').attr('aria-required',true);
jQuery('#jform_admin_view').addClass('required');
jform_vvvvwaevzy_required = false;
jform_vvvvwaevzw_required = false;
}
}
else
{
jQuery('#jform_admin_view').closest('.control-group').hide();
if (!jform_vvvvwaevzy_required)
if (!jform_vvvvwaevzw_required)
{
updateFieldRequired('admin_view',1);
jQuery('#jform_admin_view').removeAttr('required');
jQuery('#jform_admin_view').removeAttr('aria-required');
jQuery('#jform_admin_view').removeClass('required');
jform_vvvvwaevzy_required = true;
jform_vvvvwaevzw_required = true;
}
}
}
@ -90,26 +90,26 @@ function vvvvwaf(location_vvvvwaf)
if (location_vvvvwaf == 2)
{
jQuery('#jform_site_view').closest('.control-group').show();
if (jform_vvvvwafvzz_required)
if (jform_vvvvwafvzx_required)
{
updateFieldRequired('site_view',0);
jQuery('#jform_site_view').prop('required','required');
jQuery('#jform_site_view').attr('aria-required',true);
jQuery('#jform_site_view').addClass('required');
jform_vvvvwafvzz_required = false;
jform_vvvvwafvzx_required = false;
}
}
else
{
jQuery('#jform_site_view').closest('.control-group').hide();
if (!jform_vvvvwafvzz_required)
if (!jform_vvvvwafvzx_required)
{
updateFieldRequired('site_view',1);
jQuery('#jform_site_view').removeAttr('required');
jQuery('#jform_site_view').removeAttr('aria-required');
jQuery('#jform_site_view').removeClass('required');
jform_vvvvwafvzz_required = true;
jform_vvvvwafvzx_required = true;
}
}
}
@ -134,26 +134,26 @@ function vvvvwag(type_vvvvwag)
if (type)
{
jQuery('#jform_url').closest('.control-group').show();
if (jform_vvvvwagwaa_required)
if (jform_vvvvwagvzy_required)
{
updateFieldRequired('url',0);
jQuery('#jform_url').prop('required','required');
jQuery('#jform_url').attr('aria-required',true);
jQuery('#jform_url').addClass('required');
jform_vvvvwagwaa_required = false;
jform_vvvvwagvzy_required = false;
}
}
else
{
jQuery('#jform_url').closest('.control-group').hide();
if (!jform_vvvvwagwaa_required)
if (!jform_vvvvwagvzy_required)
{
updateFieldRequired('url',1);
jQuery('#jform_url').removeAttr('required');
jQuery('#jform_url').removeAttr('aria-required');
jQuery('#jform_url').removeClass('required');
jform_vvvvwagwaa_required = true;
jform_vvvvwagvzy_required = true;
}
}
}
@ -189,26 +189,26 @@ function vvvvwah(type_vvvvwah)
if (type)
{
jQuery('#jform_article').closest('.control-group').show();
if (jform_vvvvwahwab_required)
if (jform_vvvvwahvzz_required)
{
updateFieldRequired('article',0);
jQuery('#jform_article').prop('required','required');
jQuery('#jform_article').attr('aria-required',true);
jQuery('#jform_article').addClass('required');
jform_vvvvwahwab_required = false;
jform_vvvvwahvzz_required = false;
}
}
else
{
jQuery('#jform_article').closest('.control-group').hide();
if (!jform_vvvvwahwab_required)
if (!jform_vvvvwahvzz_required)
{
updateFieldRequired('article',1);
jQuery('#jform_article').removeAttr('required');
jQuery('#jform_article').removeAttr('aria-required');
jQuery('#jform_article').removeClass('required');
jform_vvvvwahwab_required = true;
jform_vvvvwahvzz_required = true;
}
}
}
@ -244,26 +244,26 @@ function vvvvwai(type_vvvvwai)
if (type)
{
jQuery('#jform_content-lbl').closest('.control-group').show();
if (jform_vvvvwaiwac_required)
if (jform_vvvvwaiwaa_required)
{
updateFieldRequired('content',0);
jQuery('#jform_content').prop('required','required');
jQuery('#jform_content').attr('aria-required',true);
jQuery('#jform_content').addClass('required');
jform_vvvvwaiwac_required = false;
jform_vvvvwaiwaa_required = false;
}
}
else
{
jQuery('#jform_content-lbl').closest('.control-group').hide();
if (!jform_vvvvwaiwac_required)
if (!jform_vvvvwaiwaa_required)
{
updateFieldRequired('content',1);
jQuery('#jform_content').removeAttr('required');
jQuery('#jform_content').removeAttr('aria-required');
jQuery('#jform_content').removeClass('required');
jform_vvvvwaiwac_required = true;
jform_vvvvwaiwaa_required = true;
}
}
}
@ -286,26 +286,26 @@ function vvvvwaj(target_vvvvwaj)
if (target_vvvvwaj == 1)
{
jQuery('#jform_groups').closest('.control-group').show();
if (jform_vvvvwajwad_required)
if (jform_vvvvwajwab_required)
{
updateFieldRequired('groups',0);
jQuery('#jform_groups').prop('required','required');
jQuery('#jform_groups').attr('aria-required',true);
jQuery('#jform_groups').addClass('required');
jform_vvvvwajwad_required = false;
jform_vvvvwajwab_required = false;
}
}
else
{
jQuery('#jform_groups').closest('.control-group').hide();
if (!jform_vvvvwajwad_required)
if (!jform_vvvvwajwab_required)
{
updateFieldRequired('groups',1);
jQuery('#jform_groups').removeAttr('required');
jQuery('#jform_groups').removeAttr('aria-required');
jQuery('#jform_groups').removeClass('required');
jform_vvvvwajwad_required = true;
jform_vvvvwajwab_required = true;
}
}
}

View File

@ -23,7 +23,7 @@
/-----------------------------------------------------------------------------------------------------------------------------*/
// Some Global Values
jform_vvvvvytvyr_required = false;
jform_vvvvvytvyp_required = false;
// Initial Script
jQuery(document).ready(function()
@ -39,26 +39,26 @@ function vvvvvyt(add_php_view_vvvvvyt)
if (add_php_view_vvvvvyt == 1)
{
jQuery('#jform_php_view').closest('.control-group').show();
if (jform_vvvvvytvyr_required)
if (jform_vvvvvytvyp_required)
{
updateFieldRequired('php_view',0);
jQuery('#jform_php_view').prop('required','required');
jQuery('#jform_php_view').attr('aria-required',true);
jQuery('#jform_php_view').addClass('required');
jform_vvvvvytvyr_required = false;
jform_vvvvvytvyp_required = false;
}
}
else
{
jQuery('#jform_php_view').closest('.control-group').hide();
if (!jform_vvvvvytvyr_required)
if (!jform_vvvvvytvyp_required)
{
updateFieldRequired('php_view',1);
jQuery('#jform_php_view').removeAttr('required');
jQuery('#jform_php_view').removeAttr('aria-required');
jQuery('#jform_php_view').removeClass('required');
jform_vvvvvytvyr_required = true;
jform_vvvvvytvyp_required = true;
}
}
}

View File

@ -23,16 +23,16 @@
/-----------------------------------------------------------------------------------------------------------------------------*/
// Some Global Values
jform_vvvvvyivyf_required = false;
jform_vvvvvyjvyg_required = false;
jform_vvvvvykvyh_required = false;
jform_vvvvvylvyi_required = false;
jform_vvvvvymvyj_required = false;
jform_vvvvvynvyk_required = false;
jform_vvvvvyovyl_required = false;
jform_vvvvvypvym_required = false;
jform_vvvvvyivye_required = false;
jform_vvvvvyjvyf_required = false;
jform_vvvvvykvyg_required = false;
jform_vvvvvylvyh_required = false;
jform_vvvvvymvyi_required = false;
jform_vvvvvynvyj_required = false;
jform_vvvvvyovyk_required = false;
jform_vvvvvypvyl_required = false;
jform_vvvvvyqvym_required = false;
jform_vvvvvyqvyn_required = false;
jform_vvvvvyqvyo_required = false;
// Initial Script
jQuery(document).ready(function()
@ -75,26 +75,26 @@ function vvvvvyi(add_php_view_vvvvvyi)
if (add_php_view_vvvvvyi == 1)
{
jQuery('#jform_php_view').closest('.control-group').show();
if (jform_vvvvvyivyf_required)
if (jform_vvvvvyivye_required)
{
updateFieldRequired('php_view',0);
jQuery('#jform_php_view').prop('required','required');
jQuery('#jform_php_view').attr('aria-required',true);
jQuery('#jform_php_view').addClass('required');
jform_vvvvvyivyf_required = false;
jform_vvvvvyivye_required = false;
}
}
else
{
jQuery('#jform_php_view').closest('.control-group').hide();
if (!jform_vvvvvyivyf_required)
if (!jform_vvvvvyivye_required)
{
updateFieldRequired('php_view',1);
jQuery('#jform_php_view').removeAttr('required');
jQuery('#jform_php_view').removeAttr('aria-required');
jQuery('#jform_php_view').removeClass('required');
jform_vvvvvyivyf_required = true;
jform_vvvvvyivye_required = true;
}
}
}
@ -106,26 +106,26 @@ function vvvvvyj(add_php_jview_display_vvvvvyj)
if (add_php_jview_display_vvvvvyj == 1)
{
jQuery('#jform_php_jview_display').closest('.control-group').show();
if (jform_vvvvvyjvyg_required)
if (jform_vvvvvyjvyf_required)
{
updateFieldRequired('php_jview_display',0);
jQuery('#jform_php_jview_display').prop('required','required');
jQuery('#jform_php_jview_display').attr('aria-required',true);
jQuery('#jform_php_jview_display').addClass('required');
jform_vvvvvyjvyg_required = false;
jform_vvvvvyjvyf_required = false;
}
}
else
{
jQuery('#jform_php_jview_display').closest('.control-group').hide();
if (!jform_vvvvvyjvyg_required)
if (!jform_vvvvvyjvyf_required)
{
updateFieldRequired('php_jview_display',1);
jQuery('#jform_php_jview_display').removeAttr('required');
jQuery('#jform_php_jview_display').removeAttr('aria-required');
jQuery('#jform_php_jview_display').removeClass('required');
jform_vvvvvyjvyg_required = true;
jform_vvvvvyjvyf_required = true;
}
}
}
@ -137,26 +137,26 @@ function vvvvvyk(add_php_jview_vvvvvyk)
if (add_php_jview_vvvvvyk == 1)
{
jQuery('#jform_php_jview').closest('.control-group').show();
if (jform_vvvvvykvyh_required)
if (jform_vvvvvykvyg_required)
{
updateFieldRequired('php_jview',0);
jQuery('#jform_php_jview').prop('required','required');
jQuery('#jform_php_jview').attr('aria-required',true);
jQuery('#jform_php_jview').addClass('required');
jform_vvvvvykvyh_required = false;
jform_vvvvvykvyg_required = false;
}
}
else
{
jQuery('#jform_php_jview').closest('.control-group').hide();
if (!jform_vvvvvykvyh_required)
if (!jform_vvvvvykvyg_required)
{
updateFieldRequired('php_jview',1);
jQuery('#jform_php_jview').removeAttr('required');
jQuery('#jform_php_jview').removeAttr('aria-required');
jQuery('#jform_php_jview').removeClass('required');
jform_vvvvvykvyh_required = true;
jform_vvvvvykvyg_required = true;
}
}
}
@ -168,26 +168,26 @@ function vvvvvyl(add_php_document_vvvvvyl)
if (add_php_document_vvvvvyl == 1)
{
jQuery('#jform_php_document').closest('.control-group').show();
if (jform_vvvvvylvyi_required)
if (jform_vvvvvylvyh_required)
{
updateFieldRequired('php_document',0);
jQuery('#jform_php_document').prop('required','required');
jQuery('#jform_php_document').attr('aria-required',true);
jQuery('#jform_php_document').addClass('required');
jform_vvvvvylvyi_required = false;
jform_vvvvvylvyh_required = false;
}
}
else
{
jQuery('#jform_php_document').closest('.control-group').hide();
if (!jform_vvvvvylvyi_required)
if (!jform_vvvvvylvyh_required)
{
updateFieldRequired('php_document',1);
jQuery('#jform_php_document').removeAttr('required');
jQuery('#jform_php_document').removeAttr('aria-required');
jQuery('#jform_php_document').removeClass('required');
jform_vvvvvylvyi_required = true;
jform_vvvvvylvyh_required = true;
}
}
}
@ -199,26 +199,26 @@ function vvvvvym(add_css_document_vvvvvym)
if (add_css_document_vvvvvym == 1)
{
jQuery('#jform_css_document').closest('.control-group').show();
if (jform_vvvvvymvyj_required)
if (jform_vvvvvymvyi_required)
{
updateFieldRequired('css_document',0);
jQuery('#jform_css_document').prop('required','required');
jQuery('#jform_css_document').attr('aria-required',true);
jQuery('#jform_css_document').addClass('required');
jform_vvvvvymvyj_required = false;
jform_vvvvvymvyi_required = false;
}
}
else
{
jQuery('#jform_css_document').closest('.control-group').hide();
if (!jform_vvvvvymvyj_required)
if (!jform_vvvvvymvyi_required)
{
updateFieldRequired('css_document',1);
jQuery('#jform_css_document').removeAttr('required');
jQuery('#jform_css_document').removeAttr('aria-required');
jQuery('#jform_css_document').removeClass('required');
jform_vvvvvymvyj_required = true;
jform_vvvvvymvyi_required = true;
}
}
}
@ -230,26 +230,26 @@ function vvvvvyn(add_js_document_vvvvvyn)
if (add_js_document_vvvvvyn == 1)
{
jQuery('#jform_js_document').closest('.control-group').show();
if (jform_vvvvvynvyk_required)
if (jform_vvvvvynvyj_required)
{
updateFieldRequired('js_document',0);
jQuery('#jform_js_document').prop('required','required');
jQuery('#jform_js_document').attr('aria-required',true);
jQuery('#jform_js_document').addClass('required');
jform_vvvvvynvyk_required = false;
jform_vvvvvynvyj_required = false;
}
}
else
{
jQuery('#jform_js_document').closest('.control-group').hide();
if (!jform_vvvvvynvyk_required)
if (!jform_vvvvvynvyj_required)
{
updateFieldRequired('js_document',1);
jQuery('#jform_js_document').removeAttr('required');
jQuery('#jform_js_document').removeAttr('aria-required');
jQuery('#jform_js_document').removeClass('required');
jform_vvvvvynvyk_required = true;
jform_vvvvvynvyj_required = true;
}
}
}
@ -261,26 +261,26 @@ function vvvvvyo(add_css_vvvvvyo)
if (add_css_vvvvvyo == 1)
{
jQuery('#jform_css').closest('.control-group').show();
if (jform_vvvvvyovyl_required)
if (jform_vvvvvyovyk_required)
{
updateFieldRequired('css',0);
jQuery('#jform_css').prop('required','required');
jQuery('#jform_css').attr('aria-required',true);
jQuery('#jform_css').addClass('required');
jform_vvvvvyovyl_required = false;
jform_vvvvvyovyk_required = false;
}
}
else
{
jQuery('#jform_css').closest('.control-group').hide();
if (!jform_vvvvvyovyl_required)
if (!jform_vvvvvyovyk_required)
{
updateFieldRequired('css',1);
jQuery('#jform_css').removeAttr('required');
jQuery('#jform_css').removeAttr('aria-required');
jQuery('#jform_css').removeClass('required');
jform_vvvvvyovyl_required = true;
jform_vvvvvyovyk_required = true;
}
}
}
@ -293,13 +293,13 @@ function vvvvvyp(add_php_ajax_vvvvvyp)
{
jQuery('#jform_ajax_input-lbl').closest('.control-group').show();
jQuery('#jform_php_ajaxmethod').closest('.control-group').show();
if (jform_vvvvvypvym_required)
if (jform_vvvvvypvyl_required)
{
updateFieldRequired('php_ajaxmethod',0);
jQuery('#jform_php_ajaxmethod').prop('required','required');
jQuery('#jform_php_ajaxmethod').attr('aria-required',true);
jQuery('#jform_php_ajaxmethod').addClass('required');
jform_vvvvvypvym_required = false;
jform_vvvvvypvyl_required = false;
}
}
@ -307,13 +307,13 @@ function vvvvvyp(add_php_ajax_vvvvvyp)
{
jQuery('#jform_ajax_input-lbl').closest('.control-group').hide();
jQuery('#jform_php_ajaxmethod').closest('.control-group').hide();
if (!jform_vvvvvypvym_required)
if (!jform_vvvvvypvyl_required)
{
updateFieldRequired('php_ajaxmethod',1);
jQuery('#jform_php_ajaxmethod').removeAttr('required');
jQuery('#jform_php_ajaxmethod').removeAttr('aria-required');
jQuery('#jform_php_ajaxmethod').removeClass('required');
jform_vvvvvypvym_required = true;
jform_vvvvvypvyl_required = true;
}
}
}
@ -326,23 +326,23 @@ function vvvvvyq(add_custom_button_vvvvvyq)
{
jQuery('#jform_custom_button-lbl').closest('.control-group').show();
jQuery('#jform_php_controller').closest('.control-group').show();
if (jform_vvvvvyqvyn_required)
if (jform_vvvvvyqvym_required)
{
updateFieldRequired('php_controller',0);
jQuery('#jform_php_controller').prop('required','required');
jQuery('#jform_php_controller').attr('aria-required',true);
jQuery('#jform_php_controller').addClass('required');
jform_vvvvvyqvyn_required = false;
jform_vvvvvyqvym_required = false;
}
jQuery('#jform_php_model').closest('.control-group').show();
if (jform_vvvvvyqvyo_required)
if (jform_vvvvvyqvyn_required)
{
updateFieldRequired('php_model',0);
jQuery('#jform_php_model').prop('required','required');
jQuery('#jform_php_model').attr('aria-required',true);
jQuery('#jform_php_model').addClass('required');
jform_vvvvvyqvyo_required = false;
jform_vvvvvyqvyn_required = false;
}
}
@ -350,22 +350,22 @@ function vvvvvyq(add_custom_button_vvvvvyq)
{
jQuery('#jform_custom_button-lbl').closest('.control-group').hide();
jQuery('#jform_php_controller').closest('.control-group').hide();
if (!jform_vvvvvyqvyn_required)
if (!jform_vvvvvyqvym_required)
{
updateFieldRequired('php_controller',1);
jQuery('#jform_php_controller').removeAttr('required');
jQuery('#jform_php_controller').removeAttr('aria-required');
jQuery('#jform_php_controller').removeClass('required');
jform_vvvvvyqvyn_required = true;
jform_vvvvvyqvym_required = true;
}
jQuery('#jform_php_model').closest('.control-group').hide();
if (!jform_vvvvvyqvyo_required)
if (!jform_vvvvvyqvyn_required)
{
updateFieldRequired('php_model',1);
jQuery('#jform_php_model').removeAttr('required');
jQuery('#jform_php_model').removeAttr('aria-required');
jQuery('#jform_php_model').removeClass('required');
jform_vvvvvyqvyo_required = true;
jform_vvvvvyqvyn_required = true;
}
}
}

View File

@ -130,6 +130,7 @@
class="list_class"
multiple="false"
default="0"
required="true"
/>
<!-- Heading Field. Type: Text. (joomla) -->
<field
@ -154,31 +155,36 @@
class="list_class"
multiple="false"
default="0"
required="true"
button="true"
/>
<!-- Description Field. Type: Textarea. (joomla) -->
<!-- Contributor_email Field. Type: Text. (joomla) -->
<field
type="textarea"
name="description"
label="COM_COMPONENTBUILDER_SNIPPET_DESCRIPTION_LABEL"
rows="11"
cols="10"
description="COM_COMPONENTBUILDER_SNIPPET_DESCRIPTION_DESCRIPTION"
class="text_area span12"
filter="HTML"
hint="COM_COMPONENTBUILDER_SNIPPET_DESCRIPTION_HINT"
type="text"
name="contributor_email"
label="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_EMAIL_LABEL"
size="10"
maxlength="50"
description="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_EMAIL_DESCRIPTION"
class="text_area"
readonly="true"
filter="STRING"
message="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_EMAIL_MESSAGE"
hint="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_EMAIL_HINT"
/>
<!-- Snippet Field. Type: Textarea. (joomla) -->
<!-- Contributor_website Field. Type: Text. (joomla) -->
<field
type="textarea"
name="snippet"
label="COM_COMPONENTBUILDER_SNIPPET_SNIPPET_LABEL"
rows="27"
cols="10"
class="text_area span12"
filter="raw"
hint="COM_COMPONENTBUILDER_SNIPPET_SNIPPET_HINT"
required="true"
type="text"
name="contributor_website"
label="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_WEBSITE_LABEL"
size="10"
maxlength="50"
description="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_WEBSITE_DESCRIPTION"
class="text_area"
readonly="true"
filter="STRING"
message="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_WEBSITE_MESSAGE"
hint="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_WEBSITE_HINT"
/>
<!-- Usage Field. Type: Textarea. (joomla) -->
<field
@ -192,6 +198,60 @@
filter="STRING"
hint="COM_COMPONENTBUILDER_SNIPPET_USAGE_HINT"
/>
<!-- Snippet Field. Type: Textarea. (joomla) -->
<field
type="textarea"
name="snippet"
label="COM_COMPONENTBUILDER_SNIPPET_SNIPPET_LABEL"
rows="27"
cols="10"
class="text_area span12"
filter="raw"
hint="COM_COMPONENTBUILDER_SNIPPET_SNIPPET_HINT"
required="true"
/>
<!-- Description Field. Type: Textarea. (joomla) -->
<field
type="textarea"
name="description"
label="COM_COMPONENTBUILDER_SNIPPET_DESCRIPTION_LABEL"
rows="11"
cols="10"
description="COM_COMPONENTBUILDER_SNIPPET_DESCRIPTION_DESCRIPTION"
class="text_area span12"
filter="HTML"
hint="COM_COMPONENTBUILDER_SNIPPET_DESCRIPTION_HINT"
/>
<!-- Contributor_name Field. Type: Text. (joomla) -->
<field
type="text"
name="contributor_name"
label="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_NAME_LABEL"
size="10"
maxlength="50"
description="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_NAME_DESCRIPTION"
class="text_area"
readonly="true"
filter="STRING"
message="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_NAME_MESSAGE"
hint="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_NAME_HINT"
/>
<!-- Contributor_company Field. Type: Text. (joomla) -->
<field
type="text"
name="contributor_company"
label="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_COMPANY_LABEL"
size="10"
maxlength="50"
description="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_COMPANY_DESCRIPTION"
class="text_area"
readonly="true"
filter="STRING"
message="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_COMPANY_MESSAGE"
hint="COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR_COMPANY_HINT"
/>
<!-- Note_contributor_details Field. Type: Note. A None Database Field. (joomla) -->
<field type="note" name="note_contributor_details" label="COM_COMPONENTBUILDER_SNIPPET_NOTE_CONTRIBUTOR_DETAILS_LABEL" description="COM_COMPONENTBUILDER_SNIPPET_NOTE_CONTRIBUTOR_DETAILS_DESCRIPTION" heading="h4" class="alert alert-info note_contributor_details" />
</fieldset>
<!-- Access Control Fields. -->

View File

@ -23,7 +23,7 @@
/-----------------------------------------------------------------------------------------------------------------------------*/
// Some Global Values
jform_vvvvvysvyq_required = false;
jform_vvvvvysvyo_required = false;
// Initial Script
jQuery(document).ready(function()
@ -39,26 +39,26 @@ function vvvvvys(add_php_view_vvvvvys)
if (add_php_view_vvvvvys == 1)
{
jQuery('#jform_php_view').closest('.control-group').show();
if (jform_vvvvvysvyq_required)
if (jform_vvvvvysvyo_required)
{
updateFieldRequired('php_view',0);
jQuery('#jform_php_view').prop('required','required');
jQuery('#jform_php_view').attr('aria-required',true);
jQuery('#jform_php_view').addClass('required');
jform_vvvvvysvyq_required = false;
jform_vvvvvysvyo_required = false;
}
}
else
{
jQuery('#jform_php_view').closest('.control-group').hide();
if (!jform_vvvvvysvyq_required)
if (!jform_vvvvvysvyo_required)
{
updateFieldRequired('php_view',1);
jQuery('#jform_php_view').removeAttr('required');
jQuery('#jform_php_view').removeAttr('aria-required');
jQuery('#jform_php_view').removeClass('required');
jform_vvvvvysvyq_required = true;
jform_vvvvvysvyo_required = true;
}
}
}

View File

@ -112,7 +112,7 @@ class ComponentbuilderModelFtp extends JModelAdmin
$item->tags->getTagIds($item->id, 'com_componentbuilder.ftp');
}
}
$this->sales_server_ftpupdate_server_ftp_vvvz = $item->id;
$this->sales_server_ftpupdate_server_ftp_vvvx = $item->id;
return $item;
}
@ -122,7 +122,7 @@ class ComponentbuilderModelFtp extends JModelAdmin
*
* @return mixed An array of data items on success, false on failure.
*/
public function getVzxlinked_components()
public function getVzvlinked_components()
{
// Get the user object.
$user = JFactory::getUser();
@ -136,15 +136,15 @@ class ComponentbuilderModelFtp extends JModelAdmin
// From the componentbuilder_joomla_component table
$query->from($db->quoteName('#__componentbuilder_joomla_component', 'a'));
// Filter by sales_server_ftpupdate_server_ftp_vvvz global.
$sales_server_ftpupdate_server_ftp_vvvz = $this->sales_server_ftpupdate_server_ftp_vvvz;
if (is_numeric($sales_server_ftpupdate_server_ftp_vvvz ))
// Filter by sales_server_ftpupdate_server_ftp_vvvx global.
$sales_server_ftpupdate_server_ftp_vvvx = $this->sales_server_ftpupdate_server_ftp_vvvx;
if (is_numeric($sales_server_ftpupdate_server_ftp_vvvx ))
{
$query->where('a.sales_server_ftp = ' . (int) $sales_server_ftpupdate_server_ftp_vvvz . ' OR a.update_server_ftp = ' . (int) $sales_server_ftpupdate_server_ftp_vvvz, ' OR');
$query->where('a.sales_server_ftp = ' . (int) $sales_server_ftpupdate_server_ftp_vvvx . ' OR a.update_server_ftp = ' . (int) $sales_server_ftpupdate_server_ftp_vvvx, ' OR');
}
elseif (is_string($sales_server_ftpupdate_server_ftp_vvvz))
elseif (is_string($sales_server_ftpupdate_server_ftp_vvvx))
{
$query->where('a.sales_server_ftp = ' . $db->quote($sales_server_ftpupdate_server_ftp_vvvz) . ' OR a.update_server_ftp = ' . $db->quote($sales_server_ftpupdate_server_ftp_vvvz), ' OR');
$query->where('a.sales_server_ftp = ' . $db->quote($sales_server_ftpupdate_server_ftp_vvvx) . ' OR a.update_server_ftp = ' . $db->quote($sales_server_ftpupdate_server_ftp_vvvx), ' OR');
}
else
{

View File

@ -229,102 +229,9 @@ class ComponentbuilderModelSite_view extends JModelAdmin
$item->tags = new JHelperTags;
$item->tags->getTagIds($item->id, 'com_componentbuilder.site_view');
}
}
$this->addsite_viewsvvvx = $item->id;
}
return $item;
}
/**
* Method to get list data.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getVyplinked_components()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the componentbuilder_joomla_component table
$query->from($db->quoteName('#__componentbuilder_joomla_component', 'a'));
// Join over the asset groups.
$query->select('ag.title AS access_level');
$query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access');
// Filter by access level.
if ($access = $this->getState('filter.access'))
{
$query->where('a.access = ' . (int) $access);
}
// Implement View Level Access
if (!$user->authorise('core.options', 'com_componentbuilder'))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
// Order the results by ordering
$query->order('a.published ASC');
$query->order('a.ordering ASC');
// Load the items
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
$items = $db->loadObjectList();
// set values to display correctly.
if (ComponentbuilderHelper::checkArray($items))
{
// get user object.
$user = JFactory::getUser();
foreach ($items as $nr => &$item)
{
$access = ($user->authorise('joomla_component.access', 'com_componentbuilder.joomla_component.' . (int) $item->id) && $user->authorise('joomla_component.access', 'com_componentbuilder'));
if (!$access)
{
unset($items[$nr]);
continue;
}
}
}
// Filter by addsite_viewsvvvx in this Repetable Field
if (ComponentbuilderHelper::checkArray($items) && isset($this->addsite_viewsvvvx))
{
foreach ($items as $nr => &$item)
{
if (isset($item->addsite_views) && ComponentbuilderHelper::checkJson($item->addsite_views))
{
$tmpArray = json_decode($item->addsite_views,true);
if (!isset($tmpArray['siteview']) || !ComponentbuilderHelper::checkArray($tmpArray['siteview']) || !in_array($this->addsite_viewsvvvx, $tmpArray['siteview']))
{
unset($items[$nr]);
continue;
}
}
else
{
unset($items[$nr]);
continue;
}
}
}
else
{
return false;
}
return $items;
}
return false;
}
/**

View File

@ -788,6 +788,24 @@ class ComponentbuilderModelSnippet extends JModelAdmin
$data['metadata'] = (string) $metadata;
}
// set the contributor details if not set
if (strlen($data['contributor_company']) < 1 || strlen($data['contributor_name']) < 1 || strlen($data['contributor_email']) < 3 || strlen($data['contributor_website']) < 3)
{
// get the library name
$library = ($name = ComponentbuilderHelper::getVar('library', $item['library'], 'id', 'name')) ? $name:'Common';
// get the library name
$type = ($name = ComponentbuilderHelper::getVar('snippet_type', $item['type'], 'id', 'name')) ? $name:'No Library';
// build the filename
$filename = ComponentbuilderHelper::safeString($library . ' - (' . $type . ') ' . $item['name'], 'filename', '', false). '.json';
// now get the contributor details (slow)
$contributor = ComponentbuilderHelper::getContributorDetails($filename);
// now update the local snippet contributor details
$data['contributor_company'] = $contributor['contributor_company'];
$data['contributor_name'] = $contributor['contributor_name'];
$data['contributor_email'] = $contributor['contributor_email'];
$data['contributor_website'] = $contributor['contributor_website'];
}
// Set the snippet string to base64 string.
if (isset($data['snippet']))
{

View File

@ -56,6 +56,7 @@ class ComponentbuilderModelSnippets extends JModelList
}
public $user;
public $zipPath;
/**
* Method to build the export package
@ -81,8 +82,8 @@ class ComponentbuilderModelSnippets extends JModelList
// Select some fields
$query->select($this->_db->quoteName(
array('a.name','a.heading','a.description','a.usage','a.snippet','a.url','b.name','c.name','a.created','a.modified'),
array('name','heading','description','usage','snippet','url','type','library','created','modified')
array('a.name','a.heading','a.description','a.usage','a.snippet','a.url','b.name','c.name','a.created','a.modified','a.contributor_company','a.contributor_name','a.contributor_email','a.contributor_website'),
array('name','heading','description','usage','snippet','url','type','library','created','modified','contributor_company','contributor_name','contributor_email','contributor_website')
));
// From the componentbuilder_snippet table
@ -131,26 +132,25 @@ class ComponentbuilderModelSnippets extends JModelList
// remove file if found
JFile::delete($this->zipPath);
}
// set params
$this->params = JComponentHelper::getParams('com_componentbuilder');
// Set the person sharing information (default VDM ;)
$info = array();
$info['company'] = $this->params->get('export_company', 'Vast Development Method');
$info['owner'] = $this->params->get('export_owner', 'Llewellyn van der Merwe');
$info['email'] = $this->params->get('export_email', 'joomla@vdm.io');
$info['website'] = $this->params->get('export_website', 'https://www.vdm.io/');
// prep the item
foreach($items as $item)
{
// just unlock the snippet
$item->snippet = base64_decode($item->snippet);
// load the company detail to each snippet
$item->contributor_company = $info['company'];
$item->contributor_name = $info['owner'];
$item->contributor_email = $info['email'];
$item->contributor_website = $info['website'];
// build filename
$fileName = ComponentbuilderHelper::safeString($item->library . ' - (' . $item->type . ') ' . $item->name, 'filename', '', false) . '.json';
// if the snippet has its own contributor details set, then do not change
if (!strlen($item->contributor_company) || !strlen($item->contributor_name) || !strlen($item->contributor_email) || !strlen($item->contributor_website))
{
// load the correct contributor details to each snippet (this is very slow)
$_contributor = ComponentbuilderHelper::getContributorDetails($fileName);
$item->contributor_company = $_contributor['contributor_company'];
$item->contributor_name = $_contributor['contributor_name'];
$item->contributor_email = $_contributor['contributor_email'];
$item->contributor_website = $_contributor['contributor_website'];
}
// now store the snippet info
ComponentbuilderHelper::writeFile($this->fullPath . '/' .ComponentbuilderHelper::safeString($item->library . ' - (' . $item->type . ') ' . $item->name, 'filename', '', false). '.json', json_encode($item, JSON_PRETTY_PRINT));
ComponentbuilderHelper::writeFile($this->fullPath . '/' . $fileName, json_encode($item, JSON_PRETTY_PRINT));
}
// zip the folder
if (!ComponentbuilderHelper::zip($this->fullPath, $this->zipPath))

View File

@ -563,6 +563,10 @@ CREATE TABLE IF NOT EXISTS `#__componentbuilder_custom_code` (
CREATE TABLE IF NOT EXISTS `#__componentbuilder_snippet` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`contributor_company` VARCHAR(255) NOT NULL DEFAULT '',
`contributor_email` VARCHAR(255) NOT NULL DEFAULT '',
`contributor_name` VARCHAR(255) NOT NULL DEFAULT '',
`contributor_website` VARCHAR(255) NOT NULL DEFAULT '',
`description` TEXT NOT NULL,
`heading` VARCHAR(255) NOT NULL DEFAULT '',
`library` INT(11) NOT NULL DEFAULT 0,
@ -1183,99 +1187,99 @@ INSERT INTO `#__componentbuilder_dynamic_get` (`id`, `add_php_after_getitem`, `a
-- Dumping data for table `#__componentbuilder_snippet`
--
INSERT INTO `#__componentbuilder_snippet` (`id`, `description`, `library`, `heading`, `name`, `snippet`, `type`, `url`, `usage`, `params`, `published`, `version`, `hits`, `ordering`) VALUES
(1, 'The grid system of UIkit follows the mobile-first approach and accomodates up to 10 grid columns. It uses units with predefined classes inside each grid, which define the column width. It is also possible to combine the grid with classes from the Flex component, although it works only in modern browsers.', 4, 'Create a fully responsive, fluid and nestable grid layout.', 'Grid', 'PGRpdiBkYXRhLXVrLWdyaWQtbWFyZ2luPSIiIGNsYXNzPSJ0bS1ncmlkLXRydW5jYXRlIHVrLWdyaWQgdWstZ3JpZC1kaXZpZGVyIHVrLXRleHQtY2VudGVyIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0zIj4NCiAgICAJPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgCXtjb250ZW50fQ0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0zIj4NCiAgICAJPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgCXtjb250ZW50fQ0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0zIj4NCiAgICAJPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgCXtjb250ZW50fQ0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==', 1, 'http://getuikit.com/docs/grid.html', 'To create the grid container, add the .uk-grid class to a parent element. Add one of the .uk-width-* classes to child elements to determine, how the units shall be sized. The grid supports 1, 2, 3, 4, 5, 6 and 10 unit divisions. This table gives you an overview of the uk-width-* classes that can be applied to units.', '', 1, 4, '', 1),
(2, 'UIkit uses panels to outline certain sections of your content, which can be styled differently. Typically, panels are arranged in grid columns from the Grid component.', 4, 'Create layout boxes with different styles.', 'Panel', 'PGRpdiBkYXRhLXVrLWdyaWQtbWFyZ2luPSIiIGNsYXNzPSJ1ay1ncmlkIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0yIj4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgICAgIDxoMyBjbGFzcz0idWstcGFuZWwtdGl0bGUiPnt0aXRsZX08L2gzPg0KICAgICAgICAgICAge2NvbnRlbnR9DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLW1lZGl1bS0xLTIiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1wYW5lbCB1ay1wYW5lbC1ib3giPg0KICAgICAgICAgICAgPGgzIGNsYXNzPSJ1ay1wYW5lbC10aXRsZSI+e3RpdGxlfTwvaDM+DQogICAgICAgICAgICB7Y29udGVudH0NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQo8L2Rpdj4=', 1, 'http://getuikit.com/docs/panel.html', 'The Panel component consists of the panel itself, the panel title and a panel badge. To prevent redundant white space, top and bottom margins are removed from the panel\'s content.', '', 1, 3, '', 1),
(3, '', 4, 'Separate content sections by bundling them in blocks with different styles.', 'Block', 'PGRpdiBjbGFzcz0idWstYmxvY2sgdWstYmxvY2stcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+', 1, 'http://getuikit.com/docs/block.html', 'To apply this component, just add the .uk-block class to a container element.', '', 1, 2, '', 2),
(4, '', 4, 'Create articles within your page.', 'Article', 'PGFydGljbGUgY2xhc3M9InVrLWFydGljbGUiPg0KICAgIDxoMSBjbGFzcz0idWstYXJ0aWNsZS10aXRsZSI+e3RpdGxlfTwvaDE+DQogICAgPHAgY2xhc3M9InVrLWFydGljbGUtbWV0YSI+e21ldGF9PC9wPg0KICAgIDxwIGNsYXNzPSJ1ay1hcnRpY2xlLWxlYWQiPntjb250ZW50fTwvcD4NCiAgICB7Y29udGVudH0NCiAgICA8aHIgY2xhc3M9InVrLWFydGljbGUtZGl2aWRlciI+DQogICAge2NvbnRlbnR9DQo8L2FydGljbGU+', 1, 'http://getuikit.com/docs/article.html', 'The article component consists of the article itself, a title, meta data, an opening paragraph and dividers.', '', 1, 1, '', 3),
(5, '', 4, 'Create comments, for example about articles.', 'Comment', 'PGFydGljbGUgY2xhc3M9InVrLWNvbW1lbnQiPg0KICAgIDxoZWFkZXIgY2xhc3M9InVrLWNvbW1lbnQtaGVhZGVyIj4NCiAgICAgICAgPGltZyBjbGFzcz0idWstY29tbWVudC1hdmF0YXIiIHNyYz0ie2ltYWdldXJsfSIgYWx0PSIiPg0KICAgICAgICA8aDQgY2xhc3M9InVrLWNvbW1lbnQtdGl0bGUiPnt0aXRsZX08L2g0Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1jb21tZW50LW1ldGEiPnttZXRhfTwvZGl2Pg0KICAgIDwvaGVhZGVyPg0KICAgIDxkaXYgY2xhc3M9InVrLWNvbW1lbnQtYm9keSI+e3RpdGxlfTwvZGl2Pg0KPC9hcnRpY2xlPg==', 1, 'http://getuikit.com/docs/comment.html', 'The Comment component consists of a comment header, including an avatar, a title and meta data, and a comment body.', '', 1, 2, '', 4),
(6, '', 4, 'A collection of useful utility classes to style your content.', 'Utility Container', 'PGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTEtMiB1ay1jb250YWluZXItY2VudGVyIj57Y29udGVudH08L2Rpdj4=', 1, 'http://getuikit.com/docs/utility.html', 'Add the .uk-container class to a block element to give it a max-width and wrap the main content of your website. For large screens it applies a different max-width.\r\n\r\nTo center the container, use the .uk-container-center class. For any other block element, you additionally need to apply a width.', '', 1, 2, '', 5),
(7, '', 4, 'A collection of useful utility classes to style your content.', 'Utility Clearing and floating', 'PGRpdiBjbGFzcz0idWstY2xlYXJmaXgiPg0KICAgIDxkaXYgY2xhc3M9InVrLWZsb2F0LXJpZ2h0Ij57Y29udGVudH08L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay1mbG9hdC1sZWZ0Ij57Y29udGVudH08L2Rpdj4NCjwvZGl2Pg==', 1, 'http://getuikit.com/docs/utility.html', 'Floating is fundamental for creating all kinds of layouts. But floats need to be cleared or in the worst case, you might end up with a scrambled site. The following classes will help you to setup basic layouts.', '', 1, 2, '', 5),
(8, 'This component uses Flexbox, a concept that is still quite new but extremely powerful for creating layouts.', 4, 'Utilize the power of Flexbox to create a wide range of layouts.', 'Flex', 'PGRpdiBjbGFzcz0idWstZmxleCB1ay1mbGV4LXdyYXAgdWstZmxleC13cmFwLXJldmVyc2UgdWstZmxleC13cmFwLXNwYWNlLWFyb3VuZCI+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0yIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSB1ay1tYXJnaW4tbGVmdCI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSB1ay1tYXJnaW4tbGVmdCI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0yIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSB1ay1tYXJnaW4tbGVmdCI+e2NvbnRlbnR9PC9kaXY+DQo8L2Rpdj4=', 1, 'http://getuikit.com/docs/flex.html', 'To apply this component, just add the .uk-flex class to a element. This will create the flex container. By default, all flex items will be aligned to the left and equally matched in height and width.', '', 1, 3, '', 5),
(9, 'This component allows you to create fullscreen teasers using images, objects or even iframes. Regardless what kind of element, it will always be centered vertically and horizontally and cover its container without losing its proportions. You can also place additional content, like text or an image, on top of the image or video.', 4, 'Expand images or videos to cover their entire container.', 'Cover', 'PGRpdiBjbGFzcz0idWstY292ZXIiPg0KICAgIDx2aWRlbyBjbGFzcz0idWstY292ZXItb2JqZWN0IiB3aWR0aD0iIiBoZWlnaHQ9IiI+DQogICAgICAgIDxzb3VyY2Ugc3JjPSIiIHR5cGU9IiI+DQogICAgPC92aWRlbz4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJ1ay1jb3Zlci1iYWNrZ3JvdW5kIj4NCiAgICA8aW1nIGNsYXNzPSJ1ay1pbnZpc2libGUiIHNyYz0iIiB3aWR0aD0iIiBoZWlnaHQ9IiIgYWx0PSIiPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InVrLWNvdmVyIHVrLXBvc2l0aW9uLXJlbGF0aXZlIj4NCiAgICA8aW1nIGNsYXNzPSJ1ay1pbnZpc2libGUiIHNyYz0iIiB3aWR0aD0iIiBoZWlnaHQ9IiIgYWx0PSIiPg0KICAgIDx2aWRlbyBjbGFzcz0idWstY292ZXItb2JqZWN0IHVrLXBvc2l0aW9uLWFic29sdXRlIiB3aWR0aD0iIiBoZWlnaHQ9IiI+DQogICAgICAgIDxzb3VyY2Ugc3JjPSIiIHR5cGU9IiI+DQogICAgPC92aWRlbz4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJ1ay1jb3Zlci1iYWNrZ3JvdW5kIHVrLXBvc2l0aW9uLXJlbGF0aXZlIj4NCiAgICA8aW1nIGNsYXNzPSJ1ay1pbnZpc2libGUiIHNyYz0iIiB3aWR0aD0iIiBoZWlnaHQ9IiIgYWx0PSIiPg0KICAgIDxkaXYgY2xhc3M9InVrLXBvc2l0aW9uLWNvdmVyIHVrLWZsZXggdWstZmxleC1jZW50ZXIgdWstZmxleC1taWRkbGUiPntjb250ZW50fTwvZGl2Pg0KPC9kaXY+', 1, 'http://getuikit.com/docs/cover.html', 'The Cover component is applied differently, depending on whether you are using a background image, an object or an iframe. The simplest way is to add the .uk-cover-background class to a element with a background image.', '', 1, 1, '', 5),
(10, 'The Dynamic Grid component allows you to create a dynamic and responsive grid layout utilizing the Grid component. Grid items will arrange themselves fluently and seamlessly for a gap-free multi-column layout on all device sizes.', 4, 'Create a multi-column, dynamic grid layout whose items can be sorted and filtered.', 'Dynamic Grid', 'PCEtLSBUaGlzIGlzIGEgZ3JpZCB1c2luZyB1ay13aWR0aC0qIG9uIGVhY2ggaXRlbSAtLT4NCjxkaXYgZGF0YS11ay1ncmlkPg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLXNtYWxsLTEtMiB1ay13aWR0aC1tZWRpdW0tMS00Ij57Y29udGVudH08L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1zbWFsbC0xLTIgdWstd2lkdGgtbWVkaXVtLTEtNCI+e2NvbnRlbnR9PC9kaXY+DQo8L2Rpdj4NCg0KPCEtLSBUaGlzIGlzIGEgZ3JpZCB1c2luZyB1ay1ncmlkLXdpZHRoLSogb24gdGhlIGdyaWQgaXRzZWxmIC0tPg0KPGRpdiBjbGFzcz0idWstZ3JpZC13aWR0aC1zbWFsbC0xLTIgdWstZ3JpZC13aWR0aC1tZWRpdW0tMS00IiBkYXRhLXVrLWdyaWQ+DQogICAgPGRpdj57Y29udGVudH08L2Rpdj4NCiAgICA8ZGl2Pntjb250ZW50fTwvZGl2Pg0KPC9kaXY+DQoNCjwhLS0gRmlsdGVyIENvbnRyb2xzIC0tPg0KPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN1Ym5hdiI+DQogICAgPGxpIGRhdGEtdWstZmlsdGVyPSIiPjxhIGhyZWY9IiI+QWxsPC9hPjwvbGk+DQogICAgPGxpIGRhdGEtdWstZmlsdGVyPSJmaWx0ZXItYSI+PGEgaHJlZj0iIj5BIEZpbHRlcjwvYT48L2xpPg0KICAgIDxsaSBkYXRhLXVrLWZpbHRlcj0iZmlsdGVyLWIiPjxhIGhyZWY9IiI+YiBGaWx0ZXI8L2E+PC9saT4NCjwvdWw+DQo8IS0tIER5bmFtaWMgR3JpZCAtLT4NCjxkaXYgZGF0YS11ay1ncmlkPSJ7Y29udHJvbHM6ICcjbXktaWQnfSI+DQogICAgPGRpdiBkYXRhLXVrLWZpbHRlcj0iZmlsdGVyLWEiPntjb250ZW50fTwvZGl2Pg0KICAgIDxkaXYgZGF0YS11ay1maWx0ZXI9ImZpbHRlci1iIj57Y29udGVudH08L2Rpdj4NCjwvZGl2Pg==', 1, 'http://getuikit.com/docs/grid-js.html', 'To apply this component, add the data-uk-grid attribute to the container element. Set the width of the grid items by using the uk-width-* or .uk-grid-width-* classes from the Grid component.', '', 1, 1, '', 5),
(11, '', 4, 'Defines different styles for list navigations.', 'Nav', 'PHVsIGNsYXNzPSJ1ay1uYXYgdWstbmF2LXNpZGUiPg0KICAgIDxsaSBjbGFzcz0idWstYWN0aXZlIj48YSBocmVmPSIjIj5BY3RpdmU8L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj5JdGVtPC9hPjwvbGk+DQo8L3VsPg==', 2, 'http://getuikit.com/docs/nav.html', 'To apply this component, add the .uk-nav class to an element. Use elements as menu items within the list. To apply an active state to a menu item, just add the .uk-active class.', '', 1, 1, '', 6),
(12, '', 4, 'Defines different styles for the navigation bar.', 'Navbar', 'PG5hdiBjbGFzcz0idWstbmF2YmFyIj4NCiAgICA8dWwgY2xhc3M9InVrLW5hdmJhci1uYXYiPg0KICAgICAgICA8bGkgY2xhc3M9InVrLWFjdGl2ZSI+PGEgaHJlZj0iIj5BY3RpdmU8L2E+PC9saT4NCiAgICAgICAgPGxpPjxhIGhyZWY9IiI+SXRlbTwvYT48L2xpPg0KICAgICAgICA8bGkgZGF0YS11ay1kcm9wZG93bj0iIiBjbGFzcz0idWstcGFyZW50IiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+DQogICAgICAgICAgICA8YSBocmVmPSIiPlBhcmVudDwvYT4NCiAgICANCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InVrLWRyb3Bkb3duIHVrLWRyb3Bkb3duLW5hdmJhciIgc3R5bGU9IiI+DQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ1ay1uYXYgdWstbmF2LW5hdmJhciI+DQogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5JdGVtPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5Bbm90aGVyIGl0ZW08L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1ay1uYXYtaGVhZGVyIj5IZWFkZXI8L2xpPg0KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+QW5vdGhlciBpdGVtPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idWstbmF2LWRpdmlkZXIiPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5TZXBhcmF0ZWQgaXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICANCiAgICAgICAgPC9saT4NCiAgICA8L3VsPg0KPC9uYXY+', 2, 'http://getuikit.com/docs/navbar.html', 'The Navbar component consists of the navbar itself and one or more navigations.', '', 1, 1, '', 6),
(13, '', 4, 'Defines different styles for a sub navigation.', 'Subnav', 'PHVsIGNsYXNzPSJ1ay1zdWJuYXYgdWstc3VibmF2LXBpbGwiPg0KICAgIDxsaSBjbGFzcz0idWstYWN0aXZlIj48YSBocmVmPSIjIj5BY3RpdmU8L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgIDxsaSBjbGFzcz0idWstZGlzYWJsZWQiPjxhIGhyZWY9IiMiPkRpc2FibGVkPC9hPjwvbGk+DQogICAgPGxpIGRhdGEtdWstZHJvcGRvd249Inttb2RlOidjbGljayd9Ij4NCiAgICAgICAgPGEgaHJlZj0iIyI+TW9yZSA8aSBjbGFzcz0idWstaWNvbi1jYXJldC1kb3duIj48L2k+PC9hPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1kcm9wZG93biB1ay1kcm9wZG93bi1zbWFsbCI+DQogICAgICAgICAgICA8dWwgY2xhc3M9InVrLW5hdiB1ay1uYXYtZHJvcGRvd24iPg0KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5JdGVtPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiPkFub3RoZXIgaXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idWstbmF2LWhlYWRlciI+SGVhZGVyPC9saT4NCiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5Bbm90aGVyIGl0ZW08L2E+PC9saT4NCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVrLW5hdi1kaXZpZGVyIj48L2xpPg0KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5TZXBhcmF0ZWQgaXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgPC9kaXY+DQogICAgPC9saT4NCjwvdWw+', 2, 'http://getuikit.com/docs/subnav.html', 'To apply this component, use the following classes. To align a subnav, for example to horizontally center it, you can use the Flex component.', '', 1, 1, '', 6),
(14, '', 4, 'Create breadcrumbs to show users their location within a website.', 'Breadcrumb', 'PHVsIGNsYXNzPSJ1ay1icmVhZGNydW1iIj4NCiAgICA8bGk+PGEgaHJlZj0iIyI+SG9tZTwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj5CbG9nPC9hPjwvbGk+DQogICAgPGxpPjxzcGFuPkNhdGVnb3J5PC9zcGFuPjwvbGk+DQogICAgPGxpIGNsYXNzPSJ1ay1hY3RpdmUiPjxzcGFuPlBvc3Q8L3NwYW4+PC9saT4NCjwvdWw+', 2, 'http://getuikit.com/docs/breadcrumb.html', 'The Breadcrumb component consists of links which are aligned side by side and separated by a divider.', '', 1, 1, '', 6),
(15, '', 4, 'Easlily create a nicely looking pagination to navigate through pages.', 'Pagination', 'PHVsIGNsYXNzPSJ1ay1wYWdpbmF0aW9uIj4NCiAgICA8bGk+PGEgaHJlZj0iIyI+MTwvYT48L2xpPg0KICAgIDxsaT48c3Bhbj4uLi48L3NwYW4+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIyI+ODwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj45PC9hPjwvbGk+DQogICAgPGxpIGNsYXNzPSJ1ay1hY3RpdmUiPjxzcGFuPjEwPC9zcGFuPjwvbGk+DQogICAgPGxpPjxhIGhyZWY9IiMiPjExPC9hPjwvbGk+DQogICAgPGxpPjxhIGhyZWY9IiMiPjEyPC9hPjwvbGk+DQogICAgPGxpPjxzcGFuPi4uLjwvc3Bhbj48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj4yMDwvYT48L2xpPg0KPC91bD4=', 2, 'http://getuikit.com/docs/pagination.html', 'The Pagination component consists of button-like styled links, that are aligned side by side.', '', 1, 1, '', 6),
(16, '', 4, 'Create a tabbed navigation with different styles.', 'Tab', 'PHVsIGNsYXNzPSJ1ay10YWIiIGRhdGEtdWstdGFiPg0KICAgIDxsaSBjbGFzcz0idWstYWN0aXZlIj48YSBocmVmPSIiPkFjdGl2ZTwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIiPkl0ZW08L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIj5JdGVtPC9hPjwvbGk+DQogICAgPGxpIGNsYXNzPSJ1ay1kaXNhYmxlZCI+PGEgaHJlZj0iIj5EaXNhYmxlZDwvYT48L2xpPg0KPC91bD4=', 2, 'http://getuikit.com/docs/tab.html', 'The Tab component consists of clickable tabs, that are aligned side by side.\r\n\r\nThe data-uk-tab attribute is required for two purposes. Firstly, it enables the responsive behaviour. If the parent container is too small to accomodate all tabs, they will be combined into a dropdown, toggled by a single tab, which represents the active tab item. This also requires the Dropdown component in order to work.\r\n\r\nAnd secondly, its functionality is coupled to the Switcher component, which is necessary to dynamically transition through different contents using tabbed navigation.', '', 1, 3, '', 6),
(17, '', 4, 'Create a tabbed navigation with different styles.', 'Thumbnav', 'PHVsIGNsYXNzPSJ1ay10aHVtYm5hdiI+DQogICAgPGxpIGNsYXNzPSJ1ay1hY3RpdmUiPjxhIGhyZWY9IiI+PGltZyBzcmM9IiIgYWx0PSIiPjwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIiPjxpbWcgc3JjPSIiIGFsdD0iIj48L2E+PC9saT4NCjwvdWw+', 2, 'http://getuikit.com/docs/thumbnav.html', 'To apply this component, add the .uk-thumbnav class to an element and nest your thumbnail images inside elements within the list items. The thumbnav will wrap into several rows, if it is wider than its container and automatically applies a gutter. Add the .uk-active class to create an active state.\r\n\r\nTo align a subnav, for example to horizontally center it, you can use the Flex component.', '', 1, 2, '', 6),
(18, 'Modifiers\r\n\r\nTo display the list in a different style, just add a modifier class to the the .uk-list class. The modifiers of the List component are not combinable with each other.', 4, 'Easily create nicely looking lists, which come in different styles.', 'List', 'PHVsIGNsYXNzPSJ1ay1saXN0IHVrLWxpc3Qtc3RyaXBlZCI+DQogICAgPGxpPi4uLjwvbGk+DQogICAgPGxpPi4uLjwvbGk+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 3, 'http://getuikit.com/docs/list.html', 'To apply this component, add the .uk-list class to an unordered or ordered list. The list will now display without any spacing or list-style. [uk-list-line] [uk-list-space]', '', 1, 2, '', 6),
(19, 'Add the .uk-description-list-horizontal class to display terms and descriptions side by side.', 4, 'Easily create nicely looking description lists, which come in different styles.', 'Description list', 'PGRsIGNsYXNzPSJ1ay1kZXNjcmlwdGlvbi1saXN0LWhvcml6b250YWwiPg0KICAgIDxkdD4uLi48L2R0Pg0KICAgIDxkZD4uLi48L2RkPg0KPC9kbD4=', 3, 'http://getuikit.com/docs/description-list.html', 'There is no component class necessary to create a description list, but UIkit provides a couple of modifier classes to display the list in a different style. The modifiers of the Description list component are not combinable with each other. [uk-description-list-line]', '', 1, 1, '', 6),
(20, '', 4, 'Easily create nicely looking tables, which come in different styles.', 'Table', 'PHRhYmxlIGNsYXNzPSJ1ay10YWJsZSB1ay10YWJsZS1ob3ZlciI+DQogICAgPGNhcHRpb24+Li4uPC9jYXB0aW9uPg0KICAgIDx0aGVhZD4NCiAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRoPi4uLjwvdGg+DQogICAgICAgIDwvdHI+DQogICAgPC90aGVhZD4NCiAgICA8dGZvb3Q+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZD4uLi48L3RkPg0KICAgICAgICA8L3RyPg0KICAgIDwvdGZvb3Q+DQogICAgPHRib2R5Pg0KICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQ+Li4uPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICA8L3Rib2R5Pg0KPC90YWJsZT4=', 3, 'http://getuikit.com/docs/table.html', 'To apply this component, add the .uk-table class to a element.', '', 1, 1, '', 6),
(21, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button href', 'PGEgY2xhc3M9InVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSIgaHJlZj0iIj4uLi48L2E+', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 2, '', 7),
(22, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button primary', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5IiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 1, '', 7),
(23, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button disabled', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiB0eXBlPSJidXR0b24iIGRpc2FibGVkPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 1, '', 7),
(24, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button success', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1zdWNjZXNzIiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 1, '', 7),
(25, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button danger', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1kYW5nZXIiIHR5cGU9ImJ1dHRvbiI+Li4uPC9idXR0b24+', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 1, '', 7),
(26, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button mini', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5IHVrLWJ1dHRvbi1taW5pIiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 1, '', 7),
(27, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button small', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1zdWNjZXNzIHVrLWJ1dHRvbi1zbWFsbCIgdHlwZT0iYnV0dG9uIj4uLi48L2J1dHRvbj4=', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 1, '', 7),
(28, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button large', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1sYXJnZSIgdHlwZT0iYnV0dG9uIj4uLi48L2J1dHRvbj4=', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 1, '', 7),
(29, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button full width', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLXdpZHRoLTEtMSB1ay1tYXJnaW4tc21hbGwtYm90dG9tIiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 1, '', 7),
(30, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button group', 'PGRpdiBjbGFzcz0idWstYnV0dG9uLWdyb3VwIj4NCiAgICA8YSBjbGFzcz0idWstYnV0dG9uIiBocmVmPSIiPi4uLjwvYT4NCiAgICA8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iPi4uLjwvYnV0dG9uPg0KICAgIDxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiI+Li4uPC9idXR0b24+DQo8L2Rpdj4=', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 1, '', 7),
(31, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button dropdowns', 'PCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgZW5hYmxpbmcgdGhlIEphdmFTY3JpcHQgLS0+DQo8ZGl2IGNsYXNzPSJ1ay1idXR0b24tZHJvcGRvd24iIGRhdGEtdWstZHJvcGRvd24+DQoNCiAgICA8IS0tIFRoaXMgaXMgdGhlIGJ1dHRvbiB0b2dnbGluZyB0aGUgZHJvcGRvd24gLS0+DQogICAgPGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIj4uLi48L2J1dHRvbj4NCg0KICAgIDwhLS0gVGhpcyBpcyB0aGUgZHJvcGRvd24gLS0+DQogICAgPGRpdiBjbGFzcz0idWstZHJvcGRvd24gdWstZHJvcGRvd24tc21hbGwiPg0KICAgICAgICA8dWwgY2xhc3M9InVrLW5hdiB1ay1uYXYtZHJvcGRvd24iPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj4uLi48L2E+PC9saT4NCiAgICAgICAgPC91bD4NCiAgICA8L2Rpdj4NCg0KPC9kaXY+', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 1, '', 7),
(32, 'This component is using the fantastic Font Awesome icon font, a project by Dave Gandy. Altogether Font Awesome provides more than 300 symbols and glyphs for web-related actions. Icon fonts are great, because they enable you to easily change color, size and more via CSS. They are scalable vector graphics, which means that they look great on high-resolution displays.', 4, 'Place vector icons anywhere using an icon font.', 'Icon', 'PGkgY2xhc3M9InVrLWljb24tY29nIj48L2k+', 4, 'http://getuikit.com/docs/icon.html', 'To apply this component, add any .uk-icon-* class to an or element. Et voilà, you have a vector icon, which inherits size and color just like your text does.', '', 1, 1, '', 8),
(33, '', 4, 'Easlily create nicely looking badges to label and highlight your content.', 'Badge', 'PGRpdiBjbGFzcz0idWstYmFkZ2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/badge.html', 'To create a badge, just add the .uk-badge class to a or element.', '', 1, 1, '', 8),
(34, '', 4, 'Defines styles for success, warning and error messages.', 'Alert', 'PGRpdiBjbGFzcz0idWstYWxlcnQgdWstYWxlcnQtc3VjY2VzcyIgZGF0YS11ay1hbGVydD4NCiAgICA8YSBocmVmPSIiIGNsYXNzPSJ1ay1hbGVydC1jbG9zZSB1ay1jbG9zZSI+PC9hPg0KICAgIDxwPi4uLjwvcD4NCjwvZGl2Pg==', 4, 'http://getuikit.com/docs/badge.html', 'To apply this component, add the .uk-alert class to a block element.', '', 1, 1, '', 8),
(35, '', 4, 'A collection of useful text utility classes to style your content.', 'Text small', 'PHNwYW4gY2xhc3M9InVrLXRleHQtc21hbGwiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(36, '', 4, 'A collection of useful text utility classes to style your content.', 'Text large', 'PHNwYW4gY2xhc3M9InVrLXRleHQtbGFyZ2UiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(37, '', 4, 'A collection of useful text utility classes to style your content.', 'Text bold', 'PHNwYW4gY2xhc3M9InVrLXRleHQtYm9sZCI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(38, '', 4, 'A collection of useful text utility classes to style your content.', 'Text muted', 'PHNwYW4gY2xhc3M9InVrLXRleHQtbXV0ZWQiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(39, '', 4, 'A collection of useful text utility classes to style your content.', 'Text primary', 'PHNwYW4gY2xhc3M9InVrLXRleHQtcHJpbWFyeSI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(40, '', 4, 'A collection of useful text utility classes to style your content.', 'Text success', 'PHNwYW4gY2xhc3M9InVrLXRleHQtc3VjY2VzcyI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(41, '', 4, 'A collection of useful text utility classes to style your content.', 'Text warning', 'PHNwYW4gY2xhc3M9InVrLXRleHQtd2FybmluZyI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(42, '', 4, 'A collection of useful text utility classes to style your content.', 'Text danger', 'PHNwYW4gY2xhc3M9InVrLXRleHQtZGFuZ2VyIj5BZGQgdGhpcyBjbGFzcyB0byBkZWNyZWFzZSB0aGUgZm9udCBzaXplLjwvc3Bhbj4=', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(43, '', 4, 'A collection of useful text utility classes to style your content.', 'Text contrast', 'PHNwYW4gY2xhc3M9InVrLXRleHQtY29udHJhc3QiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(44, '', 4, 'A collection of useful text utility classes to style your content.', 'Text right', 'PHNwYW4gY2xhc3M9InVrLXRleHQtcmlnaHQiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(45, '', 4, 'A collection of useful text utility classes to style your content.', 'Text center', 'PHNwYW4gY2xhc3M9InVrLXRleHQtY2VudGVyIj5BZGQgdGhpcyBjbGFzcyB0byBkZWNyZWFzZSB0aGUgZm9udCBzaXplLjwvc3Bhbj4=', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(46, '', 4, 'A collection of useful text utility classes to style your content.', 'Text justify', 'PHNwYW4gY2xhc3M9InVrLXRleHQtanVzdGlmeSI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(47, '', 4, 'A collection of useful text utility classes to style your content.', 'Text truncate', 'PHNwYW4gY2xhc3M9InVrLXRleHQtdHJ1bmNhdGUiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(48, '', 4, 'A collection of useful text utility classes to style your content.', 'Text nowrap', 'PHNwYW4gY2xhc3M9InVrLXRleHQtbm93cmFwIj5BZGQgdGhpcyBjbGFzcyB0byBkZWNyZWFzZSB0aGUgZm9udCBzaXplLjwvc3Bhbj4=', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 1, '', 8),
(49, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation fade', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLWZhZGUiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(50, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation scale-up', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLXVwIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(51, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation scale-down', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLWRvd24iPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(52, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-top', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXRvcCI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(53, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-bottom', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(54, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-left', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWxlZnQiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(55, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-right', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXJpZ2h0Ij4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(56, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation shake', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNoYWtlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(57, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation scale', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(58, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation fade reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLWZhZGUgdWstYW5pbWF0aW9uLXJldmVyc2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 2, '', 8),
(59, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation scale-up reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLXVwIHVrLWFuaW1hdGlvbi1yZXZlcnNlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(60, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation scale-down reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLWRvd24gdWstYW5pbWF0aW9uLXJldmVyc2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(61, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-top reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXRvcCB1ay1hbmltYXRpb24tcmV2ZXJzZSI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(62, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-bottom reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSB1ay1hbmltYXRpb24tcmV2ZXJzZSI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(63, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-left reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWxlZnQgdWstYW5pbWF0aW9uLXJldmVyc2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(64, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-right reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXJpZ2h0IHVrLWFuaW1hdGlvbi1yZXZlcnNlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(65, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation scale reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlIHVrLWFuaW1hdGlvbi1yZXZlcnNlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 1, '', 8),
(66, '', 4, 'Create modal dialogs with different styles and transitions.', 'Modal default', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCjxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1tb2RhbCI+DQogICAgPGRpdiBjbGFzcz0idWstbW9kYWwtZGlhbG9nIj4NCiAgICAgICAgPGEgY2xhc3M9InVrLW1vZGFsLWNsb3NlIHVrLWNsb3NlIj48L2E+DQogICAgICAgIC4uLg0KICAgIDwvZGl2Pg0KPC9kaXY+', 5, 'http://getuikit.com/docs/modal.html', 'The modal component consists of an overlay, a dialog and a close button.', '', 1, 1, '', 8),
(67, '', 4, 'Create modal dialogs with different styles and transitions.', 'Modal header-footer', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCjxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1tb2RhbCI+DQogICAgPGRpdiBjbGFzcz0idWstbW9kYWwtZGlhbG9nIj4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstbW9kYWwtaGVhZGVyIj4uLi48L2Rpdj4NCiAgICAgICAgLi4uDQogICAgICAgIDxkaXYgY2xhc3M9InVrLW1vZGFsLWZvb3RlciI+Li4uPC9kaXY+DQogICAgPC9kaXY+DQo8L2Rpdj4=', 5, 'http://getuikit.com/docs/modal.html', 'The modal component consists of an overlay, a dialog and a close button.', '', 1, 1, '', 8),
(68, '', 4, 'Create modal dialogs with different styles and transitions.', 'Modal image', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCjxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1tb2RhbCI+DQogICAgPGRpdiBjbGFzcz0idWstbW9kYWwtZGlhbG9nIHVrLW1vZGFsLWRpYWxvZy1saWdodGJveCI+DQogICAgICAgIDxhIGhyZWY9IiIgY2xhc3M9InVrLW1vZGFsLWNsb3NlIHVrLWNsb3NlIHVrLWNsb3NlLWFsdCI+PC9hPg0KICAgICAgICA8aW1nIHNyYz0iIiBhbHQ9IiI+DQogICAgPC9kaXY+DQo8L2Rpdj4=', 5, 'http://getuikit.com/docs/modal.html', 'The modal component consists of an overlay, a dialog and a close button.', '', 1, 1, '', 8),
(69, 'The Off-canvas component is perfect for building a mobile navigation, similar to those which are popular with many native mobile apps, where a single button in the upper left corner toggles an off-canvas sidebar with a menu.', 4, 'Create a smooth off-canvas sidebar that slides in and out of the page.', 'Off-canvas default', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBvZmYtY2FudmFzIHNpZGViYXIgLS0+DQo8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iIGRhdGEtdWstb2ZmY2FudmFzPSJ7dGFyZ2V0OicjbXktaWQnfSI+Li4uPC9idXR0b24+DQoNCjwhLS0gVGhpcyBpcyB0aGUgb2ZmLWNhbnZhcyBzaWRlYmFyIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1vZmZjYW52YXMiPg0KICAgIDxkaXYgY2xhc3M9InVrLW9mZmNhbnZhcy1iYXIiPi4uLjwvZGl2Pg0KPC9kaXY+', 5, 'http://getuikit.com/docs/offcanvas.html', 'The Off-canvas component consists of an overlay and an off-canvas bar.', '', 1, 1, '', 8),
(70, 'The Off-canvas component is perfect for building a mobile navigation, similar to those which are popular with many native mobile apps, where a single button in the upper left corner toggles an off-canvas sidebar with a menu.', 4, 'Create a smooth off-canvas sidebar that slides in and out of the page.', 'Off-canvas right', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBvZmYtY2FudmFzIHNpZGViYXIgLS0+DQo8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iIGRhdGEtdWstb2ZmY2FudmFzPSJ7dGFyZ2V0OicjbXktaWQnfSI+Li4uPC9idXR0b24+DQoNCjwhLS0gVGhpcyBpcyB0aGUgb2ZmLWNhbnZhcyBzaWRlYmFyIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1vZmZjYW52YXMiPg0KICAgIDxkaXYgY2xhc3M9InVrLW9mZmNhbnZhcy1iYXIgdWstb2ZmY2FudmFzLWJhci1mbGlwIj4uLi48L2Rpdj4NCjwvZGl2Pg==', 5, 'http://getuikit.com/docs/offcanvas.html', 'The Off-canvas component consists of an overlay and an off-canvas bar.', '', 1, 1, '', 8),
(71, '', 4, 'Dynamically transition through different content panes.', 'Switcher default', 'PCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIHRvZ2dsaW5nIGVsZW1lbnRzIC0tPg0KPHVsIGRhdGEtdWstc3dpdGNoZXI9Intjb25uZWN0OicjbXktaWQnfSI+DQogICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQo8L3VsPg0KDQo8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCjx1bCBpZD0ibXktaWQiIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 1, '', 8),
(72, 'In some cases you want to switch to another content section from within the active content. This is possible using the data-uk-switcher-item attribute. To target the items, you need to set the data attribute to the number of the respective content item.', 4, 'Dynamically transition through different content panes.', 'Switcher in-content', 'PCEtLSBUaGlzIGlzIHRoZSBuYXYgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQo8dWwgZGF0YS11ay1zd2l0Y2hlcj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4NCiAgICA8bGk+PGEgaHJlZj0iIj4uLi48L2E+PC9saT4NCjwvdWw+DQoNCjwhLS0gVGhpcyBpcyB0aGUgY29udGFpbmVyIG9mIHRoZSBjb250ZW50IGl0ZW1zIC0tPg0KPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIj4NCiAgICA8bGk+IC4uLiA8YSBocmVmPSIiIGRhdGEtdWstc3dpdGNoZXItaXRlbT0iMCI+Li4uPC9hPjwvbGk+DQogICAgPGxpPiAuLi4gPGEgaHJlZj0iIiBkYXRhLXVrLXN3aXRjaGVyLWl0ZW09IjEiPi4uLjwvYT48L2xpPg0KPC91bD4=', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 1, '', 8),
(73, 'It is also possible to connect multiple content containers. Just extend the connect parameter with the ID of the additional container.', 4, 'Dynamically transition through different content panes.', 'Switcher multiple-items', 'PCEtLSBUaGlzIGlzIHRoZSBuYXYgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQo8dWwgZGF0YS11ay1zd2l0Y2hlcj0ie2Nvbm5lY3Q6JyNteS1pZC1vbmUsICNteS1pZC10d28nfSI+DQogICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQo8L3VsPg0KDQo8IS0tIFRoZXNlIGFyZSB0aGUgY29udGFpbmVycyBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCjx1bCBpZD0ibXktaWQtb25lIiBjbGFzcz0idWstc3dpdGNoZXIiPg0KICAgIDxsaT4uLi48L2xpPg0KPC91bD4NCg0KPHVsIGlkPSJteS1pZC10d28iIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 1, '', 8),
(74, 'The Switcher component allows you to add different animations to items when toggling between them. All you need to do is add the animation parameter to the data-attribute and define the animation that you want to apply. Check the table below for an overview of the animations provided.\r\n\r\nYou can also apply multiple animations by using the uk-animation-* classes from the Animation component. That way you can even create your own custom class to apply a different transition to the switcher.', 4, 'Dynamically transition through different content panes.', 'Switcher animation', 'PCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIHRvZ2dsaW5nIGVsZW1lbnRzIC0tPg0KPHVsIGRhdGEtdWstc3dpdGNoZXI9Intjb25uZWN0OicjbXktaWQnLCBhbmltYXRpb246ICd1ay1hbmltYXRpb24tZmFkZSwgdWstYW5pbWF0aW9uLXNsaWRlLWxlZnQnfSI+DQogICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQo8L3VsPg0KDQo8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCjx1bCBpZD0ibXktaWQiIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 1, '', 8),
(75, 'As an exception to the rule, add the data-uk-tab=\"{connect:\'#ID\'}\" attribute, using the parameter \"tab\" instead of \"switcher\", to the tabbed navigation to combine the switcher with the Tab component.', 4, 'Dynamically transition through different content panes.', 'Switcher tabs-horizontal', 'PCEtLSBUaGlzIGlzIHRoZSB0YWJiZWQgbmF2aWdhdGlvbiBjb250YWluaW5nIHRoZSB0b2dnbGluZyBlbGVtZW50cyAtLT4NCjx1bCBjbGFzcz0idWstdGFiIiBkYXRhLXVrLXRhYj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4NCiAgICA8bGk+PGEgaHJlZj0iIj4uLi48L2E+PC9saT4NCjwvdWw+DQoNCjwhLS0gVGhpcyBpcyB0aGUgY29udGFpbmVyIG9mIHRoZSBjb250ZW50IGl0ZW1zIC0tPg0KPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIHVrLW1hcmdpbiI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 1, '', 8),
(76, 'Use the Grid component to display content correctly with a vertical tabbed navigation.', 4, 'Dynamically transition through different content panes.', 'Switcher tabs-vertical', 'PCEtLSBUaGlzIGlzIHRoZSBsZWZ0IHZlcnRpY2FsIHRhYmJlZCBuYXZpZ2F0aW9uIC0tPg0KPGRpdiBjbGFzcz0idWstZ3JpZCI+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTEtMiI+DQogICAgICAgIDwhLS0gVGhpcyBpcyB0aGUgdmVydGljYWwgdGFiYmVkIG5hdmlnYXRpb24gY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQogICAgICAgIDx1bCBjbGFzcz0idWstdGFiIHVrLXRhYi1sZWZ0IiBkYXRhLXVrLXRhYj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4uLi48L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLW1lZGl1bS0xLTIiPg0KICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCiAgICAgICAgPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIj4uLi48L3VsPg0KICAgIDwvZGl2Pg0KPC9kaXY+DQoNCjwhLS0gVGhpcyBpcyB0aGUgcmlnaHQgdmVydGljYWwgdGFiYmVkIG5hdmlnYXRpb24gLS0+DQo8ZGl2IGNsYXNzPSJ1ay1ncmlkIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0yIHVrLXB1c2gtMS0yIj4NCiAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB2ZXJ0aWNhbCB0YWJiZWQgbmF2aWdhdGlvbiBjb250YWluaW5nIHRoZSB0b2dnbGluZyBlbGVtZW50cyAtLT4NCiAgICAgICAgPHVsIGNsYXNzPSJ1ay10YWIgdWstdGFiLXJpZ2h0IiBkYXRhLXVrLXRhYj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4uLi48L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLW1lZGl1bS0xLTIgdWstcHVsbC0xLTIiPg0KICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCiAgICAgICAgPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIj4uLi48L3VsPg0KICAgIDwvZGl2Pg0KPC9kaXY+', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 1, '', 8),
(77, 'The switcher can also be applied to buttons or button groups from the Button component. Just add the switcher data attribute to a element around a group of buttons or to the element with the .button-group class.', 4, 'Dynamically transition through different content panes.', 'Switcher button-group', 'PCEtLSBUaGlzIGlzIHRoZSBidXR0b24gZ3JvdXAgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgYnV0dG9ucyAtLT4NCjxkaXYgY2xhc3M9InVrLWJ1dHRvbi1ncm91cCIgZGF0YS11ay1zd2l0Y2hlcj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4NCiAgICA8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iIHR5cGU9ImJ1dHRvbiI+Li4uPC9idXR0b24+DQo8L2Rpdj4NCg0KPCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIGNvbnRlbnQgaXRlbXMgLS0+DQo8dWwgaWQ9Im15LWlkIiBjbGFzcz0idWstc3dpdGNoZXIgdWstbWFyZ2luIj4uLi48L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 1, '', 8),
(78, 'To apply the switcher to the Nav component, add the data attribute to the nav . Use the Grid component to arrange nav and content in a grid layout.', 4, 'Dynamically transition through different content panes.', 'Switcher navs', 'PGRpdiBjbGFzcz0idWstZ3JpZCI+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTEtNCI+DQoNCiAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSBuYXYgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQogICAgICAgIDx1bCBjbGFzcz0idWstbmF2IHVrLW5hdi1zaWRlIiBkYXRhLXVrLXN3aXRjaGVyPSJ7Y29ubmVjdDonI215LWlkJ30iPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQogICAgICAgIDwvdWw+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTMtNCI+DQoNCiAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIGNvbnRlbnQgaXRlbXMgLS0+DQogICAgICAgIDx1bCBpZD0ibXktaWQiIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgICAgICAgICA8bGk+Li4uPC9saT4NCiAgICAgICAgPC91bD4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 1, '', 8),
(79, '', 4, 'Hide, switch or change the appearence of different contents through a toggle.', 'Toggle default', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8ZGl2IGlkPSJteS1pZCI+Li4uPC9kaXY+', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a or element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, 1, '', 8),
(80, 'You can also toggle multiple items at the same time. Just use the appropriate selector.', 4, 'Hide, switch or change the appearence of different contents through a toggle.', 'Toggle multiple', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonLm15LWNsYXNzJ30iPi4uLjwvYnV0dG9uPg0KDQo8ZGl2IGNsYXNzPSJteS1jbGFzcyI+Li4uPC9kaXY+DQo8ZGl2IGNsYXNzPSJteS1jbGFzcyB1ay1oaWRkZW4iPi4uLjwvZGl2Pg==', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a or element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, 1, '', 8),
(81, 'You can also toggle multiple items at the same time. Just use the appropriate selector.', 4, 'Hide, switch or change the appearence of different contents through a toggle.', 'Toggle class', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonI215LWlkJywgY2xzOid1ay1wYW5lbC1ib3gtcHJpbWFyeSd9Ij4uLi48L2J1dHRvbj4NCg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1wYW5lbCB1ay1wYW5lbC1ib3giPi4uLjwvZGl2Pg==', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a or element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, 3, '', 8),
(82, 'The Toggle component allows you to add animations to items when toggling between them. Just add one of the .uk-animation-* classes from the Animation component to the animation parameter. The class will be applied to the in as well as the out animation. If you prefer a different out animation, just add another class.', 4, 'Hide, switch or change the appearence of different contents through a toggle.', 'Toggle animations', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonI215LWlkJywgYW5pbWF0aW9uOid1ay1hbmltYXRpb24tc2xpZGUtbGVmdCwgdWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSd9Ij4uLi48L2J1dHRvbj4NCg0KPGRpdiBpZD0ibXktaWQiPi4uLjwvZGl2Pg==', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a or element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, 1, '', 8),
(83, '', 4, 'Trigger events and animations while scrolling your page.', 'Scrollspy default', 'PGRpdiBkYXRhLXVrLXNjcm9sbHNweT0ie2NsczondWstYW5pbWF0aW9uLWZhZGUnfSI+Li4uPC9kaXY+DQoNCjxkaXYgZGF0YS11ay1zY3JvbGxzcHk9IntjbHM6J3VrLWFuaW1hdGlvbi1mYWRlJywgcmVwZWF0OiB0cnVlfSI+Li4uPC9kaXY+DQoNCjxkaXYgZGF0YS11ay1zY3JvbGxzcHk9IntjbHM6J3VrLWFuaW1hdGlvbi1mYWRlJywgZGVsYXk6OTAwfSI+Li4uPC9kaXY+', 5, 'http://getuikit.com/docs/scrollspy.html', 'The scrollspy component listens to page scrolling and triggers events based on the scroll position. For example, if you scroll down a page and an element appears the first time in the viewport you can trigger a smooth animation to fade in the element. Just add the data-uk-scrollspy attribute and the following options.', '', 1, 1, '', 8),
(84, 'You can also group scrollspy elements, so you won\'t have to apply the data attribute to each of them. Just add the data-uk-scollspy\"{target:\'MY-CLASS\'}\" attribute to a container element, targetting the selector the items you want to animate within the container. When using a delay it will be applied cumulatively to the items within the row that scrolls into view. The delay will be resetted for the next row within the group when it scrolls into view.', 4, 'Trigger events and animations while scrolling your page.', 'Scrollspy groups', 'PGRpdiBkYXRhLXVrLXNjcm9sbHNweT0ie2NsczondWstYW5pbWF0aW9uLWZhZGUnLCB0YXJnZXQ6Jy5teS1jbGFzcycsIGRlbGF5OjMwMH0iPg0KDQogICAgPCEtLSBUaGlzIGl0ZW0gaGFzIG5vIGRlbGF5IC0tPg0KICAgIDxkaXYgY2xhc3M9Im15LWNsYXNzIj4uLi48L2Rpdj4NCg0KICAgIDwhLS0gVGhpcyBpdGVtIGhhcyBhIGRlbGF5IG9mIDMwMG1zIC0tPg0KICAgIDxkaXYgY2xhc3M9Im15LWNsYXNzIj4uLi48L2Rpdj4NCg0KICAgIDwhLS0gVGhpcyBpdGVtIGhhcyBhIGRlbGF5IG9mIDYwMG1zIC0tPg0KICAgIDxkaXYgY2xhc3M9Im15LWNsYXNzIj4uLi48L2Rpdj4NCg0KPC9kaXY+', 5, 'http://getuikit.com/docs/scrollspy.html', 'The scrollspy component listens to page scrolling and triggers events based on the scroll position. For example, if you scroll down a page and an element appears the first time in the viewport you can trigger a smooth animation to fade in the element. Just add the data-uk-scrollspy attribute and the following options.', '', 1, 2, '', 8),
(85, '', 4, 'Create a fancy lightbox for images and videos utilizing the Modal component.', 'Lightbox single-image', 'PGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSIiIGhyZWY9IiIgY2xhc3M9InVrLWJ1dHRvbiI+T3BlbiBsaWdodGJveDwvYT4=', 5, 'http://getuikit.com/docs/lightbox.html', 'To apply this component, add the data-uk-lightbox attribute to an anchor linking to the image you wish to display. If a title attribute exists it will be displayed as a caption for the lightbox.', '', 1, 1, '', 9),
(86, 'You can link multiple images to the same lightbox and switch between them from within the lightbox, thus creating a gallery. Just add the {group:\'my-group\'} option to the data attribute of each item using the same name on all items that you want to group. Make sure to include the CSS from the Slidenav component, so you can navigate between the items.', 4, 'Create a fancy lightbox for images and videos utilizing the Modal component.', 'Lightbox groups-image', 'PGRpdiBkYXRhLXVrLWdyaWQtbWFyZ2luPSIiIGNsYXNzPSJ1ay1ncmlkIHVrLWdyaWQtd2lkdGgtbWVkaXVtLTEtNCI+DQogICAgPGRpdj4NCiAgICAgICAgPGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMSd9IiBocmVmPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF8xLmpwZyI+DQogICAgICAgICAgICA8aW1nIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIiBhbHQ9IiIgc3JjPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF8xLmpwZyI+DQogICAgICAgIDwvYT4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2Pg0KICAgICAgICA8YSB0aXRsZT0iVGl0bGUiIGRhdGEtdWstbGlnaHRib3g9Intncm91cDonZ3JvdXAxJ30iIGRhdGEtbGlnaHRib3gtdHlwZT0iaW1hZ2UiIGhyZWY9ImltYWdlcy9wbGFjZWhvbGRlcl84MDB4NjAwXzIuanBnIj4NCiAgICAgICAgICAgIDxpbWcgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiIGFsdD0iIiBzcmM9ImltYWdlcy9wbGFjZWhvbGRlcl84MDB4NjAwXzIuanBnIj4NCiAgICAgICAgPC9hPg0KICAgIDwvZGl2Pg0KICAgIDxkaXY+DQogICAgICAgIDxhIHRpdGxlPSJUaXRsZSIgZGF0YS11ay1saWdodGJveD0ie2dyb3VwOidncm91cDEnfSIgZGF0YS1saWdodGJveC10eXBlPSJpbWFnZSIgaHJlZj0iaW1hZ2VzL3BsYWNlaG9sZGVyXzgwMHg2MDBfMy5qcGciPg0KICAgICAgICAgICAgPGltZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCIgYWx0PSIiIHNyYz0iaW1hZ2VzL3BsYWNlaG9sZGVyXzgwMHg2MDBfMy5qcGciPg0KICAgICAgICA8L2E+DQogICAgPC9kaXY+DQogICAgPGRpdj4NCiAgICAgICAgPGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMSd9IiBkYXRhLWxpZ2h0Ym94LXR5cGU9ImltYWdlIiBocmVmPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF80LmpwZyI+DQogICAgICAgICAgICA8aW1nIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIiBhbHQ9IiIgc3JjPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF80LmpwZyI+DQogICAgICAgIDwvYT4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==', 5, 'http://getuikit.com/docs/lightbox.html', 'To apply this component, add the data-uk-lightbox attribute to an anchor linking to the image you wish to display. If a title attribute exists it will be displayed as a caption for the lightbox.', '', 1, 2, '', 9),
(87, 'A lightbox is not restricted to images. Other media, like videos, can be displayed inside a lightbox and it will automatically generate the correct output by evaluating your path.', 4, 'Create a fancy lightbox for images and videos utilizing the Modal component.', 'Lightbox content-sources', 'PHA+DQogICAgPGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMid9IiBocmVmPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF8xLmpwZyIgY2xhc3M9InVrLWJ1dHRvbiI+SW1hZ2U8L2E+DQogICAgPGEgZGF0YS11ay1saWdodGJveD0ie2dyb3VwOidncm91cDInfSIgaHJlZj0iaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9odG1sNS92aWRlb3MvYmlnX2J1Y2tfYnVubnkubXA0IiBjbGFzcz0idWstYnV0dG9uIj5NUDQ8L2E+DQogICAgPGEgZGF0YS11ay1saWdodGJveD0ie2dyb3VwOidncm91cDInfSIgaHJlZj0iaHR0cDovL3ZpbWVvLmNvbS8xMDg0NTM3IiBjbGFzcz0idWstYnV0dG9uIj5WaW1lbzwvYT4NCiAgICA8YSBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMid9IiBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVlFN1Z6bEx0cC00IiBjbGFzcz0idWstYnV0dG9uIj5Zb3VUdWJlPC9hPg0KPC9wPg==', 5, 'http://getuikit.com/docs/lightbox.html', 'To apply this component, add the data-uk-lightbox attribute to an anchor linking to the image you wish to display. If a title attribute exists it will be displayed as a caption for the lightbox.', '', 1, 1, '', 9),
(88, 'To display multiple content sections at the same time without one collapsing when the other one is opened, add the {collapse: false} option to the date attribute.', 4, 'Create a list of items, allowing each item\'s content to be expanded and collapsed by clicking its header.', 'Accordion', 'PGRpdiBjbGFzcz0idWstYWNjb3JkaW9uIiBkYXRhLXVrLWFjY29yZGlvbj4NCg0KICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj4uLi48L2gzPg0KICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4uLi48L2Rpdj4NCg0KICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj4uLi48L2gzPg0KICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4uLi48L2Rpdj4NCg0KICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj4uLi48L2gzPg0KICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4uLi48L2Rpdj4NCg0KPC9kaXY+', 5, 'http://getuikit.com/docs/accordion.html', 'To apply the Accordion component, add the uk-accordion class and the data-uk-accordion attribute to a container element. Add the uk-accordion-content class to each of the content sections within the container. Finally, add the uk-accordion-title class to any element, like a heading, above the content section to create a toggle.', '', 1, 3, '', 10),
(93, 'FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome No matter how many columns of data you may have in them.\r\n\r\nHave you ever wanted to show a lot of data in a table, but hate how badly it scales on smaller mobile devices? The FooTable jQuery plugin solves this problem by allowing you to hide certain columns on smaller devices, but still allowing the user to expand each row to see the columns that were hidden.', 5, 'FooTable', 'FooTable', 'PHRhYmxlIGNsYXNzPSJmb290YWJsZSBtZXRyby1ibHVlIiBkYXRhLWZpbHRlcj0iI2ZpbHRlciIgZGF0YS1wYWdlLXNpemU9IjUiPg0KICA8dGhlYWQ+DQogICAgPHRyPg0KICAgICAgPHRoIGRhdGEtdG9nZ2xlPSJ0cnVlIj5OYW1lPC90aD4NCiAgICAgIDx0aCBkYXRhLWhpZGU9InBob25lLHRhYmxldCI+UGhvbmU8L3RoPg0KICAgICAgPHRoIGRhdGEtaGlkZT0icGhvbmUsdGFibGV0Ij5FbWFpbDwvdGg+DQogICAgPC90cj4NCiAgPC90aGVhZD4NCiAgPHRib2R5Pg0KICAgIDx0cj4NCiAgICAgIDx0ZD5Cb2IgTWFuPC90ZD4NCiAgICAgIDx0ZD41NTUtMTIzNDU8L3RkPg0KICAgICAgPHRkPmJvYkBob21lLmNvbTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQ+QnJpZGdldCBKb25lczwvdGQ+DQogICAgICA8dGQ+NTQ0LTc3NjY1NTwvdGQ+DQogICAgICA8dGQ+YmpvbmVzQG15c2l0ZS5jb208L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkPlRvbSBKb25lczwvdGQ+DQogICAgICA8dGQ+NTU1LTk5OTExPC90ZD4NCiAgICAgIDx0ZD5jcnVpc2UxQGNyYXp5LmNvbTwvdGQ+DQogICAgPC90cj4NCiAgPC90Ym9keT4NCjwvdGFibGU+', 1, 'http://fooplugins.com/footable-demos/', '', '', 1, 11, '', 13),
(90, 'This is a input field for uikit form', 4, 'Add Input field - row', 'Input field', 'ICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1mb3JtLXJvdyI+DQoJCTxsYWJlbCBjbGFzcz0idWstZm9ybS1sYWJlbCIgPg0KCQkJPD9waHAgZWNobyBKVGV4dDo6XygnTGFiZWwnKTsgPz4NCgkJPC9sYWJlbD4NCgkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImtleSIgcGxhY2Vob2xkZXI9Ijw/cGhwIGVjaG8gSlRleHQ6Ol8oJ2FkZCBzb21lIHRleHQgaGVyZSEnKTsgPz4iPiA8c3BhbiBjbGFzcz0idWstZm9ybS1oZWxwLWlubGluZSI+PD9waHAgZWNobyBKVGV4dDo6XygnaGVscCBuZWVkZWQnKTsgPz48L3NwYW4+DQoJPC9kaXY+', 3, 'http://getuikit.com/docs/form.html', '', '', 1, 2, '', 12),
(91, 'This is a textarea field for uikit form', 4, 'Add textarea - row', 'Textarea', 'CTxkaXYgY2xhc3M9InVrLWZvcm0tcm93Ij4NCgkJPGxhYmVsIGNsYXNzPSJ1ay1mb3JtLWxhYmVsIiA+DQoJCQk8P3BocCBlY2hvIEpUZXh0OjpfKCdMYWJlbCcpOyA/Pg0KCQk8L2xhYmVsPg0KCQk8dGV4dGFyZWEgY29scz0iIiByb3dzPSIiICBzdHlsZT0id2lkdGg6IDEwMCU7IGhlaWdodDogMjE2cHg7IiBwbGFjZWhvbGRlcj0iPD9waHAgZWNobyBKVGV4dDo6XygnYWRkIHNvbWUgdGV4dCBoZXJlIScpOyA/PiI+PHx8fHxGSVh8fHx8fHx0ZXh0YXJlYT4NCgkJPHAgY2xhc3M9InVrLWZvcm0taGVscC1ibG9jayI+PD9waHAgZWNobyBKVGV4dDo6XygnaGVscCBuZWVkZWQnKTsgPz48L3A+DQoJPC9kaXY+', 3, 'http://getuikit.com/docs/form.html', '', '', 1, 4, '', 12),
(92, 'This is a uikit form', 4, 'Add Form', 'Form', 'PGZvcm0gY2xhc3M9InVrLWZvcm0iPg0KICAgIDxmaWVsZHNldD4NCiAgICAgICAgPGxlZ2VuZD48P3BocCBlY2hvIEpUZXh0OjpfKCdMZWdlbmQnKTsgPz48L2xlZ2VuZD4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstZm9ybS1yb3ciPg0KCQk8bGFiZWwgY2xhc3M9InVrLWZvcm0tbGFiZWwiID4NCgkJCTw/cGhwIGVjaG8gSlRleHQ6Ol8oJ0xhYmVsJyk7ID8+DQoJCTwvbGFiZWw+DQoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJrZXkiIHBsYWNlaG9sZGVyPSI8P3BocCBlY2hvIEpUZXh0OjpfKCdhZGQgc29tZSB0ZXh0IGhlcmUhJyk7ID8+Ij4gPHNwYW4gY2xhc3M9InVrLWZvcm0taGVscC1pbmxpbmUiPjw/cGhwIGVjaG8gSlRleHQ6Ol8oJ2hlbHAgbmVlZGVkJyk7ID8+PC9zcGFuPg0KCTwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1mb3JtLXJvdyI+DQoJCTxsYWJlbCBjbGFzcz0idWstZm9ybS1sYWJlbCIgPg0KCQkJPD9waHAgZWNobyBKVGV4dDo6XygnTGFiZWwnKTsgPz4NCgkJPC9sYWJlbD4NCgkJPHRleHRhcmVhIGNvbHM9IiIgcm93cz0iIiAgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDIxNnB4OyIgcGxhY2Vob2xkZXI9Ijw/cGhwIGVjaG8gSlRleHQ6Ol8oJ2FkZCBzb21lIHRleHQgaGVyZSEnKTsgPz4iPjx8fHx8fEZJWHx8fHx8dGV4dGFyZWE+DQoJCTxwIGNsYXNzPSJ1ay1mb3JtLWhlbHAtYmxvY2siPjw/cGhwIGVjaG8gSlRleHQ6Ol8oJ2hlbHAgbmVlZGVkJyk7ID8+PC9wPg0KCTwvZGl2Pg0KICAgIDwvZmllbGRzZXQ+DQo8L2Zvcm0+', 1, 'http://getuikit.com/docs/form.html', '', '', 1, 2, '', 12);
INSERT INTO `#__componentbuilder_snippet` (`id`, `description`, `library`, `heading`, `name`, `snippet`, `type`, `url`, `usage`, `params`, `published`, `version`, `hits`, `ordering`, `contributor_company`, `contributor_email`, `contributor_name`, `contributor_website`) VALUES
(1, 'The grid system of UIkit follows the mobile-first approach and accomodates up to 10 grid columns. It uses units with predefined classes inside each grid, which define the column width. It is also possible to combine the grid with classes from the Flex component, although it works only in modern browsers.', 4, 'Create a fully responsive, fluid and nestable grid layout.', 'Grid', 'PGRpdiBkYXRhLXVrLWdyaWQtbWFyZ2luPSIiIGNsYXNzPSJ0bS1ncmlkLXRydW5jYXRlIHVrLWdyaWQgdWstZ3JpZC1kaXZpZGVyIHVrLXRleHQtY2VudGVyIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0zIj4NCiAgICAJPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgCXtjb250ZW50fQ0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0zIj4NCiAgICAJPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgCXtjb250ZW50fQ0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0zIj4NCiAgICAJPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgCXtjb250ZW50fQ0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==', 1, 'http://getuikit.com/docs/grid.html', 'To create the grid container, add the .uk-grid class to a parent element. Add one of the .uk-width-* classes to child elements to determine, how the units shall be sized. The grid supports 1, 2, 3, 4, 5, 6 and 10 unit divisions. This table gives you an overview of the uk-width-* classes that can be applied to units.', '', 1, 73, '', 1, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(2, 'UIkit uses panels to outline certain sections of your content, which can be styled differently. Typically, panels are arranged in grid columns from the Grid component.', 4, 'Create layout boxes with different styles.', 'Panel', 'PGRpdiBkYXRhLXVrLWdyaWQtbWFyZ2luPSIiIGNsYXNzPSJ1ay1ncmlkIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0yIj4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgICAgIDxoMyBjbGFzcz0idWstcGFuZWwtdGl0bGUiPnt0aXRsZX08L2gzPg0KICAgICAgICAgICAge2NvbnRlbnR9DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLW1lZGl1bS0xLTIiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1wYW5lbCB1ay1wYW5lbC1ib3giPg0KICAgICAgICAgICAgPGgzIGNsYXNzPSJ1ay1wYW5lbC10aXRsZSI+e3RpdGxlfTwvaDM+DQogICAgICAgICAgICB7Y29udGVudH0NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQo8L2Rpdj4=', 1, 'http://getuikit.com/docs/panel.html', 'The Panel component consists of the panel itself, the panel title and a panel badge. To prevent redundant white space, top and bottom margins are removed from the panel\'s content.', '', 1, 67, '', 1, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(3, '', 4, 'Separate content sections by bundling them in blocks with different styles.', 'Block', 'PGRpdiBjbGFzcz0idWstYmxvY2sgdWstYmxvY2stcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+', 1, 'http://getuikit.com/docs/block.html', 'To apply this component, just add the .uk-block class to a container element.', '', 1, 56, '', 2, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(4, '', 4, 'Create articles within your page.', 'Article', 'PGFydGljbGUgY2xhc3M9InVrLWFydGljbGUiPg0KICAgIDxoMSBjbGFzcz0idWstYXJ0aWNsZS10aXRsZSI+e3RpdGxlfTwvaDE+DQogICAgPHAgY2xhc3M9InVrLWFydGljbGUtbWV0YSI+e21ldGF9PC9wPg0KICAgIDxwIGNsYXNzPSJ1ay1hcnRpY2xlLWxlYWQiPntjb250ZW50fTwvcD4NCiAgICB7Y29udGVudH0NCiAgICA8aHIgY2xhc3M9InVrLWFydGljbGUtZGl2aWRlciI+DQogICAge2NvbnRlbnR9DQo8L2FydGljbGU+', 1, 'http://getuikit.com/docs/article.html', 'The article component consists of the article itself, a title, meta data, an opening paragraph and dividers.', '', 1, 53, '', 3, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(5, '', 4, 'Create comments, for example about articles.', 'Comment', 'PGFydGljbGUgY2xhc3M9InVrLWNvbW1lbnQiPg0KICAgIDxoZWFkZXIgY2xhc3M9InVrLWNvbW1lbnQtaGVhZGVyIj4NCiAgICAgICAgPGltZyBjbGFzcz0idWstY29tbWVudC1hdmF0YXIiIHNyYz0ie2ltYWdldXJsfSIgYWx0PSIiPg0KICAgICAgICA8aDQgY2xhc3M9InVrLWNvbW1lbnQtdGl0bGUiPnt0aXRsZX08L2g0Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1jb21tZW50LW1ldGEiPnttZXRhfTwvZGl2Pg0KICAgIDwvaGVhZGVyPg0KICAgIDxkaXYgY2xhc3M9InVrLWNvbW1lbnQtYm9keSI+e3RpdGxlfTwvZGl2Pg0KPC9hcnRpY2xlPg==', 1, 'http://getuikit.com/docs/comment.html', 'The Comment component consists of a comment header, including an avatar, a title and meta data, and a comment body.', '', 1, 54, '', 4, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(6, '', 4, 'A collection of useful utility classes to style your content.', 'Utility Container', 'PGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTEtMiB1ay1jb250YWluZXItY2VudGVyIj57Y29udGVudH08L2Rpdj4=', 1, 'http://getuikit.com/docs/utility.html', 'Add the .uk-container class to a block element to give it a max-width and wrap the main content of your website. For large screens it applies a different max-width.\r\n\r\nTo center the container, use the .uk-container-center class. For any other block element, you additionally need to apply a width.', '', 1, 54, '', 5, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(7, '', 4, 'A collection of useful utility classes to style your content.', 'Utility Clearing and floating', 'PGRpdiBjbGFzcz0idWstY2xlYXJmaXgiPg0KICAgIDxkaXYgY2xhc3M9InVrLWZsb2F0LXJpZ2h0Ij57Y29udGVudH08L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay1mbG9hdC1sZWZ0Ij57Y29udGVudH08L2Rpdj4NCjwvZGl2Pg==', 1, 'http://getuikit.com/docs/utility.html', 'Floating is fundamental for creating all kinds of layouts. But floats need to be cleared or in the worst case, you might end up with a scrambled site. The following classes will help you to setup basic layouts.', '', 1, 54, '', 5, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(8, 'This component uses Flexbox, a concept that is still quite new but extremely powerful for creating layouts.', 4, 'Utilize the power of Flexbox to create a wide range of layouts.', 'Flex', 'PGRpdiBjbGFzcz0idWstZmxleCB1ay1mbGV4LXdyYXAgdWstZmxleC13cmFwLXJldmVyc2UgdWstZmxleC13cmFwLXNwYWNlLWFyb3VuZCI+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0yIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSB1ay1tYXJnaW4tbGVmdCI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSB1ay1tYXJnaW4tbGVmdCI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0yIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSB1ay1tYXJnaW4tbGVmdCI+e2NvbnRlbnR9PC9kaXY+DQo8L2Rpdj4=', 1, 'http://getuikit.com/docs/flex.html', 'To apply this component, just add the .uk-flex class to a element. This will create the flex container. By default, all flex items will be aligned to the left and equally matched in height and width.', '', 1, 55, '', 5, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(9, 'This component allows you to create fullscreen teasers using images, objects or even iframes. Regardless what kind of element, it will always be centered vertically and horizontally and cover its container without losing its proportions. You can also place additional content, like text or an image, on top of the image or video.', 4, 'Expand images or videos to cover their entire container.', 'Cover', 'PGRpdiBjbGFzcz0idWstY292ZXIiPg0KICAgIDx2aWRlbyBjbGFzcz0idWstY292ZXItb2JqZWN0IiB3aWR0aD0iIiBoZWlnaHQ9IiI+DQogICAgICAgIDxzb3VyY2Ugc3JjPSIiIHR5cGU9IiI+DQogICAgPC92aWRlbz4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJ1ay1jb3Zlci1iYWNrZ3JvdW5kIj4NCiAgICA8aW1nIGNsYXNzPSJ1ay1pbnZpc2libGUiIHNyYz0iIiB3aWR0aD0iIiBoZWlnaHQ9IiIgYWx0PSIiPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InVrLWNvdmVyIHVrLXBvc2l0aW9uLXJlbGF0aXZlIj4NCiAgICA8aW1nIGNsYXNzPSJ1ay1pbnZpc2libGUiIHNyYz0iIiB3aWR0aD0iIiBoZWlnaHQ9IiIgYWx0PSIiPg0KICAgIDx2aWRlbyBjbGFzcz0idWstY292ZXItb2JqZWN0IHVrLXBvc2l0aW9uLWFic29sdXRlIiB3aWR0aD0iIiBoZWlnaHQ9IiI+DQogICAgICAgIDxzb3VyY2Ugc3JjPSIiIHR5cGU9IiI+DQogICAgPC92aWRlbz4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJ1ay1jb3Zlci1iYWNrZ3JvdW5kIHVrLXBvc2l0aW9uLXJlbGF0aXZlIj4NCiAgICA8aW1nIGNsYXNzPSJ1ay1pbnZpc2libGUiIHNyYz0iIiB3aWR0aD0iIiBoZWlnaHQ9IiIgYWx0PSIiPg0KICAgIDxkaXYgY2xhc3M9InVrLXBvc2l0aW9uLWNvdmVyIHVrLWZsZXggdWstZmxleC1jZW50ZXIgdWstZmxleC1taWRkbGUiPntjb250ZW50fTwvZGl2Pg0KPC9kaXY+', 1, 'http://getuikit.com/docs/cover.html', 'The Cover component is applied differently, depending on whether you are using a background image, an object or an iframe. The simplest way is to add the .uk-cover-background class to a element with a background image.', '', 1, 54, '', 5, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(10, 'The Dynamic Grid component allows you to create a dynamic and responsive grid layout utilizing the Grid component. Grid items will arrange themselves fluently and seamlessly for a gap-free multi-column layout on all device sizes.', 4, 'Create a multi-column, dynamic grid layout whose items can be sorted and filtered.', 'Dynamic Grid', 'PCEtLSBUaGlzIGlzIGEgZ3JpZCB1c2luZyB1ay13aWR0aC0qIG9uIGVhY2ggaXRlbSAtLT4NCjxkaXYgZGF0YS11ay1ncmlkPg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLXNtYWxsLTEtMiB1ay13aWR0aC1tZWRpdW0tMS00Ij57Y29udGVudH08L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1zbWFsbC0xLTIgdWstd2lkdGgtbWVkaXVtLTEtNCI+e2NvbnRlbnR9PC9kaXY+DQo8L2Rpdj4NCg0KPCEtLSBUaGlzIGlzIGEgZ3JpZCB1c2luZyB1ay1ncmlkLXdpZHRoLSogb24gdGhlIGdyaWQgaXRzZWxmIC0tPg0KPGRpdiBjbGFzcz0idWstZ3JpZC13aWR0aC1zbWFsbC0xLTIgdWstZ3JpZC13aWR0aC1tZWRpdW0tMS00IiBkYXRhLXVrLWdyaWQ+DQogICAgPGRpdj57Y29udGVudH08L2Rpdj4NCiAgICA8ZGl2Pntjb250ZW50fTwvZGl2Pg0KPC9kaXY+DQoNCjwhLS0gRmlsdGVyIENvbnRyb2xzIC0tPg0KPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN1Ym5hdiI+DQogICAgPGxpIGRhdGEtdWstZmlsdGVyPSIiPjxhIGhyZWY9IiI+QWxsPC9hPjwvbGk+DQogICAgPGxpIGRhdGEtdWstZmlsdGVyPSJmaWx0ZXItYSI+PGEgaHJlZj0iIj5BIEZpbHRlcjwvYT48L2xpPg0KICAgIDxsaSBkYXRhLXVrLWZpbHRlcj0iZmlsdGVyLWIiPjxhIGhyZWY9IiI+YiBGaWx0ZXI8L2E+PC9saT4NCjwvdWw+DQo8IS0tIER5bmFtaWMgR3JpZCAtLT4NCjxkaXYgZGF0YS11ay1ncmlkPSJ7Y29udHJvbHM6ICcjbXktaWQnfSI+DQogICAgPGRpdiBkYXRhLXVrLWZpbHRlcj0iZmlsdGVyLWEiPntjb250ZW50fTwvZGl2Pg0KICAgIDxkaXYgZGF0YS11ay1maWx0ZXI9ImZpbHRlci1iIj57Y29udGVudH08L2Rpdj4NCjwvZGl2Pg==', 1, 'http://getuikit.com/docs/grid-js.html', 'To apply this component, add the data-uk-grid attribute to the container element. Set the width of the grid items by using the uk-width-* or .uk-grid-width-* classes from the Grid component.', '', 1, 53, '', 5, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(11, '', 4, 'Defines different styles for list navigations.', 'Nav', 'PHVsIGNsYXNzPSJ1ay1uYXYgdWstbmF2LXNpZGUiPg0KICAgIDxsaSBjbGFzcz0idWstYWN0aXZlIj48YSBocmVmPSIjIj5BY3RpdmU8L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj5JdGVtPC9hPjwvbGk+DQo8L3VsPg==', 2, 'http://getuikit.com/docs/nav.html', 'To apply this component, add the .uk-nav class to an element. Use elements as menu items within the list. To apply an active state to a menu item, just add the .uk-active class.', '', 1, 53, '', 6, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(12, '', 4, 'Defines different styles for the navigation bar.', 'Navbar', 'PG5hdiBjbGFzcz0idWstbmF2YmFyIj4NCiAgICA8dWwgY2xhc3M9InVrLW5hdmJhci1uYXYiPg0KICAgICAgICA8bGkgY2xhc3M9InVrLWFjdGl2ZSI+PGEgaHJlZj0iIj5BY3RpdmU8L2E+PC9saT4NCiAgICAgICAgPGxpPjxhIGhyZWY9IiI+SXRlbTwvYT48L2xpPg0KICAgICAgICA8bGkgZGF0YS11ay1kcm9wZG93bj0iIiBjbGFzcz0idWstcGFyZW50IiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+DQogICAgICAgICAgICA8YSBocmVmPSIiPlBhcmVudDwvYT4NCiAgICANCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InVrLWRyb3Bkb3duIHVrLWRyb3Bkb3duLW5hdmJhciIgc3R5bGU9IiI+DQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ1ay1uYXYgdWstbmF2LW5hdmJhciI+DQogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5JdGVtPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5Bbm90aGVyIGl0ZW08L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1ay1uYXYtaGVhZGVyIj5IZWFkZXI8L2xpPg0KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+QW5vdGhlciBpdGVtPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idWstbmF2LWRpdmlkZXIiPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5TZXBhcmF0ZWQgaXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICANCiAgICAgICAgPC9saT4NCiAgICA8L3VsPg0KPC9uYXY+', 2, 'http://getuikit.com/docs/navbar.html', 'The Navbar component consists of the navbar itself and one or more navigations.', '', 1, 53, '', 6, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(13, '', 4, 'Defines different styles for a sub navigation.', 'Subnav', 'PHVsIGNsYXNzPSJ1ay1zdWJuYXYgdWstc3VibmF2LXBpbGwiPg0KICAgIDxsaSBjbGFzcz0idWstYWN0aXZlIj48YSBocmVmPSIjIj5BY3RpdmU8L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgIDxsaSBjbGFzcz0idWstZGlzYWJsZWQiPjxhIGhyZWY9IiMiPkRpc2FibGVkPC9hPjwvbGk+DQogICAgPGxpIGRhdGEtdWstZHJvcGRvd249Inttb2RlOidjbGljayd9Ij4NCiAgICAgICAgPGEgaHJlZj0iIyI+TW9yZSA8aSBjbGFzcz0idWstaWNvbi1jYXJldC1kb3duIj48L2k+PC9hPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1kcm9wZG93biB1ay1kcm9wZG93bi1zbWFsbCI+DQogICAgICAgICAgICA8dWwgY2xhc3M9InVrLW5hdiB1ay1uYXYtZHJvcGRvd24iPg0KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5JdGVtPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiPkFub3RoZXIgaXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idWstbmF2LWhlYWRlciI+SGVhZGVyPC9saT4NCiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5Bbm90aGVyIGl0ZW08L2E+PC9saT4NCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVrLW5hdi1kaXZpZGVyIj48L2xpPg0KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5TZXBhcmF0ZWQgaXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgPC9kaXY+DQogICAgPC9saT4NCjwvdWw+', 2, 'http://getuikit.com/docs/subnav.html', 'To apply this component, use the following classes. To align a subnav, for example to horizontally center it, you can use the Flex component.', '', 1, 53, '', 6, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(14, '', 4, 'Create breadcrumbs to show users their location within a website.', 'Breadcrumb', 'PHVsIGNsYXNzPSJ1ay1icmVhZGNydW1iIj4NCiAgICA8bGk+PGEgaHJlZj0iIyI+SG9tZTwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj5CbG9nPC9hPjwvbGk+DQogICAgPGxpPjxzcGFuPkNhdGVnb3J5PC9zcGFuPjwvbGk+DQogICAgPGxpIGNsYXNzPSJ1ay1hY3RpdmUiPjxzcGFuPlBvc3Q8L3NwYW4+PC9saT4NCjwvdWw+', 2, 'http://getuikit.com/docs/breadcrumb.html', 'The Breadcrumb component consists of links which are aligned side by side and separated by a divider.', '', 1, 53, '', 6, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(15, '', 4, 'Easlily create a nicely looking pagination to navigate through pages.', 'Pagination', 'PHVsIGNsYXNzPSJ1ay1wYWdpbmF0aW9uIj4NCiAgICA8bGk+PGEgaHJlZj0iIyI+MTwvYT48L2xpPg0KICAgIDxsaT48c3Bhbj4uLi48L3NwYW4+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIyI+ODwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj45PC9hPjwvbGk+DQogICAgPGxpIGNsYXNzPSJ1ay1hY3RpdmUiPjxzcGFuPjEwPC9zcGFuPjwvbGk+DQogICAgPGxpPjxhIGhyZWY9IiMiPjExPC9hPjwvbGk+DQogICAgPGxpPjxhIGhyZWY9IiMiPjEyPC9hPjwvbGk+DQogICAgPGxpPjxzcGFuPi4uLjwvc3Bhbj48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj4yMDwvYT48L2xpPg0KPC91bD4=', 2, 'http://getuikit.com/docs/pagination.html', 'The Pagination component consists of button-like styled links, that are aligned side by side.', '', 1, 53, '', 6, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(16, '', 4, 'Create a tabbed navigation with different styles.', 'Tab', 'PHVsIGNsYXNzPSJ1ay10YWIiIGRhdGEtdWstdGFiPg0KICAgIDxsaSBjbGFzcz0idWstYWN0aXZlIj48YSBocmVmPSIiPkFjdGl2ZTwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIiPkl0ZW08L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIj5JdGVtPC9hPjwvbGk+DQogICAgPGxpIGNsYXNzPSJ1ay1kaXNhYmxlZCI+PGEgaHJlZj0iIj5EaXNhYmxlZDwvYT48L2xpPg0KPC91bD4=', 2, 'http://getuikit.com/docs/tab.html', 'The Tab component consists of clickable tabs, that are aligned side by side.\r\n\r\nThe data-uk-tab attribute is required for two purposes. Firstly, it enables the responsive behaviour. If the parent container is too small to accomodate all tabs, they will be combined into a dropdown, toggled by a single tab, which represents the active tab item. This also requires the Dropdown component in order to work.\r\n\r\nAnd secondly, its functionality is coupled to the Switcher component, which is necessary to dynamically transition through different contents using tabbed navigation.', '', 1, 55, '', 6, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(17, '', 4, 'Create a tabbed navigation with different styles.', 'Thumbnav', 'PHVsIGNsYXNzPSJ1ay10aHVtYm5hdiI+DQogICAgPGxpIGNsYXNzPSJ1ay1hY3RpdmUiPjxhIGhyZWY9IiI+PGltZyBzcmM9IiIgYWx0PSIiPjwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIiPjxpbWcgc3JjPSIiIGFsdD0iIj48L2E+PC9saT4NCjwvdWw+', 2, 'http://getuikit.com/docs/thumbnav.html', 'To apply this component, add the .uk-thumbnav class to an element and nest your thumbnail images inside elements within the list items. The thumbnav will wrap into several rows, if it is wider than its container and automatically applies a gutter. Add the .uk-active class to create an active state.\r\n\r\nTo align a subnav, for example to horizontally center it, you can use the Flex component.', '', 1, 54, '', 6, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(18, 'Modifiers\r\n\r\nTo display the list in a different style, just add a modifier class to the the .uk-list class. The modifiers of the List component are not combinable with each other.', 4, 'Easily create nicely looking lists, which come in different styles.', 'List', 'PHVsIGNsYXNzPSJ1ay1saXN0IHVrLWxpc3Qtc3RyaXBlZCI+DQogICAgPGxpPi4uLjwvbGk+DQogICAgPGxpPi4uLjwvbGk+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 3, 'http://getuikit.com/docs/list.html', 'To apply this component, add the .uk-list class to an unordered or ordered list. The list will now display without any spacing or list-style. [uk-list-line] [uk-list-space]', '', 1, 54, '', 6, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(19, 'Add the .uk-description-list-horizontal class to display terms and descriptions side by side.', 4, 'Easily create nicely looking description lists, which come in different styles.', 'Description list', 'PGRsIGNsYXNzPSJ1ay1kZXNjcmlwdGlvbi1saXN0LWhvcml6b250YWwiPg0KICAgIDxkdD4uLi48L2R0Pg0KICAgIDxkZD4uLi48L2RkPg0KPC9kbD4=', 3, 'http://getuikit.com/docs/description-list.html', 'There is no component class necessary to create a description list, but UIkit provides a couple of modifier classes to display the list in a different style. The modifiers of the Description list component are not combinable with each other. [uk-description-list-line]', '', 1, 54, '', 6, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(20, '', 4, 'Easily create nicely looking tables, which come in different styles.', 'Table', 'PHRhYmxlIGNsYXNzPSJ1ay10YWJsZSB1ay10YWJsZS1ob3ZlciI+DQogICAgPGNhcHRpb24+Li4uPC9jYXB0aW9uPg0KICAgIDx0aGVhZD4NCiAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRoPi4uLjwvdGg+DQogICAgICAgIDwvdHI+DQogICAgPC90aGVhZD4NCiAgICA8dGZvb3Q+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZD4uLi48L3RkPg0KICAgICAgICA8L3RyPg0KICAgIDwvdGZvb3Q+DQogICAgPHRib2R5Pg0KICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQ+Li4uPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICA8L3Rib2R5Pg0KPC90YWJsZT4=', 3, 'http://getuikit.com/docs/table.html', 'To apply this component, add the .uk-table class to a element.', '', 1, 53, '', 6, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(21, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button href', 'PGEgY2xhc3M9InVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSIgaHJlZj0iIj4uLi48L2E+', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 11, '', 7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(22, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button primary', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5IiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 10, '', 7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(23, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button disabled', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiB0eXBlPSJidXR0b24iIGRpc2FibGVkPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 10, '', 7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(24, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button success', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1zdWNjZXNzIiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 10, '', 7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(25, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button danger', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1kYW5nZXIiIHR5cGU9ImJ1dHRvbiI+Li4uPC9idXR0b24+', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 10, '', 7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(26, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button mini', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5IHVrLWJ1dHRvbi1taW5pIiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 10, '', 7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(27, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button small', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1zdWNjZXNzIHVrLWJ1dHRvbi1zbWFsbCIgdHlwZT0iYnV0dG9uIj4uLi48L2J1dHRvbj4=', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 10, '', 7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(28, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button large', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1sYXJnZSIgdHlwZT0iYnV0dG9uIj4uLi48L2J1dHRvbj4=', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 10, '', 7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(29, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button full width', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLXdpZHRoLTEtMSB1ay1tYXJnaW4tc21hbGwtYm90dG9tIiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 10, '', 7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(30, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button group', 'PGRpdiBjbGFzcz0idWstYnV0dG9uLWdyb3VwIj4NCiAgICA8YSBjbGFzcz0idWstYnV0dG9uIiBocmVmPSIiPi4uLjwvYT4NCiAgICA8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iPi4uLjwvYnV0dG9uPg0KICAgIDxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiI+Li4uPC9idXR0b24+DQo8L2Rpdj4=', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 10, '', 7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(31, '', 4, 'Easily create nicely looking buttons, which come in different styles.', 'Button dropdowns', 'PCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgZW5hYmxpbmcgdGhlIEphdmFTY3JpcHQgLS0+DQo8ZGl2IGNsYXNzPSJ1ay1idXR0b24tZHJvcGRvd24iIGRhdGEtdWstZHJvcGRvd24+DQoNCiAgICA8IS0tIFRoaXMgaXMgdGhlIGJ1dHRvbiB0b2dnbGluZyB0aGUgZHJvcGRvd24gLS0+DQogICAgPGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIj4uLi48L2J1dHRvbj4NCg0KICAgIDwhLS0gVGhpcyBpcyB0aGUgZHJvcGRvd24gLS0+DQogICAgPGRpdiBjbGFzcz0idWstZHJvcGRvd24gdWstZHJvcGRvd24tc21hbGwiPg0KICAgICAgICA8dWwgY2xhc3M9InVrLW5hdiB1ay1uYXYtZHJvcGRvd24iPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj4uLi48L2E+PC9saT4NCiAgICAgICAgPC91bD4NCiAgICA8L2Rpdj4NCg0KPC9kaXY+', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an or element. Now you have created a button. Add the disabled attribute to a element to disable the button.', '', 1, 10, '', 7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(32, 'This component is using the fantastic Font Awesome icon font, a project by Dave Gandy. Altogether Font Awesome provides more than 300 symbols and glyphs for web-related actions. Icon fonts are great, because they enable you to easily change color, size and more via CSS. They are scalable vector graphics, which means that they look great on high-resolution displays.', 4, 'Place vector icons anywhere using an icon font.', 'Icon', 'PGkgY2xhc3M9InVrLWljb24tY29nIj48L2k+', 4, 'http://getuikit.com/docs/icon.html', 'To apply this component, add any .uk-icon-* class to an or element. Et voilà, you have a vector icon, which inherits size and color just like your text does.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(33, '', 4, 'Easlily create nicely looking badges to label and highlight your content.', 'Badge', 'PGRpdiBjbGFzcz0idWstYmFkZ2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/badge.html', 'To create a badge, just add the .uk-badge class to a or element.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(34, '', 4, 'Defines styles for success, warning and error messages.', 'Alert', 'PGRpdiBjbGFzcz0idWstYWxlcnQgdWstYWxlcnQtc3VjY2VzcyIgZGF0YS11ay1hbGVydD4NCiAgICA8YSBocmVmPSIiIGNsYXNzPSJ1ay1hbGVydC1jbG9zZSB1ay1jbG9zZSI+PC9hPg0KICAgIDxwPi4uLjwvcD4NCjwvZGl2Pg==', 4, 'http://getuikit.com/docs/badge.html', 'To apply this component, add the .uk-alert class to a block element.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(35, '', 4, 'A collection of useful text utility classes to style your content.', 'Text small', 'PHNwYW4gY2xhc3M9InVrLXRleHQtc21hbGwiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(36, '', 4, 'A collection of useful text utility classes to style your content.', 'Text large', 'PHNwYW4gY2xhc3M9InVrLXRleHQtbGFyZ2UiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(37, '', 4, 'A collection of useful text utility classes to style your content.', 'Text bold', 'PHNwYW4gY2xhc3M9InVrLXRleHQtYm9sZCI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(38, '', 4, 'A collection of useful text utility classes to style your content.', 'Text muted', 'PHNwYW4gY2xhc3M9InVrLXRleHQtbXV0ZWQiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(39, '', 4, 'A collection of useful text utility classes to style your content.', 'Text primary', 'PHNwYW4gY2xhc3M9InVrLXRleHQtcHJpbWFyeSI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(40, '', 4, 'A collection of useful text utility classes to style your content.', 'Text success', 'PHNwYW4gY2xhc3M9InVrLXRleHQtc3VjY2VzcyI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(41, '', 4, 'A collection of useful text utility classes to style your content.', 'Text warning', 'PHNwYW4gY2xhc3M9InVrLXRleHQtd2FybmluZyI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(42, '', 4, 'A collection of useful text utility classes to style your content.', 'Text danger', 'PHNwYW4gY2xhc3M9InVrLXRleHQtZGFuZ2VyIj5BZGQgdGhpcyBjbGFzcyB0byBkZWNyZWFzZSB0aGUgZm9udCBzaXplLjwvc3Bhbj4=', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(43, '', 4, 'A collection of useful text utility classes to style your content.', 'Text contrast', 'PHNwYW4gY2xhc3M9InVrLXRleHQtY29udHJhc3QiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(44, '', 4, 'A collection of useful text utility classes to style your content.', 'Text right', 'PHNwYW4gY2xhc3M9InVrLXRleHQtcmlnaHQiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(45, '', 4, 'A collection of useful text utility classes to style your content.', 'Text center', 'PHNwYW4gY2xhc3M9InVrLXRleHQtY2VudGVyIj5BZGQgdGhpcyBjbGFzcyB0byBkZWNyZWFzZSB0aGUgZm9udCBzaXplLjwvc3Bhbj4=', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(46, '', 4, 'A collection of useful text utility classes to style your content.', 'Text justify', 'PHNwYW4gY2xhc3M9InVrLXRleHQtanVzdGlmeSI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(47, '', 4, 'A collection of useful text utility classes to style your content.', 'Text truncate', 'PHNwYW4gY2xhc3M9InVrLXRleHQtdHJ1bmNhdGUiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(48, '', 4, 'A collection of useful text utility classes to style your content.', 'Text nowrap', 'PHNwYW4gY2xhc3M9InVrLXRleHQtbm93cmFwIj5BZGQgdGhpcyBjbGFzcyB0byBkZWNyZWFzZSB0aGUgZm9udCBzaXplLjwvc3Bhbj4=', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(49, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation fade', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLWZhZGUiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(50, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation scale-up', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLXVwIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(51, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation scale-down', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLWRvd24iPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(52, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-top', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXRvcCI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(53, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-bottom', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(54, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-left', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWxlZnQiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(55, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-right', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXJpZ2h0Ij4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(56, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation shake', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNoYWtlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(57, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation scale', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(58, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation fade reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLWZhZGUgdWstYW5pbWF0aW9uLXJldmVyc2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 11, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(59, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation scale-up reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLXVwIHVrLWFuaW1hdGlvbi1yZXZlcnNlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(60, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation scale-down reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLWRvd24gdWstYW5pbWF0aW9uLXJldmVyc2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(61, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-top reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXRvcCB1ay1hbmltYXRpb24tcmV2ZXJzZSI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(62, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-bottom reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSB1ay1hbmltYXRpb24tcmV2ZXJzZSI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(63, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-left reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWxlZnQgdWstYW5pbWF0aW9uLXJldmVyc2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(64, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation slide-right reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXJpZ2h0IHVrLWFuaW1hdGlvbi1yZXZlcnNlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(65, '', 4, 'A basic collection of smooth animations to use within your page.', 'Animation scale reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlIHVrLWFuaW1hdGlvbi1yZXZlcnNlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(66, '', 4, 'Create modal dialogs with different styles and transitions.', 'Modal default', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCjxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1tb2RhbCI+DQogICAgPGRpdiBjbGFzcz0idWstbW9kYWwtZGlhbG9nIj4NCiAgICAgICAgPGEgY2xhc3M9InVrLW1vZGFsLWNsb3NlIHVrLWNsb3NlIj48L2E+DQogICAgICAgIC4uLg0KICAgIDwvZGl2Pg0KPC9kaXY+', 5, 'http://getuikit.com/docs/modal.html', 'The modal component consists of an overlay, a dialog and a close button.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(67, '', 4, 'Create modal dialogs with different styles and transitions.', 'Modal header-footer', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCjxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1tb2RhbCI+DQogICAgPGRpdiBjbGFzcz0idWstbW9kYWwtZGlhbG9nIj4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstbW9kYWwtaGVhZGVyIj4uLi48L2Rpdj4NCiAgICAgICAgLi4uDQogICAgICAgIDxkaXYgY2xhc3M9InVrLW1vZGFsLWZvb3RlciI+Li4uPC9kaXY+DQogICAgPC9kaXY+DQo8L2Rpdj4=', 5, 'http://getuikit.com/docs/modal.html', 'The modal component consists of an overlay, a dialog and a close button.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(68, '', 4, 'Create modal dialogs with different styles and transitions.', 'Modal image', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCjxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1tb2RhbCI+DQogICAgPGRpdiBjbGFzcz0idWstbW9kYWwtZGlhbG9nIHVrLW1vZGFsLWRpYWxvZy1saWdodGJveCI+DQogICAgICAgIDxhIGhyZWY9IiIgY2xhc3M9InVrLW1vZGFsLWNsb3NlIHVrLWNsb3NlIHVrLWNsb3NlLWFsdCI+PC9hPg0KICAgICAgICA8aW1nIHNyYz0iIiBhbHQ9IiI+DQogICAgPC9kaXY+DQo8L2Rpdj4=', 5, 'http://getuikit.com/docs/modal.html', 'The modal component consists of an overlay, a dialog and a close button.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(69, 'The Off-canvas component is perfect for building a mobile navigation, similar to those which are popular with many native mobile apps, where a single button in the upper left corner toggles an off-canvas sidebar with a menu.', 4, 'Create a smooth off-canvas sidebar that slides in and out of the page.', 'Off-canvas default', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBvZmYtY2FudmFzIHNpZGViYXIgLS0+DQo8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iIGRhdGEtdWstb2ZmY2FudmFzPSJ7dGFyZ2V0OicjbXktaWQnfSI+Li4uPC9idXR0b24+DQoNCjwhLS0gVGhpcyBpcyB0aGUgb2ZmLWNhbnZhcyBzaWRlYmFyIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1vZmZjYW52YXMiPg0KICAgIDxkaXYgY2xhc3M9InVrLW9mZmNhbnZhcy1iYXIiPi4uLjwvZGl2Pg0KPC9kaXY+', 5, 'http://getuikit.com/docs/offcanvas.html', 'The Off-canvas component consists of an overlay and an off-canvas bar.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(70, 'The Off-canvas component is perfect for building a mobile navigation, similar to those which are popular with many native mobile apps, where a single button in the upper left corner toggles an off-canvas sidebar with a menu.', 4, 'Create a smooth off-canvas sidebar that slides in and out of the page.', 'Off-canvas right', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBvZmYtY2FudmFzIHNpZGViYXIgLS0+DQo8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iIGRhdGEtdWstb2ZmY2FudmFzPSJ7dGFyZ2V0OicjbXktaWQnfSI+Li4uPC9idXR0b24+DQoNCjwhLS0gVGhpcyBpcyB0aGUgb2ZmLWNhbnZhcyBzaWRlYmFyIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1vZmZjYW52YXMiPg0KICAgIDxkaXYgY2xhc3M9InVrLW9mZmNhbnZhcy1iYXIgdWstb2ZmY2FudmFzLWJhci1mbGlwIj4uLi48L2Rpdj4NCjwvZGl2Pg==', 5, 'http://getuikit.com/docs/offcanvas.html', 'The Off-canvas component consists of an overlay and an off-canvas bar.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(71, '', 4, 'Dynamically transition through different content panes.', 'Switcher default', 'PCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIHRvZ2dsaW5nIGVsZW1lbnRzIC0tPg0KPHVsIGRhdGEtdWstc3dpdGNoZXI9Intjb25uZWN0OicjbXktaWQnfSI+DQogICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQo8L3VsPg0KDQo8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCjx1bCBpZD0ibXktaWQiIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(72, 'In some cases you want to switch to another content section from within the active content. This is possible using the data-uk-switcher-item attribute. To target the items, you need to set the data attribute to the number of the respective content item.', 4, 'Dynamically transition through different content panes.', 'Switcher in-content', 'PCEtLSBUaGlzIGlzIHRoZSBuYXYgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQo8dWwgZGF0YS11ay1zd2l0Y2hlcj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4NCiAgICA8bGk+PGEgaHJlZj0iIj4uLi48L2E+PC9saT4NCjwvdWw+DQoNCjwhLS0gVGhpcyBpcyB0aGUgY29udGFpbmVyIG9mIHRoZSBjb250ZW50IGl0ZW1zIC0tPg0KPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIj4NCiAgICA8bGk+IC4uLiA8YSBocmVmPSIiIGRhdGEtdWstc3dpdGNoZXItaXRlbT0iMCI+Li4uPC9hPjwvbGk+DQogICAgPGxpPiAuLi4gPGEgaHJlZj0iIiBkYXRhLXVrLXN3aXRjaGVyLWl0ZW09IjEiPi4uLjwvYT48L2xpPg0KPC91bD4=', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(73, 'It is also possible to connect multiple content containers. Just extend the connect parameter with the ID of the additional container.', 4, 'Dynamically transition through different content panes.', 'Switcher multiple-items', 'PCEtLSBUaGlzIGlzIHRoZSBuYXYgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQo8dWwgZGF0YS11ay1zd2l0Y2hlcj0ie2Nvbm5lY3Q6JyNteS1pZC1vbmUsICNteS1pZC10d28nfSI+DQogICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQo8L3VsPg0KDQo8IS0tIFRoZXNlIGFyZSB0aGUgY29udGFpbmVycyBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCjx1bCBpZD0ibXktaWQtb25lIiBjbGFzcz0idWstc3dpdGNoZXIiPg0KICAgIDxsaT4uLi48L2xpPg0KPC91bD4NCg0KPHVsIGlkPSJteS1pZC10d28iIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(74, 'The Switcher component allows you to add different animations to items when toggling between them. All you need to do is add the animation parameter to the data-attribute and define the animation that you want to apply. Check the table below for an overview of the animations provided.\r\n\r\nYou can also apply multiple animations by using the uk-animation-* classes from the Animation component. That way you can even create your own custom class to apply a different transition to the switcher.', 4, 'Dynamically transition through different content panes.', 'Switcher animation', 'PCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIHRvZ2dsaW5nIGVsZW1lbnRzIC0tPg0KPHVsIGRhdGEtdWstc3dpdGNoZXI9Intjb25uZWN0OicjbXktaWQnLCBhbmltYXRpb246ICd1ay1hbmltYXRpb24tZmFkZSwgdWstYW5pbWF0aW9uLXNsaWRlLWxlZnQnfSI+DQogICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQo8L3VsPg0KDQo8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCjx1bCBpZD0ibXktaWQiIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(75, 'As an exception to the rule, add the data-uk-tab=\"{connect:\'#ID\'}\" attribute, using the parameter \"tab\" instead of \"switcher\", to the tabbed navigation to combine the switcher with the Tab component.', 4, 'Dynamically transition through different content panes.', 'Switcher tabs-horizontal', 'PCEtLSBUaGlzIGlzIHRoZSB0YWJiZWQgbmF2aWdhdGlvbiBjb250YWluaW5nIHRoZSB0b2dnbGluZyBlbGVtZW50cyAtLT4NCjx1bCBjbGFzcz0idWstdGFiIiBkYXRhLXVrLXRhYj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4NCiAgICA8bGk+PGEgaHJlZj0iIj4uLi48L2E+PC9saT4NCjwvdWw+DQoNCjwhLS0gVGhpcyBpcyB0aGUgY29udGFpbmVyIG9mIHRoZSBjb250ZW50IGl0ZW1zIC0tPg0KPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIHVrLW1hcmdpbiI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(76, 'Use the Grid component to display content correctly with a vertical tabbed navigation.', 4, 'Dynamically transition through different content panes.', 'Switcher tabs-vertical', 'PCEtLSBUaGlzIGlzIHRoZSBsZWZ0IHZlcnRpY2FsIHRhYmJlZCBuYXZpZ2F0aW9uIC0tPg0KPGRpdiBjbGFzcz0idWstZ3JpZCI+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTEtMiI+DQogICAgICAgIDwhLS0gVGhpcyBpcyB0aGUgdmVydGljYWwgdGFiYmVkIG5hdmlnYXRpb24gY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQogICAgICAgIDx1bCBjbGFzcz0idWstdGFiIHVrLXRhYi1sZWZ0IiBkYXRhLXVrLXRhYj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4uLi48L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLW1lZGl1bS0xLTIiPg0KICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCiAgICAgICAgPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIj4uLi48L3VsPg0KICAgIDwvZGl2Pg0KPC9kaXY+DQoNCjwhLS0gVGhpcyBpcyB0aGUgcmlnaHQgdmVydGljYWwgdGFiYmVkIG5hdmlnYXRpb24gLS0+DQo8ZGl2IGNsYXNzPSJ1ay1ncmlkIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0yIHVrLXB1c2gtMS0yIj4NCiAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB2ZXJ0aWNhbCB0YWJiZWQgbmF2aWdhdGlvbiBjb250YWluaW5nIHRoZSB0b2dnbGluZyBlbGVtZW50cyAtLT4NCiAgICAgICAgPHVsIGNsYXNzPSJ1ay10YWIgdWstdGFiLXJpZ2h0IiBkYXRhLXVrLXRhYj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4uLi48L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLW1lZGl1bS0xLTIgdWstcHVsbC0xLTIiPg0KICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCiAgICAgICAgPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIj4uLi48L3VsPg0KICAgIDwvZGl2Pg0KPC9kaXY+', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(77, 'The switcher can also be applied to buttons or button groups from the Button component. Just add the switcher data attribute to a element around a group of buttons or to the element with the .button-group class.', 4, 'Dynamically transition through different content panes.', 'Switcher button-group', 'PCEtLSBUaGlzIGlzIHRoZSBidXR0b24gZ3JvdXAgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgYnV0dG9ucyAtLT4NCjxkaXYgY2xhc3M9InVrLWJ1dHRvbi1ncm91cCIgZGF0YS11ay1zd2l0Y2hlcj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4NCiAgICA8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iIHR5cGU9ImJ1dHRvbiI+Li4uPC9idXR0b24+DQo8L2Rpdj4NCg0KPCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIGNvbnRlbnQgaXRlbXMgLS0+DQo8dWwgaWQ9Im15LWlkIiBjbGFzcz0idWstc3dpdGNoZXIgdWstbWFyZ2luIj4uLi48L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(78, 'To apply the switcher to the Nav component, add the data attribute to the nav . Use the Grid component to arrange nav and content in a grid layout.', 4, 'Dynamically transition through different content panes.', 'Switcher navs', 'PGRpdiBjbGFzcz0idWstZ3JpZCI+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTEtNCI+DQoNCiAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSBuYXYgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQogICAgICAgIDx1bCBjbGFzcz0idWstbmF2IHVrLW5hdi1zaWRlIiBkYXRhLXVrLXN3aXRjaGVyPSJ7Y29ubmVjdDonI215LWlkJ30iPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQogICAgICAgIDwvdWw+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTMtNCI+DQoNCiAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIGNvbnRlbnQgaXRlbXMgLS0+DQogICAgICAgIDx1bCBpZD0ibXktaWQiIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgICAgICAgICA8bGk+Li4uPC9saT4NCiAgICAgICAgPC91bD4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(79, '', 4, 'Hide, switch or change the appearence of different contents through a toggle.', 'Toggle default', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8ZGl2IGlkPSJteS1pZCI+Li4uPC9kaXY+', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a or element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(80, 'You can also toggle multiple items at the same time. Just use the appropriate selector.', 4, 'Hide, switch or change the appearence of different contents through a toggle.', 'Toggle multiple', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonLm15LWNsYXNzJ30iPi4uLjwvYnV0dG9uPg0KDQo8ZGl2IGNsYXNzPSJteS1jbGFzcyI+Li4uPC9kaXY+DQo8ZGl2IGNsYXNzPSJteS1jbGFzcyB1ay1oaWRkZW4iPi4uLjwvZGl2Pg==', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a or element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, 10, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(81, 'You can also toggle multiple items at the same time. Just use the appropriate selector.', 4, 'Hide, switch or change the appearence of different contents through a toggle.', 'Toggle class', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonI215LWlkJywgY2xzOid1ay1wYW5lbC1ib3gtcHJpbWFyeSd9Ij4uLi48L2J1dHRvbj4NCg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1wYW5lbCB1ay1wYW5lbC1ib3giPi4uLjwvZGl2Pg==', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a or element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, 19, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(82, 'The Toggle component allows you to add animations to items when toggling between them. Just add one of the .uk-animation-* classes from the Animation component to the animation parameter. The class will be applied to the in as well as the out animation. If you prefer a different out animation, just add another class.', 4, 'Hide, switch or change the appearence of different contents through a toggle.', 'Toggle animations', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonI215LWlkJywgYW5pbWF0aW9uOid1ay1hbmltYXRpb24tc2xpZGUtbGVmdCwgdWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSd9Ij4uLi48L2J1dHRvbj4NCg0KPGRpdiBpZD0ibXktaWQiPi4uLjwvZGl2Pg==', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a or element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, 19, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(83, '', 4, 'Trigger events and animations while scrolling your page.', 'Scrollspy default', 'PGRpdiBkYXRhLXVrLXNjcm9sbHNweT0ie2NsczondWstYW5pbWF0aW9uLWZhZGUnfSI+Li4uPC9kaXY+DQoNCjxkaXYgZGF0YS11ay1zY3JvbGxzcHk9IntjbHM6J3VrLWFuaW1hdGlvbi1mYWRlJywgcmVwZWF0OiB0cnVlfSI+Li4uPC9kaXY+DQoNCjxkaXYgZGF0YS11ay1zY3JvbGxzcHk9IntjbHM6J3VrLWFuaW1hdGlvbi1mYWRlJywgZGVsYXk6OTAwfSI+Li4uPC9kaXY+', 5, 'http://getuikit.com/docs/scrollspy.html', 'The scrollspy component listens to page scrolling and triggers events based on the scroll position. For example, if you scroll down a page and an element appears the first time in the viewport you can trigger a smooth animation to fade in the element. Just add the data-uk-scrollspy attribute and the following options.', '', 1, 19, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(84, 'You can also group scrollspy elements, so you won\'t have to apply the data attribute to each of them. Just add the data-uk-scollspy\"{target:\'MY-CLASS\'}\" attribute to a container element, targetting the selector the items you want to animate within the container. When using a delay it will be applied cumulatively to the items within the row that scrolls into view. The delay will be resetted for the next row within the group when it scrolls into view.', 4, 'Trigger events and animations while scrolling your page.', 'Scrollspy groups', 'PGRpdiBkYXRhLXVrLXNjcm9sbHNweT0ie2NsczondWstYW5pbWF0aW9uLWZhZGUnLCB0YXJnZXQ6Jy5teS1jbGFzcycsIGRlbGF5OjMwMH0iPg0KDQogICAgPCEtLSBUaGlzIGl0ZW0gaGFzIG5vIGRlbGF5IC0tPg0KICAgIDxkaXYgY2xhc3M9Im15LWNsYXNzIj4uLi48L2Rpdj4NCg0KICAgIDwhLS0gVGhpcyBpdGVtIGhhcyBhIGRlbGF5IG9mIDMwMG1zIC0tPg0KICAgIDxkaXYgY2xhc3M9Im15LWNsYXNzIj4uLi48L2Rpdj4NCg0KICAgIDwhLS0gVGhpcyBpdGVtIGhhcyBhIGRlbGF5IG9mIDYwMG1zIC0tPg0KICAgIDxkaXYgY2xhc3M9Im15LWNsYXNzIj4uLi48L2Rpdj4NCg0KPC9kaXY+', 5, 'http://getuikit.com/docs/scrollspy.html', 'The scrollspy component listens to page scrolling and triggers events based on the scroll position. For example, if you scroll down a page and an element appears the first time in the viewport you can trigger a smooth animation to fade in the element. Just add the data-uk-scrollspy attribute and the following options.', '', 1, 20, '', 8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(85, '', 4, 'Create a fancy lightbox for images and videos utilizing the Modal component.', 'Lightbox single-image', 'PGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSIiIGhyZWY9IiIgY2xhc3M9InVrLWJ1dHRvbiI+T3BlbiBsaWdodGJveDwvYT4=', 5, 'http://getuikit.com/docs/lightbox.html', 'To apply this component, add the data-uk-lightbox attribute to an anchor linking to the image you wish to display. If a title attribute exists it will be displayed as a caption for the lightbox.', '', 1, 19, '', 9, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(86, 'You can link multiple images to the same lightbox and switch between them from within the lightbox, thus creating a gallery. Just add the {group:\'my-group\'} option to the data attribute of each item using the same name on all items that you want to group. Make sure to include the CSS from the Slidenav component, so you can navigate between the items.', 4, 'Create a fancy lightbox for images and videos utilizing the Modal component.', 'Lightbox groups-image', 'PGRpdiBkYXRhLXVrLWdyaWQtbWFyZ2luPSIiIGNsYXNzPSJ1ay1ncmlkIHVrLWdyaWQtd2lkdGgtbWVkaXVtLTEtNCI+DQogICAgPGRpdj4NCiAgICAgICAgPGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMSd9IiBocmVmPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF8xLmpwZyI+DQogICAgICAgICAgICA8aW1nIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIiBhbHQ9IiIgc3JjPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF8xLmpwZyI+DQogICAgICAgIDwvYT4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2Pg0KICAgICAgICA8YSB0aXRsZT0iVGl0bGUiIGRhdGEtdWstbGlnaHRib3g9Intncm91cDonZ3JvdXAxJ30iIGRhdGEtbGlnaHRib3gtdHlwZT0iaW1hZ2UiIGhyZWY9ImltYWdlcy9wbGFjZWhvbGRlcl84MDB4NjAwXzIuanBnIj4NCiAgICAgICAgICAgIDxpbWcgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiIGFsdD0iIiBzcmM9ImltYWdlcy9wbGFjZWhvbGRlcl84MDB4NjAwXzIuanBnIj4NCiAgICAgICAgPC9hPg0KICAgIDwvZGl2Pg0KICAgIDxkaXY+DQogICAgICAgIDxhIHRpdGxlPSJUaXRsZSIgZGF0YS11ay1saWdodGJveD0ie2dyb3VwOidncm91cDEnfSIgZGF0YS1saWdodGJveC10eXBlPSJpbWFnZSIgaHJlZj0iaW1hZ2VzL3BsYWNlaG9sZGVyXzgwMHg2MDBfMy5qcGciPg0KICAgICAgICAgICAgPGltZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCIgYWx0PSIiIHNyYz0iaW1hZ2VzL3BsYWNlaG9sZGVyXzgwMHg2MDBfMy5qcGciPg0KICAgICAgICA8L2E+DQogICAgPC9kaXY+DQogICAgPGRpdj4NCiAgICAgICAgPGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMSd9IiBkYXRhLWxpZ2h0Ym94LXR5cGU9ImltYWdlIiBocmVmPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF80LmpwZyI+DQogICAgICAgICAgICA8aW1nIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIiBhbHQ9IiIgc3JjPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF80LmpwZyI+DQogICAgICAgIDwvYT4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==', 5, 'http://getuikit.com/docs/lightbox.html', 'To apply this component, add the data-uk-lightbox attribute to an anchor linking to the image you wish to display. If a title attribute exists it will be displayed as a caption for the lightbox.', '', 1, 20, '', 9, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(87, 'A lightbox is not restricted to images. Other media, like videos, can be displayed inside a lightbox and it will automatically generate the correct output by evaluating your path.', 4, 'Create a fancy lightbox for images and videos utilizing the Modal component.', 'Lightbox content-sources', 'PHA+DQogICAgPGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMid9IiBocmVmPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF8xLmpwZyIgY2xhc3M9InVrLWJ1dHRvbiI+SW1hZ2U8L2E+DQogICAgPGEgZGF0YS11ay1saWdodGJveD0ie2dyb3VwOidncm91cDInfSIgaHJlZj0iaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9odG1sNS92aWRlb3MvYmlnX2J1Y2tfYnVubnkubXA0IiBjbGFzcz0idWstYnV0dG9uIj5NUDQ8L2E+DQogICAgPGEgZGF0YS11ay1saWdodGJveD0ie2dyb3VwOidncm91cDInfSIgaHJlZj0iaHR0cDovL3ZpbWVvLmNvbS8xMDg0NTM3IiBjbGFzcz0idWstYnV0dG9uIj5WaW1lbzwvYT4NCiAgICA8YSBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMid9IiBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVlFN1Z6bEx0cC00IiBjbGFzcz0idWstYnV0dG9uIj5Zb3VUdWJlPC9hPg0KPC9wPg==', 5, 'http://getuikit.com/docs/lightbox.html', 'To apply this component, add the data-uk-lightbox attribute to an anchor linking to the image you wish to display. If a title attribute exists it will be displayed as a caption for the lightbox.', '', 1, 19, '', 9, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(88, 'To display multiple content sections at the same time without one collapsing when the other one is opened, add the {collapse: false} option to the date attribute.', 4, 'Create a list of items, allowing each item\'s content to be expanded and collapsed by clicking its header.', 'Accordion', 'PGRpdiBjbGFzcz0idWstYWNjb3JkaW9uIiBkYXRhLXVrLWFjY29yZGlvbj4NCg0KICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj4uLi48L2gzPg0KICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4uLi48L2Rpdj4NCg0KICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj4uLi48L2gzPg0KICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4uLi48L2Rpdj4NCg0KICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj4uLi48L2gzPg0KICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4uLi48L2Rpdj4NCg0KPC9kaXY+', 5, 'http://getuikit.com/docs/accordion.html', 'To apply the Accordion component, add the uk-accordion class and the data-uk-accordion attribute to a container element. Add the uk-accordion-content class to each of the content sections within the container. Finally, add the uk-accordion-title class to any element, like a heading, above the content section to create a toggle.', '', 1, 20, '', 10, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(93, 'FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome No matter how many columns of data you may have in them.\r\n\r\nHave you ever wanted to show a lot of data in a table, but hate how badly it scales on smaller mobile devices? The FooTable jQuery plugin solves this problem by allowing you to hide certain columns on smaller devices, but still allowing the user to expand each row to see the columns that were hidden.', 5, 'FooTable', 'FooTable', 'PHRhYmxlIGNsYXNzPSJmb290YWJsZSBtZXRyby1ibHVlIiBkYXRhLWZpbHRlcj0iI2ZpbHRlciIgZGF0YS1wYWdlLXNpemU9IjUiPg0KICA8dGhlYWQ+DQogICAgPHRyPg0KICAgICAgPHRoIGRhdGEtdG9nZ2xlPSJ0cnVlIj5OYW1lPC90aD4NCiAgICAgIDx0aCBkYXRhLWhpZGU9InBob25lLHRhYmxldCI+UGhvbmU8L3RoPg0KICAgICAgPHRoIGRhdGEtaGlkZT0icGhvbmUsdGFibGV0Ij5FbWFpbDwvdGg+DQogICAgPC90cj4NCiAgPC90aGVhZD4NCiAgPHRib2R5Pg0KICAgIDx0cj4NCiAgICAgIDx0ZD5Cb2IgTWFuPC90ZD4NCiAgICAgIDx0ZD41NTUtMTIzNDU8L3RkPg0KICAgICAgPHRkPmJvYkBob21lLmNvbTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQ+QnJpZGdldCBKb25lczwvdGQ+DQogICAgICA8dGQ+NTQ0LTc3NjY1NTwvdGQ+DQogICAgICA8dGQ+YmpvbmVzQG15c2l0ZS5jb208L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkPlRvbSBKb25lczwvdGQ+DQogICAgICA8dGQ+NTU1LTk5OTExPC90ZD4NCiAgICAgIDx0ZD5jcnVpc2UxQGNyYXp5LmNvbTwvdGQ+DQogICAgPC90cj4NCiAgPC90Ym9keT4NCjwvdGFibGU+', 1, 'http://fooplugins.com/footable-demos/', '', '', 1, 58, '', 13, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(90, 'This is a input field for uikit form', 4, 'Add Input field - row', 'Input field', 'ICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1mb3JtLXJvdyI+DQoJCTxsYWJlbCBjbGFzcz0idWstZm9ybS1sYWJlbCIgPg0KCQkJPD9waHAgZWNobyBKVGV4dDo6XygnTGFiZWwnKTsgPz4NCgkJPC9sYWJlbD4NCgkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImtleSIgcGxhY2Vob2xkZXI9Ijw/cGhwIGVjaG8gSlRleHQ6Ol8oJ2FkZCBzb21lIHRleHQgaGVyZSEnKTsgPz4iPiA8c3BhbiBjbGFzcz0idWstZm9ybS1oZWxwLWlubGluZSI+PD9waHAgZWNobyBKVGV4dDo6XygnaGVscCBuZWVkZWQnKTsgPz48L3NwYW4+DQoJPC9kaXY+', 3, 'http://getuikit.com/docs/form.html', '', '', 1, 20, '', 12, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(91, 'This is a textarea field for uikit form', 4, 'Add textarea - row', 'Textarea', 'CTxkaXYgY2xhc3M9InVrLWZvcm0tcm93Ij4NCgkJPGxhYmVsIGNsYXNzPSJ1ay1mb3JtLWxhYmVsIiA+DQoJCQk8P3BocCBlY2hvIEpUZXh0OjpfKCdMYWJlbCcpOyA/Pg0KCQk8L2xhYmVsPg0KCQk8dGV4dGFyZWEgY29scz0iIiByb3dzPSIiICBzdHlsZT0id2lkdGg6IDEwMCU7IGhlaWdodDogMjE2cHg7IiBwbGFjZWhvbGRlcj0iPD9waHAgZWNobyBKVGV4dDo6XygnYWRkIHNvbWUgdGV4dCBoZXJlIScpOyA/PiI+PHx8fHxGSVh8fHx8fHx0ZXh0YXJlYT4NCgkJPHAgY2xhc3M9InVrLWZvcm0taGVscC1ibG9jayI+PD9waHAgZWNobyBKVGV4dDo6XygnaGVscCBuZWVkZWQnKTsgPz48L3A+DQoJPC9kaXY+', 3, 'http://getuikit.com/docs/form.html', '', '', 1, 22, '', 12, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/'),
(92, 'This is a uikit form', 4, 'Add Form', 'Form', 'PGZvcm0gY2xhc3M9InVrLWZvcm0iPg0KICAgIDxmaWVsZHNldD4NCiAgICAgICAgPGxlZ2VuZD48P3BocCBlY2hvIEpUZXh0OjpfKCdMZWdlbmQnKTsgPz48L2xlZ2VuZD4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstZm9ybS1yb3ciPg0KCQk8bGFiZWwgY2xhc3M9InVrLWZvcm0tbGFiZWwiID4NCgkJCTw/cGhwIGVjaG8gSlRleHQ6Ol8oJ0xhYmVsJyk7ID8+DQoJCTwvbGFiZWw+DQoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJrZXkiIHBsYWNlaG9sZGVyPSI8P3BocCBlY2hvIEpUZXh0OjpfKCdhZGQgc29tZSB0ZXh0IGhlcmUhJyk7ID8+Ij4gPHNwYW4gY2xhc3M9InVrLWZvcm0taGVscC1pbmxpbmUiPjw/cGhwIGVjaG8gSlRleHQ6Ol8oJ2hlbHAgbmVlZGVkJyk7ID8+PC9zcGFuPg0KCTwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1mb3JtLXJvdyI+DQoJCTxsYWJlbCBjbGFzcz0idWstZm9ybS1sYWJlbCIgPg0KCQkJPD9waHAgZWNobyBKVGV4dDo6XygnTGFiZWwnKTsgPz4NCgkJPC9sYWJlbD4NCgkJPHRleHRhcmVhIGNvbHM9IiIgcm93cz0iIiAgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDIxNnB4OyIgcGxhY2Vob2xkZXI9Ijw/cGhwIGVjaG8gSlRleHQ6Ol8oJ2FkZCBzb21lIHRleHQgaGVyZSEnKTsgPz4iPjx8fHx8fEZJWHx8fHx8dGV4dGFyZWE+DQoJCTxwIGNsYXNzPSJ1ay1mb3JtLWhlbHAtYmxvY2siPjw/cGhwIGVjaG8gSlRleHQ6Ol8oJ2hlbHAgbmVlZGVkJyk7ID8+PC9wPg0KCTwvZGl2Pg0KICAgIDwvZmllbGRzZXQ+DQo8L2Zvcm0+', 1, 'http://getuikit.com/docs/form.html', '', '', 1, 20, '', 12, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/');
--
-- Dumping data for table `#__componentbuilder_field`

View File

@ -0,0 +1,7 @@
ALTER TABLE `#__componentbuilder_snippet` ADD `contributor_company` VARCHAR(255) NOT NULL DEFAULT '' AFTER `asset_id`;
ALTER TABLE `#__componentbuilder_snippet` ADD `contributor_email` VARCHAR(255) NOT NULL DEFAULT '' AFTER `contributor_company`;
ALTER TABLE `#__componentbuilder_snippet` ADD `contributor_name` VARCHAR(255) NOT NULL DEFAULT '' AFTER `contributor_email`;
ALTER TABLE `#__componentbuilder_snippet` ADD `contributor_website` VARCHAR(255) NOT NULL DEFAULT '' AFTER `contributor_name`;

View File

@ -103,18 +103,6 @@ $componentParams = JComponentHelper::getParams('com_componentbuilder');
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php if ($this->canDo->get('joomla_component.access')) : ?>
<?php echo JHtml::_('bootstrap.addTab', 'custom_admin_viewTab', 'linked_components', JText::_('COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_LINKED_COMPONENTS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
</div>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<?php echo JLayoutHelper::render('custom_admin_view.linked_components_fullwidth', $this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.delete') || $this->canDo->get('core.edit.created_by') || $this->canDo->get('core.edit.state') || $this->canDo->get('core.edit.created')) : ?>
<?php echo JHtml::_('bootstrap.addTab', 'custom_admin_viewTab', 'publishing', JText::_('COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">

View File

@ -61,10 +61,7 @@ class ComponentbuilderViewCustom_admin_view extends JViewLegacy
{
// return to the list view that refered to this item
$this->referral = '&ref='.(string)$this->ref;
}
// Get Linked view data
$this->vyelinked_components = $this->get('Vyelinked_components');
}
// Set the toolbar
$this->addToolBar();
@ -196,17 +193,7 @@ class ComponentbuilderViewCustom_admin_view extends JViewLegacy
$document->setTitle(JText::_($isNew ? 'COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_NEW' : 'COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEW_EDIT'));
$document->addStyleSheet(JURI::root() . "administrator/components/com_componentbuilder/assets/css/custom_admin_view.css");
// Add Ajax Token
$document->addScriptDeclaration("var token = '".JSession::getFormToken()."';");
// Add the CSS for Footable
$document->addStyleSheet('https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css');
$document->addStyleSheet(JURI::root() .'media/com_componentbuilder/footable/css/footable.standalone.min.css');
// Add the JavaScript for Footable (adding all funtions)
$document->addScript(JURI::root() .'media/com_componentbuilder/footable/js/footable.min.js');
$footable = "jQuery(document).ready(function() { jQuery(function () { jQuery('.footable').footable();});});";
$document->addScriptDeclaration($footable);
$document->addScriptDeclaration("var token = '".JSession::getFormToken()."';");
$document->addScript(JURI::root() . $this->script);
$document->addScript(JURI::root() . "administrator/components/com_componentbuilder/views/custom_admin_view/submitbutton.js");
JText::script('view not acceptable. Error');

View File

@ -148,7 +148,12 @@ class ComponentbuilderViewCustom_admin_views extends JViewLegacy
{
JToolBarHelper::custom('custom_admin_views.exportData', 'download', '', 'COM_COMPONENTBUILDER_EXPORT_DATA', true);
}
}
}
if ($this->user->authorise('custom_admin_view.get_snippets', 'com_componentbuilder'))
{
// add Get Snippets button.
JToolBarHelper::custom('custom_admin_views.getSnippets', 'search', '', 'COM_COMPONENTBUILDER_GET_SNIPPETS', false);
}
if ($this->canDo->get('core.import') && $this->canDo->get('custom_admin_view.import'))
{

View File

@ -64,7 +64,7 @@ class ComponentbuilderViewFieldtype extends JViewLegacy
}
// Get Linked view data
$this->vzwfields = $this->get('Vzwfields');
$this->vzufields = $this->get('Vzufields');
// Set the toolbar
$this->addToolBar();

View File

@ -64,7 +64,7 @@ class ComponentbuilderViewFtp extends JViewLegacy
}
// Get Linked view data
$this->vzxlinked_components = $this->get('Vzxlinked_components');
$this->vzvlinked_components = $this->get('Vzvlinked_components');
// Set the toolbar
$this->addToolBar();

View File

@ -51,10 +51,10 @@ JHtml::_('behavior.keepalive');
</form>
<div id="snippets-github" class="bulk-updater-toggler">
<br /><br /><br />
<center><h1><?php echo JText::_('COM_COMPONENTBUILDER_THE_SNIPPETS_IS_LOADING'); ?>.<span class="loading-dots">.</span></h1></center>
<center><h1> <?php echo JText::_('COM_COMPONENTBUILDER_THE_SNIPPETS_IS'); ?> <br /><?php echo JText::_('COM_COMPONENTBUILDER_LOADING'); ?>.<span class="loading-dots">.</span></h1></center>
</div>
<div class="bulk-updater-toggler uk-hidden">
<h1><?php echo JText::_('COM_COMPONENTBUILDER_SNIPPETS_BULK_TOOLS'); ?></h1>
<h1><?php echo JText::_('COM_COMPONENTBUILDER_BULK_TOOLS'); ?></h1>
</div>
<div id="snippets-display" style="display: none;">
<div class="uk-hidden-small">
@ -140,6 +140,7 @@ JHtml::_('behavior.keepalive');
<div class="uk-grid" data-uk-grid-match="{target:'.uk-panel'}">
<div class="uk-width-medium-1-4">
<div class="uk-panel uk-panel-box uk-panel-box-primary">
<div class="uk-badge uk-panel-badge uk-badge-notification"><a href="#behind-meaning" data-uk-offcanvas class="uk-text-contrast"><i class="uk-icon-info"></i></a></div>
<h3 class="uk-panel-title"><i class="uk-icon-chain-broken"></i> <?php echo JText::_('COM_COMPONENTBUILDER_OUT_OF_DATE'); ?></h3>
<div id="bulk-notice-behind" class="uk-alert uk-alert-warning" style="display: none;"><?php echo JText::_('COM_COMPONENTBUILDER_THERE_ARE_NO_OUT_OF_DATE_SNIPPETS_AT_THIS_TIME'); ?></div>
<button id="bulk-button-behind" class="getreaction uk-button uk-button-primary uk-width-1-1" data-status="behind" data-type="all" title="<?php echo JText::_('COM_COMPONENTBUILDER_BULK_UPDATE_ALL_OUT_DATED_SNIPPETS'); ?>">
@ -150,6 +151,7 @@ JHtml::_('behavior.keepalive');
</div>
<div class="uk-width-medium-1-4">
<div class="uk-panel uk-panel-box uk-panel-box-primary">
<div class="uk-badge uk-panel-badge uk-badge-notification"><a href="#new-meaning" data-uk-offcanvas class="uk-text-contrast"><i class="uk-icon-info"></i></a></div>
<h3 class="uk-panel-title"><i class="uk-icon-coffee"></i> <?php echo JText::_('COM_COMPONENTBUILDER_NEW'); ?></h3>
<div id="bulk-notice-new" class="uk-alert uk-alert-warning" style="display: none;"><?php echo JText::_('COM_COMPONENTBUILDER_THERE_ARE_NO_NEW_SNIPPETS_AT_THIS_TIME'); ?></div>
<button id="bulk-button-new" class="getreaction uk-button uk-button-primary uk-width-1-1" data-status="new" data-type="all" title="<?php echo JText::_('COM_COMPONENTBUILDER_BULK_GET_ALL_NEW_SNIPPETS'); ?>">
@ -160,6 +162,7 @@ JHtml::_('behavior.keepalive');
</div>
<div class="uk-width-medium-1-4">
<div class="uk-panel uk-panel-box uk-panel-box-primary">
<div class="uk-badge uk-panel-badge uk-badge-notification"><a href="#diverged-meaning" data-uk-offcanvas class="uk-text-contrast"><i class="uk-icon-info"></i></a></div>
<h3 class="uk-panel-title"><i class="uk-icon-code-fork"></i> <?php echo JText::_('COM_COMPONENTBUILDER_DIVERGED'); ?></h3>
<div id="bulk-notice-diverged" class="uk-alert uk-alert-warning" style="display: none;"><?php echo JText::_('COM_COMPONENTBUILDER_THERE_ARE_NO_DIVERGED_SNIPPETS_AT_THIS_TIME'); ?></div>
<button id="bulk-button-diverged" class="getreaction uk-button uk-button-primary uk-width-1-1" data-status="diverged" data-type="all" title="<?php echo JText::_('COM_COMPONENTBUILDER_BULK_UPDATE_ALL_DIVERGED_SNIPPETS'); ?>">
@ -170,6 +173,7 @@ JHtml::_('behavior.keepalive');
</div>
<div class="uk-width-medium-1-4">
<div class="uk-panel uk-panel-box uk-panel-box-primary">
<div class="uk-badge uk-panel-badge uk-badge-notification"><a href="#ahead-meaning" data-uk-offcanvas class="uk-text-contrast"><i class="uk-icon-info"></i></a></div>
<h3 class="uk-panel-title"><i class="uk-icon-joomla"></i> <?php echo JText::_('COM_COMPONENTBUILDER_AHEAD'); ?></h3>
<div id="bulk-notice-ahead" class="uk-alert uk-alert-warning" style="display: none;"><?php echo JText::_('COM_COMPONENTBUILDER_THERE_ARE_NO_AHEAD_SNIPPETS_AT_THIS_TIME'); ?></div>
<button id="bulk-button-ahead" class="getreaction uk-button uk-button-primary uk-width-1-1" data-status="ahead" data-type="all" title="<?php echo JText::_('COM_COMPONENTBUILDER_BULK_UPDATE_ALL_AHEAD_SNIPPETS'); ?>">
@ -190,6 +194,41 @@ JHtml::_('behavior.keepalive');
<div id="snippets-grid" class="bulk-updater-toggler uk-grid uk-grid-preserve uk-grid-width-small-1-1 uk-grid-width-medium-1-3 uk-grid-width-large-1-4" data-uk-grid="{gutter:10, controls: '.snippets-menu'}" data-uk-check-display>
</div>
</div>
<div id="new-meaning" class="uk-offcanvas">
<div class="uk-offcanvas-bar"><br /><br /><br /><div class="uk-panel">
<h3><?php echo JText::_('COM_COMPONENTBUILDER_NEW'); ?></h3>
<p><?php echo JText::_('COM_COMPONENTBUILDER_NEW_MEANS_THAT_WE_COULD_NOT_FIND_A_LOCAL_SNIPPET_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_AND_SO_HAVE_MARKED_THIS_SNIPPET_AS_NEW'); ?></p>
<p><?php echo JText::_('COM_COMPONENTBUILDER_THE_SEARCH_FOR_THE_SNIPPETS_ARE_CASE_SENSITIVE_SO_IF_YOU_CHANGED_THE_LOCAL_BNAMESB_OF_EITHER_OR_THE_BSNIPPET_LIBRARY_OR_SNIPPET_TYPESB_IN_ANY_SMALL_WAY_THE_SYSTEM_WILL_NOT_BE_ABLE_TO_CONNECT_YOUR_LOCAL_SNIPPETS_WITH_THOSE_IN_THE_COMMUNITY_REPOSITORY_SO_WE_STRONGLY_ADVICE_TO_BKEEP_TO_THE_COMMUNITY_NAMINGB_TO_AVOID_MISMATCHING_THAT_WILL_IN_TURN_CAUSE_DUPLICATION_SO_IF_YOU_CHANGED_ANY_NAMES_JUST_CHANGE_THEM_BACK_AND_ALL_WILL_AGAIN_WORK_AS_EXPECTED'); ?></p>
</div></div>
</div>
<div id="equal-meaning" class="uk-offcanvas">
<div class="uk-offcanvas-bar"><br /><br /><br /><div class="uk-panel">
<h3><?php echo JText::_('COM_COMPONENTBUILDER_EQUAL'); ?></h3>
<p><?php echo JText::_('COM_COMPONENTBUILDER_EQUAL_MEANS_THAT_THE_COMMUNITY_SNIPPET_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_AND_YOUR_LOCAL_SNIPPET_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_HAS_THE_SAME_BCREATIONB_AND_BMODIFIED_DATEB'); ?></p>
<p><?php echo JText::_('COM_COMPONENTBUILDER_WE_DID_NOT_CHECK_THE_SNIPPET_IT_SELF_TO_SEE_IF_IT_CHANGED_WE_ONLY_WORK_ON_DATES'); ?></p>
</div></div>
</div>
<div id="ahead-meaning" class="uk-offcanvas">
<div class="uk-offcanvas-bar"><br /><br /><br /><div class="uk-panel">
<h3><?php echo JText::_('COM_COMPONENTBUILDER_AHEAD'); ?></h3>
<p><?php echo JText::_('COM_COMPONENTBUILDER_AHEAD_MEANS_YOUR_BLOCAL_SNIPPETB_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_HAS_A_BNEWER_MODIFIED_DATEB_THEN_THE_COMMUNITY_SNIPPET_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE'); ?></p>
<p><?php echo JText::_('COM_COMPONENTBUILDER_WE_DID_NOT_CHECK_THE_SNIPPET_IT_SELF_TO_SEE_IF_IT_CHANGED_WE_ONLY_WORK_ON_DATES'); ?></p>
</div></div>
</div>
<div id="behind-meaning" class="uk-offcanvas">
<div class="uk-offcanvas-bar"><br /><br /><br /><div class="uk-panel">
<h3><?php echo JText::_('COM_COMPONENTBUILDER_BEHIND'); ?></h3>
<p><?php echo JText::_('COM_COMPONENTBUILDER_BEHIND_MEANS_YOUR_BLOCAL_SNIPPETB_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_HAS_A_BOLDER_MODIFIED_DATEB_THEN_THE_COMMUNITY_SNIPPET_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE'); ?></p>
<p><?php echo JText::_('COM_COMPONENTBUILDER_WE_DID_NOT_CHECK_THE_SNIPPET_IT_SELF_TO_SEE_IF_IT_CHANGED_WE_ONLY_WORK_ON_DATES'); ?></p>
</div></div>
</div>
<div id="diverged-meaning" class="uk-offcanvas">
<div class="uk-offcanvas-bar"><br /><br /><br /><div class="uk-panel">
<h3><?php echo JText::_('COM_COMPONENTBUILDER_DIVERGED'); ?></h3>
<p><?php echo JText::_('COM_COMPONENTBUILDER_DIVERGED_MEANS_YOUR_BLOCAL_SNIPPETB_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_HAS_A_BDIVERGEDB_FROM_THE_COMMUNITY_SNIPPET_WITH_THE_SAME_NAME_LIBRARY_AND_TYPE_IN_THAT_IT_DOES_NOT_HAVE_THE_SAME_BCREATIONB_OR_BMODIFIED_DATEB'); ?></p>
<p><?php echo JText::_('COM_COMPONENTBUILDER_WE_DID_NOT_CHECK_THE_SNIPPET_IT_SELF_TO_SEE_IF_IT_CHANGED_WE_ONLY_WORK_ON_DATES'); ?></p>
</div></div>
</div>
<script type="text/javascript">
// nice little dot trick :)

View File

@ -145,6 +145,7 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
// Add the JavaScript for JStore
$this->document->addScript(JURI::root() .'media/com_componentbuilder/js/jquery.json.min.js');
$this->document->addScript(JURI::root() .'media/com_componentbuilder/js/jstorage.min.js');
$this->document->addScript(JURI::root() .'media/com_componentbuilder/js/strtotime.js');
// check if we should use browser storage
$setBrowserStorage = $this->params->get('set_browser_storage', null);
if ($setBrowserStorage)
@ -174,6 +175,9 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
// set to use no storage
$expire = 30000;
}
// set snippet path
$this->document->addScriptDeclaration("var snippetPath = '". ComponentbuilderHelper::$snippetPath ."';");
$this->document->addScriptDeclaration("var snippetsPath = '". ComponentbuilderHelper::$snippetsPath ."';");
// token
$this->document->addScriptDeclaration("var token = '". JSession::getFormToken() ."';");
// add some global items buckets for bulk updating
@ -185,6 +189,7 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
// set an error message if needed
$this->document->addScriptDeclaration("var returnError = '<div class=\"uk-alert uk-alert-warning\"><h1>".JText::_('COM_COMPONENTBUILDER_AN_ERROR_HAS_OCCURRED')."!</h1><p>".JText::_('COM_COMPONENTBUILDER_PLEASE_TRY_AGAIN_LATER').".</p></div>';");
// need to add some language strings
$this->document->addScriptDeclaration("var lang_Community_Snippets = '".JText::_('COM_COMPONENTBUILDER_JCB_COMMUNITY_SNIPPETS')."';");
$this->document->addScriptDeclaration("var lang_Snippets = '".JText::_('COM_COMPONENTBUILDER_SNIPPETS')."';");
$this->document->addScriptDeclaration("var lang_Snippet = '".JText::_('COM_COMPONENTBUILDER_SNIPPET')."';");
$this->document->addScriptDeclaration("var lang_Snippet_Tooltip = '".JText::_('COM_COMPONENTBUILDER_VIEW_SNIPPET_OF_COMMUNITY_VERSION')."';");
@ -201,6 +206,7 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
$this->document->addScriptDeclaration("var lang_View_Blame_Tooltip = '".JText::_('COM_COMPONENTBUILDER_VIEW_WHO_CONTRIBUTED_TO_THIS_SNIPPET')."';");
$this->document->addScriptDeclaration("var lang_URL_Tooltip = '".JText::_('COM_COMPONENTBUILDER_VIEW_SNIPPET_REFERENCE_URL')."';");
$this->document->addScriptDeclaration("var lang_Update_Error_Tooltip = '".JText::_('COM_COMPONENTBUILDER_SNIPPET_COULD_NOT_BE_UPDATEDSAVED')."';");
$this->document->addScriptDeclaration("var lang_Updates_Error_Tooltip = '".JText::_('COM_COMPONENTBUILDER_SNIPPETS_COULD_NOT_BE_UPDATEDSAVED')."';");
$this->document->addScriptDeclaration("var lang_Contributor_URL_Tooltip = '".JText::_('COM_COMPONENTBUILDER_LINK_TO_THE_CONTRIBUTOR')."';");
$this->document->addScriptDeclaration("var lang_Contributor_Modal_Tooltip = '".JText::_('COM_COMPONENTBUILDER_VIEW_THE_CONTRIBUTOR_DETAILS')."';");
$this->document->addScriptDeclaration("var lang_JCB_Community = '".JText::_('COM_COMPONENTBUILDER_JCB_COMMUNITY')."';");
@ -250,7 +256,7 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
$this->document->addScriptDeclaration("
// start the moment the document is ready
jQuery(document).ready(function () {
getSnippets('https://api.github.com/repos/vdm-io/Joomla-Component-Builder-Snippets/git/trees/master');
getSnippets(snippetsPath);
});
jQuery(document).ready(function(){
jQuery('body').on('click','.getreaction',function(){
@ -282,30 +288,23 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
if (0 === jQuery.active) {
setTimeout( function() {
//do something special
jQuery('#snippets-github').html('<h1>'+lang_Snippets+'</h1>');
jQuery('#snippets-github').html('<h1>'+lang_Community_Snippets+'</h1>');
jQuery('#snippets-display').show();
jQuery('#snippets-grid').trigger('display.uk.check');
}, 1000);
}
});
// get unix time stamp
function unixTimeStamp(_theDate) {
// check if JCB already has this snippet
var aDate = new Date(_theDate);
return Math.round(aDate.getTime()/1000);
}
// set the snippet status
function getSnippetStatus(snippet, key) {
// check if JCB already has this snippet
if(local_snippets.hasOwnProperty(key)){
// first get local time stamp
var local_created = unixTimeStamp(local_snippets[key].created);
var local_modified = unixTimeStamp(local_snippets[key].modified);
var local_created = strtotime(local_snippets[key].created);
var local_modified = strtotime(local_snippets[key].modified);
// now get github time stamps
var created = unixTimeStamp(snippet.created);
var modified = unixTimeStamp(snippet.modified);
var created = strtotime(snippet.created);
var modified = strtotime(snippet.modified);
// work out the status
if (local_created == created) {
if (local_modified == modified) {
@ -326,7 +325,7 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
var _paths = jQuery.jStorage.get('JCB-Snippets-Paths', null);
if (_paths) {
setSnippets(_paths);
jQuery('#snippets-github').html('<h1>'+lang_Snippets+'</h1>');
jQuery('#snippets-github').html('<h1>'+lang_Community_Snippets+'</h1>');
jQuery('#snippets-display').show();
} else {
jQuery.get(path)
@ -349,7 +348,7 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
setSnippet(_snippet, value.path);
jQuery('#snippets-grid').trigger('display.uk.check');
} else {
jQuery.get('https://raw.githubusercontent.com/vdm-io/Joomla-Component-Builder-Snippets/master/'+value.path)
jQuery.get(snippetPath+value.path)
.success(function(snippet) {
// convert the string to json.object
snippet = jQuery.parseJSON(snippet);
@ -377,7 +376,7 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
// build the snippet display
var html = '<div id=\"'+keyID+'-panel\" class=\"uk-panel\" data-uk-filter=\"'+status+'\" data-snippet-libraries=\"'+snippet.library+'\" data-snippet-types=\"'+snippet.type+'\" data-snippet-name=\"'+snippet.name+'\">';
html += '<div class=\"uk-panel uk-panel-box uk-width-1-1\">';
html += '<div id=\"'+keyID+'-badge\" class=\"uk-panel-badge uk-badge\">'+status+'</div><br />';
html += '<div class=\"uk-panel-badge uk-badge\" ><a id=\"'+keyID+'-badge\" href=\"#'+status+'-meaning\" data-uk-offcanvas class=\"uk-text-uppercase uk-text-contrast\"><i class=\"uk-icon-info\"></i> '+status+'</a></div><br />';
html += '<h3 class=\"uk-panel-title\">' + snippet.library+ ' - (' + snippet.type + ') ' + snippet.name + '</h3>';
html += snippet.heading + '<hr />';
// set the data buttons
@ -405,18 +404,17 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
function setRefButtons(snippet, key, status, keyID) {
var html = '<div><a class=\"uk-button uk-button-mini uk-button-success uk-margin-small-bottom uk-width-1-1\" href=\"'+snippet.url+'\" target=\"_blank\" title=\"'+lang_URL_Tooltip+'\"><i class=\"uk-icon-external-link\"></i> ' + snippet.name + '</a></div>';
// set the update and review button
html += '<div class=\"uk-button-group uk-width-1-1 uk-margin-small-bottom\">';
html += '<a class=\"uk-button uk-button-small uk-button-primary uk-width-1-2\" href=\"https://github.com/vdm-io/Joomla-Component-Builder-Snippets/blame/master/'+key+'\" target=\"_blank\" title=\"'+lang_View_Blame_Tooltip+'\"><i class=\"uk-icon-external-link\"></i> '+lang_View_Blame+'</a>';
// set the update button
html += '<div>';
if ('equal' !== status) {
if ('new' === status) {
var tooltip = lang_Get_Snippet_New_Tooltip;
} else {
var tooltip = lang_Get_Snippet_Tooltip;
}
html += '<button id=\"'+keyID+'-getbutton\" class=\"uk-button uk-button-small uk-button-primary uk-width-1-2 getreaction\" data-status=\"'+status+'\" data-path=\"'+key+'\" data-type=\"get\" title=\"'+tooltip+'\"><i class=\"uk-icon-cloud-download\"></i> '+lang_Get_Snippet+'</button>';
html += '<button id=\"'+keyID+'-getbutton\" class=\"uk-button uk-button-small uk-button-primary uk-width-1-1 uk-margin-small-bottom getreaction\" data-status=\"'+status+'\" data-path=\"'+key+'\" data-type=\"get\" title=\"'+tooltip+'\"><i class=\"uk-icon-cloud-download\"></i> '+lang_Get_Snippet+'</button>';
} else {
html += '<button class=\"uk-button uk-button-small uk-width-1-2\" type=\"button\" disabled title=\"'+lang_Get_Snippet_Dont_Tooltip+'\"><i class=\"uk-icon-check-square-o\"></i> '+lang_Dont_Get_Snippet+'</button>';
html += '<button class=\"uk-button uk-button-small uk-width-1-1 uk-margin-small-bottom\" type=\"button\" disabled title=\"'+lang_Get_Snippet_Dont_Tooltip+'\"><i class=\"uk-icon-check-square-o\"></i> '+lang_Dont_Get_Snippet+'</button>';
}
html += '</div>';
// return data buttons
@ -441,8 +439,9 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
var contributor_url = 'https://github.com/vdm-io/Joomla-Component-Builder-Snippets';
}
var html = '<div class=\"uk-button-group uk-width-1-1\">';
html += '<button class=\"uk-button uk-width-1-5 uk-button-mini getreaction\" data-type=\"contributor\" data-path=\"'+key+'\" title=\"'+lang_Contributor_Modal_Tooltip+'\"><i class=\"uk-icon-user\"></i></button>';
html += '<a class=\"uk-button uk-width-4-5 uk-button-mini\" href=\"'+contributor_url+'\" target=\"_blank\" title=\"'+lang_Contributor_URL_Tooltip+'\"><i class=\"uk-icon-external-link\"></i> ' + contributor_name + '</a>';
html += '<button class=\"uk-button uk-button-primary uk-width-1-10 uk-button-mini getreaction\" data-type=\"contributor\" data-path=\"'+key+'\" title=\"'+lang_Contributor_Modal_Tooltip+'\"><i class=\"uk-icon-user\"></i></button>';
html += '<a class=\"uk-button uk-button-primary uk-width-5-10 uk-button-mini\" href=\"'+contributor_url+'\" target=\"_blank\" title=\"'+lang_Contributor_URL_Tooltip+'\"><i class=\"uk-icon-external-link\"></i> ' + contributor_name + '</a>';
html += '<a class=\"uk-button uk-button-primary uk-width-4-10 uk-button-mini\" href=\"https://github.com/vdm-io/Joomla-Component-Builder-Snippets/blame/master/'+key+'\" target=\"_blank\" title=\"'+lang_View_Blame_Tooltip+'\"><i class=\"uk-icon-external-link\"></i> '+lang_View_Blame+'</a>';
html += '</div>';
// return contributor buttons
return html;
@ -484,14 +483,55 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
// do a bulk update
function bulkSnippetGithub(status) {
UIkit.notify('<b>The Bulk Tool Does not Work Yet!</b><br />We should have the bulk tools ready soon!<br /><br />Check out the console!', {status:'warning'});
// if all then trigger those with values
if ('all' === status) {
console.log(bulkItems);
} else {
console.log(bulkItems[status]);
bulkSnippetGithub('behind');
bulkSnippetGithub('new');
bulkSnippetGithub('ahead');
bulkSnippetGithub('diverged');
} else if (bulkItems[status].length > 0) {
jQuery.each(bulkItems[status], function(i, key){
setTimeout(function(){
doBulkUpdate_server(key, status).done(function(result) {
if (result.message) {
// only show errors
if ('error' === result.status || 'warning' === result.status) {
UIkit.notify(result.message, {status: result.status});
}
// update local items
if ('success' === result.status) {
// get key ID
var keyID = getKeyID(key);
// update snippet if we can
updateSnippetDisplay(keyID, 'equal');
}
} else {
UIkit.notify(lang_Update_Error_Tooltip, {status:'danger'});
}
});
}, 200);
});
// reset array
bulkItems[status].length = 0;
// update the buttons (since we only do the bulk update once)
checkBulkSnippetGithub();
}
}
function doBulkUpdate_server(path, status) {
var getUrl = \"index.php?option=com_componentbuilder&task=ajax.setSnippetGithub&format=json\";
if (token.length > 0 && path.length > 0 && status.length > 0) {
var request = 'token='+token+'&path='+path+'&status='+status;
}
return jQuery.ajax({
type: 'POST',
url: getUrl,
dataType: 'jsonp',
data: request,
jsonp: 'callback'
});
}
// set the snippet from gitHub
function setSnippetGithub(key, status) {
var message = getConfirmUpdate(status);
@ -530,7 +570,8 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
// update the snippet display
function updateSnippetDisplay(keyID, status) {
// update badge
jQuery('#'+keyID+'-badge').html(status);
jQuery('#'+keyID+'-badge').html('<i class=\"uk-icon-info\"></i> ' +status);
jQuery('#'+keyID+'-badge').attr('href' , '#'+status+'-meaning');
// update button
if ('equal' === status) {
// update notice
@ -630,6 +671,26 @@ class ComponentbuilderViewGet_snippets extends JViewLegacy
// JToolBarHelper::custom('get_snippets.back', 'undo-2', '', 'COM_COMPONENTBUILDER_BACK', false);
// add cpanel button
JToolBarHelper::custom('get_snippets.dashboard', 'grid-2', '', 'COM_COMPONENTBUILDER_DASH', false);
if ($this->canDo->get('get_snippets.custom_admin_views'))
{
// add Custom Admin Views button.
JToolBarHelper::custom('get_snippets.openCustomAdminViews', 'screen', '', 'COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS', false);
}
if ($this->canDo->get('get_snippets.site_views'))
{
// add Site Views button.
JToolBarHelper::custom('get_snippets.openSiteViews', 'palette', '', 'COM_COMPONENTBUILDER_SITE_VIEWS', false);
}
if ($this->canDo->get('get_snippets.templates'))
{
// add Templates button.
JToolBarHelper::custom('get_snippets.openTemplates', 'brush', '', 'COM_COMPONENTBUILDER_TEMPLATES', false);
}
if ($this->canDo->get('get_snippets.layouts'))
{
// add Layouts button.
JToolBarHelper::custom('get_snippets.openLayouts', 'brush', '', 'COM_COMPONENTBUILDER_LAYOUTS', false);
}
if ($this->canDo->get('get_snippets.snippets'))
{
// add Snippets button.

View File

@ -148,7 +148,12 @@ class ComponentbuilderViewLayouts extends JViewLegacy
{
JToolBarHelper::custom('layouts.exportData', 'download', '', 'COM_COMPONENTBUILDER_EXPORT_DATA', true);
}
}
}
if ($this->user->authorise('layout.get_snippets', 'com_componentbuilder'))
{
// add Get Snippets button.
JToolBarHelper::custom('layouts.getSnippets', 'search', '', 'COM_COMPONENTBUILDER_GET_SNIPPETS', false);
}
if ($this->canDo->get('core.import') && $this->canDo->get('layout.import'))
{

View File

@ -116,18 +116,6 @@ $componentParams = JComponentHelper::getParams('com_componentbuilder');
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php if ($this->canDo->get('joomla_component.access')) : ?>
<?php echo JHtml::_('bootstrap.addTab', 'site_viewTab', 'linked_components', JText::_('COM_COMPONENTBUILDER_SITE_VIEW_LINKED_COMPONENTS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
</div>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<?php echo JLayoutHelper::render('site_view.linked_components_fullwidth', $this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.delete') || $this->canDo->get('core.edit.created_by') || $this->canDo->get('core.edit.state') || $this->canDo->get('core.edit.created')) : ?>
<?php echo JHtml::_('bootstrap.addTab', 'site_viewTab', 'publishing', JText::_('COM_COMPONENTBUILDER_SITE_VIEW_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">

View File

@ -61,10 +61,7 @@ class ComponentbuilderViewSite_view extends JViewLegacy
{
// return to the list view that refered to this item
$this->referral = '&ref='.(string)$this->ref;
}
// Get Linked view data
$this->vyplinked_components = $this->get('Vyplinked_components');
}
// Set the toolbar
$this->addToolBar();
@ -196,17 +193,7 @@ class ComponentbuilderViewSite_view extends JViewLegacy
$document->setTitle(JText::_($isNew ? 'COM_COMPONENTBUILDER_SITE_VIEW_NEW' : 'COM_COMPONENTBUILDER_SITE_VIEW_EDIT'));
$document->addStyleSheet(JURI::root() . "administrator/components/com_componentbuilder/assets/css/site_view.css");
// Add Ajax Token
$document->addScriptDeclaration("var token = '".JSession::getFormToken()."';");
// Add the CSS for Footable
$document->addStyleSheet('https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css');
$document->addStyleSheet(JURI::root() .'media/com_componentbuilder/footable/css/footable.standalone.min.css');
// Add the JavaScript for Footable (adding all funtions)
$document->addScript(JURI::root() .'media/com_componentbuilder/footable/js/footable.min.js');
$footable = "jQuery(document).ready(function() { jQuery(function () { jQuery('.footable').footable();});});";
$document->addScriptDeclaration($footable);
$document->addScriptDeclaration("var token = '".JSession::getFormToken()."';");
$document->addScript(JURI::root() . $this->script);
$document->addScript(JURI::root() . "administrator/components/com_componentbuilder/views/site_view/submitbutton.js");
JText::script('view not acceptable. Error');

View File

@ -148,7 +148,12 @@ class ComponentbuilderViewSite_views extends JViewLegacy
{
JToolBarHelper::custom('site_views.exportData', 'download', '', 'COM_COMPONENTBUILDER_EXPORT_DATA', true);
}
}
}
if ($this->user->authorise('site_view.get_snippets', 'com_componentbuilder'))
{
// add Get Snippets button.
JToolBarHelper::custom('site_views.getSnippets', 'search', '', 'COM_COMPONENTBUILDER_GET_SNIPPETS', false);
}
if ($this->canDo->get('core.import') && $this->canDo->get('site_view.import'))
{

View File

@ -52,6 +52,22 @@ $componentParams = JComponentHelper::getParams('com_componentbuilder');
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php echo JHtml::_('bootstrap.addTab', 'snippetTab', 'contributor', JText::_('COM_COMPONENTBUILDER_SNIPPET_CONTRIBUTOR', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('snippet.contributor_left', $this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('snippet.contributor_right', $this); ?>
</div>
</div>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<?php echo JLayoutHelper::render('snippet.contributor_fullwidth', $this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php if ($this->canDo->get('core.delete') || $this->canDo->get('core.edit.created_by') || $this->canDo->get('core.edit.state') || $this->canDo->get('core.edit.created')) : ?>
<?php echo JHtml::_('bootstrap.addTab', 'snippetTab', 'publishing', JText::_('COM_COMPONENTBUILDER_SNIPPET_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">
@ -93,4 +109,19 @@ $componentParams = JComponentHelper::getParams('com_componentbuilder');
</div>
</div>
</form>
</div>
</div>
<script type="text/javascript">
<?php
// setup the return url
$uri = (string) JUri::getInstance();
$return = urlencode(base64_encode($uri));
$optionsURL = 'index.php?option=com_config&view=component&component=com_componentbuilder&return='.$return;
?>
jQuery(function() {
jQuery('#contributor-global-settings').html("<a class='btn btn-small options-link' href='<?php echo $optionsURL;?>'><span class='icon-options'></span><?php echo JText::_('COM_COMPONENTBUILDER_OPTIONS'); ?></a>");
});
</script>

View File

@ -148,7 +148,12 @@ class ComponentbuilderViewTemplates extends JViewLegacy
{
JToolBarHelper::custom('templates.exportData', 'download', '', 'COM_COMPONENTBUILDER_EXPORT_DATA', true);
}
}
}
if ($this->user->authorise('template.get_snippets', 'com_componentbuilder'))
{
// add Get Snippets button.
JToolBarHelper::custom('templates.getSnippets', 'search', '', 'COM_COMPONENTBUILDER_GET_SNIPPETS', false);
}
if ($this->canDo->get('core.import') && $this->canDo->get('template.import'))
{

View File

@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.2" method="upgrade">
<name>COM_COMPONENTBUILDER</name>
<creationDate>18th November, 2017</creationDate>
<creationDate>20th November, 2017</creationDate>
<author>Llewellyn van der Merwe</author>
<authorEmail>joomla@vdm.io</authorEmail>
<authorUrl>http://vdm.bz/component-builder</authorUrl>
<copyright>Copyright (C) 2015. All Rights Reserved</copyright>
<license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
<version>2.6.4</version>
<version>2.6.5</version>
<description><![CDATA[
<h1>Component Builder (v.2.6.4)</h1>
<h1>Component Builder (v.2.6.5)</h1>
<div style="clear: both;"></div>
<p>The Component Builder for [Joomla](https://extensions.joomla.org/extension/component-builder/) is highly advanced tool that is truly able to build extremely complex components in a fraction of the time.

View File

@ -228,7 +228,24 @@
<version>2.6.4</version>
<infourl title="Component Builder!">http://vdm.bz/component-builder</infourl>
<downloads>
<downloadurl type="full" format="zip">https://github.com/vdm-io/Joomla-Component-Builder/releases/download/v2.6.4/JCB_v2.6.4.zip</downloadurl>
<downloadurl type="full" format="zip">https://github.com/vdm-io/Joomla-Component-Builder/releases/download/v2.6.5/JCB_v2.6.5.zip</downloadurl>
</downloads>
<tags>
<tag>stable</tag>
</tags>
<maintainer>Llewellyn van der Merwe</maintainer>
<maintainerurl>http://vdm.bz/component-builder</maintainerurl>
<targetplatform name="joomla" version="3.*"/>
</update>
<update>
<name>Component Builder</name>
<description>Builds Complex Joomla Components</description>
<element>com_componentbuilder</element>
<type>component</type>
<version>2.6.5</version>
<infourl title="Component Builder!">http://vdm.bz/component-builder</infourl>
<downloads>
<downloadurl type="full" format="zip">https://github.com/vdm-io/Joomla-Component-Builder/releases/download/v2.6.5/JCB_v2.6.5.zip</downloadurl>
</downloads>
<tags>
<tag>stable</tag>

267
media/js/strtotime.js Normal file
View File

@ -0,0 +1,267 @@
function strtotime (text, now) {
// discuss at: http://locutus.io/php/strtotime/
// original by: Caio Ariede (http://caioariede.com)
// improved by: Kevin van Zonneveld (http://kvz.io)
// improved by: Caio Ariede (http://caioariede.com)
// improved by: A. Matías Quezada (http://amatiasq.com)
// improved by: preuter
// improved by: Brett Zamir (http://brett-zamir.me)
// improved by: Mirko Faber
// input by: David
// bugfixed by: Wagner B. Soares
// bugfixed by: Artur Tchernychev
// bugfixed by: Stephan Bösch-Plepelits (http://github.com/plepe)
// note 1: Examples all have a fixed timestamp to prevent
// note 1: tests to fail because of variable time(zones)
// example 1: strtotime('+1 day', 1129633200)
// returns 1: 1129719600
// example 2: strtotime('+1 week 2 days 4 hours 2 seconds', 1129633200)
// returns 2: 1130425202
// example 3: strtotime('last month', 1129633200)
// returns 3: 1127041200
// example 4: strtotime('2009-05-04 08:30:00 GMT')
// returns 4: 1241425800
// example 5: strtotime('2009-05-04 08:30:00+00')
// returns 5: 1241425800
// example 6: strtotime('2009-05-04 08:30:00+02:00')
// returns 6: 1241418600
// example 7: strtotime('2009-05-04T08:30:00Z')
// returns 7: 1241425800
var parsed
var match
var today
var year
var date
var days
var ranges
var len
var times
var regex
var i
var fail = false
if (!text) {
return fail
}
// Unecessary spaces
text = text.replace(/^\s+|\s+$/g, '')
.replace(/\s{2,}/g, ' ')
.replace(/[\t\r\n]/g, '')
.toLowerCase()
// in contrast to php, js Date.parse function interprets:
// dates given as yyyy-mm-dd as in timezone: UTC,
// dates with "." or "-" as MDY instead of DMY
// dates with two-digit years differently
// etc...etc...
// ...therefore we manually parse lots of common date formats
var pattern = new RegExp([
'^(\\d{1,4})',
'([\\-\\.\\/:])',
'(\\d{1,2})',
'([\\-\\.\\/:])',
'(\\d{1,4})',
'(?:\\s(\\d{1,2}):(\\d{2})?:?(\\d{2})?)?',
'(?:\\s([A-Z]+)?)?$'
].join(''))
match = text.match(pattern)
if (match && match[2] === match[4]) {
if (match[1] > 1901) {
switch (match[2]) {
case '-':
// YYYY-M-D
if (match[3] > 12 || match[5] > 31) {
return fail
}
return new Date(match[1], parseInt(match[3], 10) - 1, match[5],
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000
case '.':
// YYYY.M.D is not parsed by strtotime()
return fail
case '/':
// YYYY/M/D
if (match[3] > 12 || match[5] > 31) {
return fail
}
return new Date(match[1], parseInt(match[3], 10) - 1, match[5],
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000
}
} else if (match[5] > 1901) {
switch (match[2]) {
case '-':
// D-M-YYYY
if (match[3] > 12 || match[1] > 31) {
return fail
}
return new Date(match[5], parseInt(match[3], 10) - 1, match[1],
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000
case '.':
// D.M.YYYY
if (match[3] > 12 || match[1] > 31) {
return fail
}
return new Date(match[5], parseInt(match[3], 10) - 1, match[1],
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000
case '/':
// M/D/YYYY
if (match[1] > 12 || match[3] > 31) {
return fail
}
return new Date(match[5], parseInt(match[1], 10) - 1, match[3],
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000
}
} else {
switch (match[2]) {
case '-':
// YY-M-D
if (match[3] > 12 || match[5] > 31 || (match[1] < 70 && match[1] > 38)) {
return fail
}
year = match[1] >= 0 && match[1] <= 38 ? +match[1] + 2000 : match[1]
return new Date(year, parseInt(match[3], 10) - 1, match[5],
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000
case '.':
// D.M.YY or H.MM.SS
if (match[5] >= 70) {
// D.M.YY
if (match[3] > 12 || match[1] > 31) {
return fail
}
return new Date(match[5], parseInt(match[3], 10) - 1, match[1],
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000
}
if (match[5] < 60 && !match[6]) {
// H.MM.SS
if (match[1] > 23 || match[3] > 59) {
return fail
}
today = new Date()
return new Date(today.getFullYear(), today.getMonth(), today.getDate(),
match[1] || 0, match[3] || 0, match[5] || 0, match[9] || 0) / 1000
}
// invalid format, cannot be parsed
return fail
case '/':
// M/D/YY
if (match[1] > 12 || match[3] > 31 || (match[5] < 70 && match[5] > 38)) {
return fail
}
year = match[5] >= 0 && match[5] <= 38 ? +match[5] + 2000 : match[5]
return new Date(year, parseInt(match[1], 10) - 1, match[3],
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000
case ':':
// HH:MM:SS
if (match[1] > 23 || match[3] > 59 || match[5] > 59) {
return fail
}
today = new Date()
return new Date(today.getFullYear(), today.getMonth(), today.getDate(),
match[1] || 0, match[3] || 0, match[5] || 0) / 1000
}
}
}
// other formats and "now" should be parsed by Date.parse()
if (text === 'now') {
return now === null || isNaN(now)
? new Date().getTime() / 1000 | 0
: now | 0
}
if (!isNaN(parsed = Date.parse(text))) {
return parsed / 1000 | 0
}
// Browsers !== Chrome have problems parsing ISO 8601 date strings, as they do
// not accept lower case characters, space, or shortened time zones.
// Therefore, fix these problems and try again.
// Examples:
// 2015-04-15 20:33:59+02
// 2015-04-15 20:33:59z
// 2015-04-15t20:33:59+02:00
pattern = new RegExp([
'^([0-9]{4}-[0-9]{2}-[0-9]{2})',
'[ t]',
'([0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?)',
'([\\+-][0-9]{2}(:[0-9]{2})?|z)'
].join(''))
match = text.match(pattern)
if (match) {
// @todo: time zone information
if (match[4] === 'z') {
match[4] = 'Z'
} else if (match[4].match(/^([+-][0-9]{2})$/)) {
match[4] = match[4] + ':00'
}
if (!isNaN(parsed = Date.parse(match[1] + 'T' + match[2] + match[4]))) {
return parsed / 1000 | 0
}
}
date = now ? new Date(now * 1000) : new Date()
days = {
'sun': 0,
'mon': 1,
'tue': 2,
'wed': 3,
'thu': 4,
'fri': 5,
'sat': 6
}
ranges = {
'yea': 'FullYear',
'mon': 'Month',
'day': 'Date',
'hou': 'Hours',
'min': 'Minutes',
'sec': 'Seconds'
}
function lastNext (type, range, modifier) {
var diff
var day = days[range]
if (typeof day !== 'undefined') {
diff = day - date.getDay()
if (diff === 0) {
diff = 7 * modifier
} else if (diff > 0 && type === 'last') {
diff -= 7
} else if (diff < 0 && type === 'next') {
diff += 7
}
date.setDate(date.getDate() + diff)
}
}
function process (val) {
// @todo: Reconcile this with regex using \s, taking into account
// browser issues with split and regexes
var splt = val.split(' ')
var type = splt[0]
var range = splt[1].substring(0, 3)
var typeIsNumber = /\d+/.test(type)
var ago = splt[2] === 'ago'
var num = (type === 'last' ? -1 : 1) * (ago ? -1 : 1)
if (typeIsNumber) {
num *= parseInt(type, 10)
}
if (ranges.hasOwnProperty(range) && !splt[1].match(/^mon(day|\.)?$/i)) {
return date['set' + ranges[range]](date['get' + ranges[range]]() + num)
}
if (range === 'wee') {
return date.setDate(date.getDate() + (num * 7))
}
if (type === 'next' || type === 'last') {
lastNext(type, range, num)
} else if (!typeIsNumber) {
return false
}
return true
}
times = '(years?|months?|weeks?|days?|hours?|minutes?|min|seconds?|sec' +
'|sunday|sun\\.?|monday|mon\\.?|tuesday|tue\\.?|wednesday|wed\\.?' +
'|thursday|thu\\.?|friday|fri\\.?|saturday|sat\\.?)'
regex = '([+-]?\\d+\\s' + times + '|' + '(last|next)\\s' + times + ')(\\sago)?'
match = text.match(new RegExp(regex, 'gi'))
if (!match) {
return fail
}
for (i = 0, len = match.length; i < len; i++) {
if (!process(match[i])) {
return fail
}
}
return (date.getTime() / 1000)
}

View File

@ -2699,316 +2699,316 @@ class com_componentbuilderInstallerScript
// do any updates needed
if ($type == 'update')
{
// load the helper class
JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php');
// check the version of JCB
$manifest = ComponentbuilderHelper::manifest();
if (isset($manifest->version) && strpos($manifest->version, '.') !== false)
{
// get the version
$version = explode('.', $manifest->version);
// Get a db connection.
$db = JFactory::getDbo();
// target version less then 2.5.2
if (count($version) == 3 && $version[0] <= 2 && $version[1] <= 5 && (($version[1] == 5 && $version[2] <= 1) || ($version[1] < 5)))
// load the helper class
JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php');
// check the version of JCB
$manifest = ComponentbuilderHelper::manifest();
if (isset($manifest->version) && strpos($manifest->version, '.') !== false)
{
// the set values
$this->setFtpValues = array();
// Create a new query object.
$query = $db->getQuery(true);
// get all Joomla Component FTP values
$query->select($db->quoteName(array('id', 'sales_server_ftp', 'update_server_ftp')));
$query->from($db->quoteName('#__componentbuilder_joomla_component'));
// Reset the query using our newly populated query object.
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
// get the version
$this->JCBversion = explode('.', $manifest->version);
// Get a db connection.
$db = JFactory::getDbo();
// target version less then 2.5.2
if (count($this->JCBversion) == 3 && $this->JCBversion[0] <= 2 && $this->JCBversion[1] <= 5 && (($this->JCBversion[1] == 5 && $this->JCBversion[2] <= 1) || ($this->JCBversion[1] < 5)))
{
$rows = $db->loadObjectList();
// Get the basic encryption.
$basickey = ComponentbuilderHelper::getCryptKey('basic');
// Get the encryption object.
$basic = new FOFEncryptAes($basickey, 128);
foreach ($rows as $row)
// the set values
$this->setFtpValues = array();
// Create a new query object.
$query = $db->getQuery(true);
// get all Joomla Component FTP values
$query->select($db->quoteName(array('id', 'sales_server_ftp', 'update_server_ftp')));
$query->from($db->quoteName('#__componentbuilder_joomla_component'));
// Reset the query using our newly populated query object.
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
if (ComponentbuilderHelper::checkString($row->sales_server_ftp) || ComponentbuilderHelper::checkString($row->update_server_ftp))
$rows = $db->loadObjectList();
// Get the basic encryption.
$basickey = ComponentbuilderHelper::getCryptKey('basic');
// Get the encryption object.
$basic = new FOFEncryptAes($basickey, 128);
foreach ($rows as $row)
{
$updatevalue = null;
// update the update_server_ftp
if (ComponentbuilderHelper::checkString($row->update_server_ftp) && !is_numeric($row->update_server_ftp) && $basickey && $row->update_server_ftp === base64_encode(base64_decode($row->update_server_ftp, true)))
if (ComponentbuilderHelper::checkString($row->sales_server_ftp) || ComponentbuilderHelper::checkString($row->update_server_ftp))
{
$updatevalue = rtrim($basic->decryptString($row->update_server_ftp), "\0");
}
elseif (ComponentbuilderHelper::checkString($row->update_server_ftp))
{
$updatevalue = $row->update_server_ftp;
}
$salesvalue = null;
// update the sales_server_ftp
if (ComponentbuilderHelper::checkString($row->sales_server_ftp) && !is_numeric($row->sales_server_ftp) && $basickey && $row->sales_server_ftp === base64_encode(base64_decode($row->sales_server_ftp, true)))
{
$salesvalue = rtrim($basic->decryptString($row->sales_server_ftp), "\0");
}
elseif (ComponentbuilderHelper::checkString($row->sales_server_ftp))
{
$salesvalue = $row->sales_server_ftp;
}
// set update Values
if ($updatevalue)
{
$hash = md5($updatevalue) . '__update_server_ftp';
if (!isset($this->setFtpValues[$hash]))
$updatevalue = null;
// update the update_server_ftp
if (ComponentbuilderHelper::checkString($row->update_server_ftp) && !is_numeric($row->update_server_ftp) && $basickey && $row->update_server_ftp === base64_encode(base64_decode($row->update_server_ftp, true)))
{
$this->setFtpValues[$hash] = array();
$this->setFtpValues[$hash]['ids'] = array();
$this->setFtpValues[$hash]['ftp'] = $updatevalue;
$this->setFtpValues[$hash]['signature'] = $row->update_server_ftp;
$updatevalue = rtrim($basic->decryptString($row->update_server_ftp), "\0");
}
$this->setFtpValues[$hash]['ids'][] = $row->id;
}
// set sales Values
if ($salesvalue)
{
$hash = md5($salesvalue) . '__sales_server_ftp';
if (!isset($this->setFtpValues[$hash]))
elseif (ComponentbuilderHelper::checkString($row->update_server_ftp))
{
$this->setFtpValues[$hash] = array();
$this->setFtpValues[$hash]['ids'] = array();
$this->setFtpValues[$hash]['ftp'] = $salesvalue;
$this->setFtpValues[$hash]['signature'] = $row->sales_server_ftp;
$updatevalue = $row->update_server_ftp;
}
$salesvalue = null;
// update the sales_server_ftp
if (ComponentbuilderHelper::checkString($row->sales_server_ftp) && !is_numeric($row->sales_server_ftp) && $basickey && $row->sales_server_ftp === base64_encode(base64_decode($row->sales_server_ftp, true)))
{
$salesvalue = rtrim($basic->decryptString($row->sales_server_ftp), "\0");
}
elseif (ComponentbuilderHelper::checkString($row->sales_server_ftp))
{
$salesvalue = $row->sales_server_ftp;
}
// set update Values
if ($updatevalue)
{
$hash = md5($updatevalue) . '__update_server_ftp';
if (!isset($this->setFtpValues[$hash]))
{
$this->setFtpValues[$hash] = array();
$this->setFtpValues[$hash]['ids'] = array();
$this->setFtpValues[$hash]['ftp'] = $updatevalue;
$this->setFtpValues[$hash]['signature'] = $row->update_server_ftp;
}
$this->setFtpValues[$hash]['ids'][] = $row->id;
}
// set sales Values
if ($salesvalue)
{
$hash = md5($salesvalue) . '__sales_server_ftp';
if (!isset($this->setFtpValues[$hash]))
{
$this->setFtpValues[$hash] = array();
$this->setFtpValues[$hash]['ids'] = array();
$this->setFtpValues[$hash]['ftp'] = $salesvalue;
$this->setFtpValues[$hash]['signature'] = $row->sales_server_ftp;
}
$this->setFtpValues[$hash]['ids'][] = $row->id;
}
$this->setFtpValues[$hash]['ids'][] = $row->id;
}
}
}
}
}
/*
* Convert repeatable fields in a table
*
* @param string $table The table where the fields are updated
* @param array $select The fields +id that should be updated
* @param array $convert The array options used to convert the fields
* check => the array of values in the repeatable field that must exist
* key => the name of the field
*
* @return void
*/
$convertRepeatable = function($db, $table, $select, $convert)
{
// update the properties in the field types
$query = $db->getQuery(true);
// update all JCB fieldtype properties
$query->select($db->quoteName($select));
$query->from($db->quoteName('#__componentbuilder_' . $table));
// Reset the query using our newly populated query object.
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
/*
* Convert repeatable fields in a table
*
* @param string $table The table where the fields are updated
* @param array $select The fields +id that should be updated
* @param array $convert The array options used to convert the fields
* check => the array of values in the repeatable field that must exist
* key => the name of the field
*
* @return void
*/
$convertRepeatable = function($db, $table, $select, $convert)
{
$rows = $db->loadObjectList();
foreach ($rows as $row)
// update the properties in the field types
$query = $db->getQuery(true);
// update all JCB fieldtype properties
$query->select($db->quoteName($select));
$query->from($db->quoteName('#__componentbuilder_' . $table));
// Reset the query using our newly populated query object.
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
$update = false;
foreach ($convert as $target => $field)
$rows = $db->loadObjectList();
foreach ($rows as $row)
{
// check if it has needed values (it should but just in case)
$continue = false;
if (isset($row->{$target}) && ComponentbuilderHelper::checkJson($row->{$target}))
$update = false;
foreach ($convert as $target => $field)
{
// open the target and convert
$jsonArray = json_decode($row->{$target}, true);
// test if we can do conversion
$continue = true;
if (ComponentbuilderHelper::checkArray($jsonArray))
// check if it has needed values (it should but just in case)
$continue = false;
if (isset($row->{$target}) && ComponentbuilderHelper::checkJson($row->{$target}))
{
foreach($field['check'] as $check)
// open the target and convert
$jsonArray = json_decode($row->{$target}, true);
// test if we can do conversion
$continue = true;
if (ComponentbuilderHelper::checkArray($jsonArray))
{
if (!isset($jsonArray[$check]) || !ComponentbuilderHelper::checkArray($jsonArray[$check]))
foreach($field['check'] as $check)
{
$continue = false;
}
// if found but not an array, then clear out the target
if (isset($jsonArray[$check]) && !ComponentbuilderHelper::checkArray($jsonArray[$check]))
{
$row->{$target} = '';
$update = true;
if (!isset($jsonArray[$check]) || !ComponentbuilderHelper::checkArray($jsonArray[$check]))
{
$continue = false;
}
// if found but not an array, then clear out the target
if (isset($jsonArray[$check]) && !ComponentbuilderHelper::checkArray($jsonArray[$check]))
{
$row->{$target} = '';
$update = true;
}
}
}
else
{
$row->{$target} = '';
$update = true;
}
}
else
// do the conversion
if ($continue)
{
$row->{$target} = '';
$bucket = array();
foreach ($jsonArray as $key => $values)
{
foreach ($values as $nr => $value)
{
if (!isset($bucket[$field['key'] . $nr]) || !ComponentbuilderHelper::checkArray($bucket[$field['key'] . $nr]))
{
$bucket[$field['key'] . $nr] = array();
}
$bucket[$field['key'] . $nr][$key] = $value;
}
}
// set the bucket back to properties
$row->{$target} = json_encode($bucket);
$update = true;
}
}
// do the conversion
if ($continue)
// update with the new values
if ($update)
{
$bucket = array();
foreach ($jsonArray as $key => $values)
{
foreach ($values as $nr => $value)
{
if (!isset($bucket[$field['key'] . $nr]) || !ComponentbuilderHelper::checkArray($bucket[$field['key'] . $nr]))
{
$bucket[$field['key'] . $nr] = array();
}
$bucket[$field['key'] . $nr][$key] = $value;
}
}
// set the bucket back to properties
$row->{$target} = json_encode($bucket);
$update = true;
$db->updateObject('#__componentbuilder_' . $table, $row, 'id');
}
}
// update with the new values
if ($update)
{
$db->updateObject('#__componentbuilder_' . $table, $row, 'id');
}
}
}
};
// target version less then 2.5.5 (we need to change the language translation values & the fieldtype properties)
if (count($version) == 3 && $version[0] <= 2 && $version[1] <= 5 && (($version[1] == 5 && $version[2] <= 4) || ($version[1] < 5)))
{
// do some conversions in the translations table
$convertRepeatable($db, 'language_translation', array('id', 'translation'), array('translation' => array('check' => array('translation'), 'key' => 'translation')));
// do some conversions in the fieldtype table
$convertRepeatable($db, 'fieldtype', array('id', 'properties'), array('properties' => array('check' => array('name'), 'key' => 'properties')));
}
// target version less then 2.5.6
if (count($version) == 3 && $version[0] <= 2 && $version[1] <= 5 && (($version[1] == 5 && $version[2] <= 5) || ($version[1] < 5)))
{
// do some conversions in the dynamic get table
$convertRepeatable($db, 'dynamic_get', array('id', 'join_view_table', 'join_db_table', 'filter', 'where', 'order', 'global'),
array(
'join_view_table' => array('check' => array('view_table'), 'key' => 'join_view_table'),
'join_db_table' => array('check' => array('db_table'), 'key' => 'join_db_table'),
'filter' => array('check' => array('filter_type'), 'key' => 'filter'),
'where' => array('check' => array('table_key'), 'key' => 'where'),
'order' => array('check' => array('table_key'), 'key' => 'order'),
'global' => array('check' => array('name'), 'key' => 'global')
)
);
}
// get table columns to confirm that this is an old installation
$activeColumns = $db->getTableColumns('#__componentbuilder_admin_view');
// target version less then 2.5.7
if (isset($activeColumns['addfields']) && (count($version) == 3 && $version[0] <= 2 && $version[1] <= 5 && (($version[1] == 5 && $version[2] <= 6) || ($version[1] < 5))))
{
// do some conversions in the admin_view table
$convertRepeatable($db, 'admin_view', array('id', 'ajax_input', 'custom_button', 'addtables', 'addlinked_views', 'addconditions', 'addfields', 'addtabs', 'addpermissions'),
array(
'ajax_input' => array('check' => array('value_name'), 'key' => 'ajax_input'),
'custom_button' => array('check' => array('name'), 'key' => 'custom_button'),
'addtables' => array('check' => array('table'), 'key' => 'addtables'),
'addlinked_views' => array('check' => array('adminview'), 'key' => 'addlinked_views'),
'addconditions' => array('check' => array('target_field'), 'key' => 'addconditions'),
'addfields' => array('check' => array('field'), 'key' => 'addfields'),
'addtabs' => array('check' => array('name'), 'key' => 'addtabs'),
'addpermissions' => array('check' => array('action'), 'key' => 'addpermissions')
)
);
// do some conversions in the site_view table
$convertRepeatable($db, 'site_view', array('id', 'ajax_input', 'custom_button'),
array(
'ajax_input' => array('check' => array('value_name'), 'key' => 'ajax_input'),
'custom_button' => array('check' => array('name'), 'key' => 'custom_button')
)
);
// do some conversions in the custom_admin_view table
$convertRepeatable($db, 'custom_admin_view', array('id', 'custom_button'),
array(
'custom_button' => array('check' => array('name'), 'key' => 'custom_button')
)
);
}
// the set move values
$this->setMoveValues = array();
// get table columns to confirm that this is an old installation
$activeColumns = $db->getTableColumns('#__componentbuilder_joomla_component');
// target version less then 2.6.0
if (isset($activeColumns['addadmin_views']) && (count($version) == 3 && $version[0] <= 2 && $version[1] <= 5 && (($version[1] == 5 && $version[2] <= 9) || ($version[1] < 6))))
{
// do some conversions in the admin_view table
$convertRepeatable($db, 'joomla_component', array('id', 'addadmin_views', 'addconfig', 'addcontributors', 'addcustom_admin_views', 'addcustommenus', 'addfiles', 'addfolders', 'addsite_views', 'dashboard_tab', 'sql_tweak', 'version_update'),
array(
'addadmin_views' => array('check' => array('adminview'), 'key' => 'addadmin_views'),
'addconfig' => array('check' => array('field'), 'key' => 'addconfig'),
'addcontributors' => array('check' => array('name'), 'key' => 'addcontributors'),
'addcustom_admin_views' => array('check' => array('customadminview'), 'key' => 'addcustom_admin_views'),
'addcustommenus' => array('check' => array('name'), 'key' => 'addcustommenus'),
'addfiles' => array('check' => array('file'), 'key' => 'addfiles'),
'addfolders' => array('check' => array('folder'), 'key' => 'addfolders'),
'addsite_views' => array('check' => array('siteview'), 'key' => 'addsite_views'),
'dashboard_tab' => array('check' => array('name'), 'key' => 'dashboard_tab'),
'sql_tweak' => array('check' => array('adminview'), 'key' => 'sql_tweak'),
'version_update' => array('check' => array('version'), 'key' => 'version_update')
)
);
// move values to their own tables
$tables = array(
'admin_fields' => array('id' => 'admin_view', 'addfields' => 'addfields'),
'admin_fields_conditions' => array('id' => 'admin_view', 'addconditions' => 'addconditions'),
'component_admin_views' => array('id' => 'joomla_component', 'addadmin_views' => 'addadmin_views'),
'component_site_views' => array('id' => 'joomla_component', 'addsite_views' => 'addsite_views'),
'component_custom_admin_views' => array('id' => 'joomla_component', 'addcustom_admin_views' => 'addcustom_admin_views'),
'component_updates' => array('id' => 'joomla_component', 'version_update' => 'version_update'),
'component_mysql_tweaks' => array('id' => 'joomla_component', 'sql_tweak' => 'sql_tweak'),
'component_custom_admin_menus' => array('id' => 'joomla_component', 'addcustommenus' => 'addcustommenus'),
'component_config' => array('id' => 'joomla_component', 'addconfig' => 'addconfig'),
'component_dashboard' => array('id' => 'joomla_component', 'dashboard_tab' => 'dashboard_tab', 'php_dashboard_methods' => 'php_dashboard_methods'),
'component_files_folders' => array('id' => 'joomla_component', 'addfiles' => 'addfiles', 'addfolders' => 'addfolders')
);
$this->dynamicTable = array(
'admin_fields' => 'admin_view',
'admin_fields_conditions' => 'admin_view',
'component_admin_views' => 'joomla_component',
'component_site_views' => 'joomla_component',
'component_custom_admin_views' => 'joomla_component',
'component_updates' => 'joomla_component',
'component_mysql_tweaks' => 'joomla_component',
'component_custom_admin_menus' => 'joomla_component',
'component_config' => 'joomla_component',
'component_dashboard' => 'joomla_component',
'component_files_folders' => 'joomla_component');
foreach ($tables as $move => $array)
};
// target version less then 2.5.5 (we need to change the language translation values & the fieldtype properties)
if (count($this->JCBversion) == 3 && $this->JCBversion[0] <= 2 && $this->JCBversion[1] <= 5 && (($this->JCBversion[1] == 5 && $this->JCBversion[2] <= 4) || ($this->JCBversion[1] < 5)))
{
// we must first check if the fields are still there
$columns = $db->getTableColumns('#__componentbuilder_'.$this->dynamicTable[$move]);
foreach ($array as $column => $as)
// do some conversions in the translations table
$convertRepeatable($db, 'language_translation', array('id', 'translation'), array('translation' => array('check' => array('translation'), 'key' => 'translation')));
// do some conversions in the fieldtype table
$convertRepeatable($db, 'fieldtype', array('id', 'properties'), array('properties' => array('check' => array('name'), 'key' => 'properties')));
}
// target version less then 2.5.6
if (count($this->JCBversion) == 3 && $this->JCBversion[0] <= 2 && $this->JCBversion[1] <= 5 && (($this->JCBversion[1] == 5 && $this->JCBversion[2] <= 5) || ($this->JCBversion[1] < 5)))
{
// do some conversions in the dynamic get table
$convertRepeatable($db, 'dynamic_get', array('id', 'join_view_table', 'join_db_table', 'filter', 'where', 'order', 'global'),
array(
'join_view_table' => array('check' => array('view_table'), 'key' => 'join_view_table'),
'join_db_table' => array('check' => array('db_table'), 'key' => 'join_db_table'),
'filter' => array('check' => array('filter_type'), 'key' => 'filter'),
'where' => array('check' => array('table_key'), 'key' => 'where'),
'order' => array('check' => array('table_key'), 'key' => 'order'),
'global' => array('check' => array('name'), 'key' => 'global')
)
);
}
// get table columns to confirm that this is an old installation
$activeColumns = $db->getTableColumns('#__componentbuilder_admin_view');
// target version less then 2.5.7
if (isset($activeColumns['addfields']) && (count($this->JCBversion) == 3 && $this->JCBversion[0] <= 2 && $this->JCBversion[1] <= 5 && (($this->JCBversion[1] == 5 && $this->JCBversion[2] <= 6) || ($this->JCBversion[1] < 5))))
{
// do some conversions in the admin_view table
$convertRepeatable($db, 'admin_view', array('id', 'ajax_input', 'custom_button', 'addtables', 'addlinked_views', 'addconditions', 'addfields', 'addtabs', 'addpermissions'),
array(
'ajax_input' => array('check' => array('value_name'), 'key' => 'ajax_input'),
'custom_button' => array('check' => array('name'), 'key' => 'custom_button'),
'addtables' => array('check' => array('table'), 'key' => 'addtables'),
'addlinked_views' => array('check' => array('adminview'), 'key' => 'addlinked_views'),
'addconditions' => array('check' => array('target_field'), 'key' => 'addconditions'),
'addfields' => array('check' => array('field'), 'key' => 'addfields'),
'addtabs' => array('check' => array('name'), 'key' => 'addtabs'),
'addpermissions' => array('check' => array('action'), 'key' => 'addpermissions')
)
);
// do some conversions in the site_view table
$convertRepeatable($db, 'site_view', array('id', 'ajax_input', 'custom_button'),
array(
'ajax_input' => array('check' => array('value_name'), 'key' => 'ajax_input'),
'custom_button' => array('check' => array('name'), 'key' => 'custom_button')
)
);
// do some conversions in the custom_admin_view table
$convertRepeatable($db, 'custom_admin_view', array('id', 'custom_button'),
array(
'custom_button' => array('check' => array('name'), 'key' => 'custom_button')
)
);
}
// the set move values
$this->setMoveValues = array();
// get table columns to confirm that this is an old installation
$activeColumns = $db->getTableColumns('#__componentbuilder_joomla_component');
// target version less then 2.6.0
if (isset($activeColumns['addadmin_views']) && (count($this->JCBversion) == 3 && $this->JCBversion[0] <= 2 && $this->JCBversion[1] <= 5 && (($this->JCBversion[1] == 5 && $this->JCBversion[2] <= 9) || ($this->JCBversion[1] < 6))))
{
// do some conversions in the admin_view table
$convertRepeatable($db, 'joomla_component', array('id', 'addadmin_views', 'addconfig', 'addcontributors', 'addcustom_admin_views', 'addcustommenus', 'addfiles', 'addfolders', 'addsite_views', 'dashboard_tab', 'sql_tweak', 'version_update'),
array(
'addadmin_views' => array('check' => array('adminview'), 'key' => 'addadmin_views'),
'addconfig' => array('check' => array('field'), 'key' => 'addconfig'),
'addcontributors' => array('check' => array('name'), 'key' => 'addcontributors'),
'addcustom_admin_views' => array('check' => array('customadminview'), 'key' => 'addcustom_admin_views'),
'addcustommenus' => array('check' => array('name'), 'key' => 'addcustommenus'),
'addfiles' => array('check' => array('file'), 'key' => 'addfiles'),
'addfolders' => array('check' => array('folder'), 'key' => 'addfolders'),
'addsite_views' => array('check' => array('siteview'), 'key' => 'addsite_views'),
'dashboard_tab' => array('check' => array('name'), 'key' => 'dashboard_tab'),
'sql_tweak' => array('check' => array('adminview'), 'key' => 'sql_tweak'),
'version_update' => array('check' => array('version'), 'key' => 'version_update')
)
);
// move values to their own tables
$tables = array(
'admin_fields' => array('id' => 'admin_view', 'addfields' => 'addfields'),
'admin_fields_conditions' => array('id' => 'admin_view', 'addconditions' => 'addconditions'),
'component_admin_views' => array('id' => 'joomla_component', 'addadmin_views' => 'addadmin_views'),
'component_site_views' => array('id' => 'joomla_component', 'addsite_views' => 'addsite_views'),
'component_custom_admin_views' => array('id' => 'joomla_component', 'addcustom_admin_views' => 'addcustom_admin_views'),
'component_updates' => array('id' => 'joomla_component', 'version_update' => 'version_update'),
'component_mysql_tweaks' => array('id' => 'joomla_component', 'sql_tweak' => 'sql_tweak'),
'component_custom_admin_menus' => array('id' => 'joomla_component', 'addcustommenus' => 'addcustommenus'),
'component_config' => array('id' => 'joomla_component', 'addconfig' => 'addconfig'),
'component_dashboard' => array('id' => 'joomla_component', 'dashboard_tab' => 'dashboard_tab', 'php_dashboard_methods' => 'php_dashboard_methods'),
'component_files_folders' => array('id' => 'joomla_component', 'addfiles' => 'addfiles', 'addfolders' => 'addfolders')
);
$this->dynamicTable = array(
'admin_fields' => 'admin_view',
'admin_fields_conditions' => 'admin_view',
'component_admin_views' => 'joomla_component',
'component_site_views' => 'joomla_component',
'component_custom_admin_views' => 'joomla_component',
'component_updates' => 'joomla_component',
'component_mysql_tweaks' => 'joomla_component',
'component_custom_admin_menus' => 'joomla_component',
'component_config' => 'joomla_component',
'component_dashboard' => 'joomla_component',
'component_files_folders' => 'joomla_component');
foreach ($tables as $move => $array)
{
if (!isset($columns[$column]))
// we must first check if the fields are still there
$columns = $db->getTableColumns('#__componentbuilder_'.$this->dynamicTable[$move]);
foreach ($array as $column => $as)
{
// remove this column since it is no longer found
unset($array[$column]);
if (!isset($columns[$column]))
{
// remove this column since it is no longer found
unset($array[$column]);
}
}
}
// do we still need to move any
if (ComponentbuilderHelper::checkArray($array))
{
// move all diverged data
$query = $db->getQuery(true);
// update all JCB fieldtype properties
$query->select($db->quoteName(array_keys($array),array_values($array)));
$query->from($db->quoteName('#__componentbuilder_'.$this->dynamicTable[$move]));
// Reset the query using our newly populated query object.
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
// do we still need to move any
if (ComponentbuilderHelper::checkArray($array))
{
$this->setMoveValues[$move] = $db->loadObjectList();
// move all diverged data
$query = $db->getQuery(true);
// update all JCB fieldtype properties
$query->select($db->quoteName(array_keys($array),array_values($array)));
$query->from($db->quoteName('#__componentbuilder_'.$this->dynamicTable[$move]));
// Reset the query using our newly populated query object.
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
$this->setMoveValues[$move] = $db->loadObjectList();
}
}
}
}
}
}
}
// do any install needed
if ($type == 'install')
{
@ -3130,7 +3130,7 @@ class com_componentbuilderInstallerScript
$snippet->type_title = 'Componentbuilder Snippet';
$snippet->type_alias = 'com_componentbuilder.snippet';
$snippet->table = '{"special": {"dbtable": "#__componentbuilder_snippet","key": "id","type": "Snippet","prefix": "componentbuilderTable","config": "array()"},"common": {"dbtable": "#__ucm_content","key": "ucm_id","type": "Corecontent","prefix": "JTable","config": "array()"}}';
$snippet->field_mappings = '{"common": {"core_content_item_id": "id","core_title": "name","core_state": "published","core_alias": "null","core_created_time": "created","core_modified_time": "modified","core_body": "null","core_hits": "hits","core_publish_up": "null","core_publish_down": "null","core_access": "access","core_params": "params","core_featured": "null","core_metadata": "null","core_language": "null","core_images": "null","core_urls": "null","core_version": "version","core_ordering": "ordering","core_metakey": "null","core_metadesc": "null","core_catid": "null","core_xreference": "null","asset_id": "asset_id"},"special": {"name":"name","url":"url","type":"type","heading":"heading","library":"library","description":"description","snippet":"snippet","usage":"usage"}}';
$snippet->field_mappings = '{"common": {"core_content_item_id": "id","core_title": "name","core_state": "published","core_alias": "null","core_created_time": "created","core_modified_time": "modified","core_body": "null","core_hits": "hits","core_publish_up": "null","core_publish_down": "null","core_access": "access","core_params": "params","core_featured": "null","core_metadata": "null","core_language": "null","core_images": "null","core_urls": "null","core_version": "version","core_ordering": "ordering","core_metakey": "null","core_metadesc": "null","core_catid": "null","core_xreference": "null","asset_id": "asset_id"},"special": {"name":"name","url":"url","type":"type","heading":"heading","library":"library","contributor_email":"contributor_email","contributor_website":"contributor_website","usage":"usage","snippet":"snippet","description":"description","contributor_name":"contributor_name","contributor_company":"contributor_company"}}';
$snippet->router = 'ComponentbuilderHelperRoute::getSnippetRoute';
$snippet->content_history_options = '{"formFile": "administrator/components/com_componentbuilder/models/forms/snippet.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering","type","library"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "type","targetTable": "#__componentbuilder_snippet_type","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "library","targetTable": "#__componentbuilder_library","targetColumn": "id","displayColumn": "name"}]}';
@ -3652,7 +3652,7 @@ class com_componentbuilderInstallerScript
$snippet->type_title = 'Componentbuilder Snippet';
$snippet->type_alias = 'com_componentbuilder.snippet';
$snippet->table = '{"special": {"dbtable": "#__componentbuilder_snippet","key": "id","type": "Snippet","prefix": "componentbuilderTable","config": "array()"},"common": {"dbtable": "#__ucm_content","key": "ucm_id","type": "Corecontent","prefix": "JTable","config": "array()"}}';
$snippet->field_mappings = '{"common": {"core_content_item_id": "id","core_title": "name","core_state": "published","core_alias": "null","core_created_time": "created","core_modified_time": "modified","core_body": "null","core_hits": "hits","core_publish_up": "null","core_publish_down": "null","core_access": "access","core_params": "params","core_featured": "null","core_metadata": "null","core_language": "null","core_images": "null","core_urls": "null","core_version": "version","core_ordering": "ordering","core_metakey": "null","core_metadesc": "null","core_catid": "null","core_xreference": "null","asset_id": "asset_id"},"special": {"name":"name","url":"url","type":"type","heading":"heading","library":"library","description":"description","snippet":"snippet","usage":"usage"}}';
$snippet->field_mappings = '{"common": {"core_content_item_id": "id","core_title": "name","core_state": "published","core_alias": "null","core_created_time": "created","core_modified_time": "modified","core_body": "null","core_hits": "hits","core_publish_up": "null","core_publish_down": "null","core_access": "access","core_params": "params","core_featured": "null","core_metadata": "null","core_language": "null","core_images": "null","core_urls": "null","core_version": "version","core_ordering": "ordering","core_metakey": "null","core_metadesc": "null","core_catid": "null","core_xreference": "null","asset_id": "asset_id"},"special": {"name":"name","url":"url","type":"type","heading":"heading","library":"library","contributor_email":"contributor_email","contributor_website":"contributor_website","usage":"usage","snippet":"snippet","description":"description","contributor_name":"contributor_name","contributor_company":"contributor_company"}}';
$snippet->router = 'ComponentbuilderHelperRoute::getSnippetRoute';
$snippet->content_history_options = '{"formFile": "administrator/components/com_componentbuilder/models/forms/snippet.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering","type","library"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "type","targetTable": "#__componentbuilder_snippet_type","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "library","targetTable": "#__componentbuilder_library","targetColumn": "id","displayColumn": "name"}]}';
@ -4287,6 +4287,90 @@ class com_componentbuilderInstallerScript
// target version less then 2.6.5
if ((count($this->JCBversion) == 3 && $this->JCBversion[0] <= 2 && $this->JCBversion[1] <= 6 && (($this->JCBversion[1] == 6 && $this->JCBversion[2] <= 4) || ($this->JCBversion[1] < 6))))
{
// add libraries to the snippets
$libraries = array(
2 => array('have' => array('getbootstrap.com/docs/4.0', 'v4-alpha.getbootstrap.com')), // Bootstrap v4
3 => array('have' => array('getuikit.com/docs/'), 'not' => '.html'), // Uikit v3
4 => array('have' => array('getuikit.com/docs/', 'getuikit.com/v2/'), 'and' => '.html'), // Uikit v2
5 => array('have' => array('fooplugins.com/footable-demos')) // FooTable
);
// Create a new query object.
$query = $db->getQuery(true);
// get all Joomla Component FTP values
$query->select($db->quoteName(array('id', 'url')));
$query->from($db->quoteName('#__componentbuilder_snippet'));
$query->where($db->quoteName('library') . ' < 1'); // only snippets with no lib set
// Reset the query using our newly populated query object.
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
$updater = array();
$rows = $db->loadObjectList();
foreach ($rows as $row)
{
foreach ($libraries as $id => $library)
{
if (!isset($updater[$row->id]) && ComponentbuilderHelper::checkString($row->url))
{
foreach($library['have'] as $url)
{
if (strpos($row->url, $url) !== false)
{
if (isset($library['not']))
{
if (strpos($row->url, $library['not']) === false)
{
// Create an object.
$updater[$row->id] = new stdClass();
$updater[$row->id]->id = $row->id;
$updater[$row->id]->library = $id;
}
}
elseif (isset($library['and']))
{
if (strpos($row->url, $library['and']) !== false)
{
// Create an object.
$updater[$row->id] = new stdClass();
$updater[$row->id]->id = $row->id;
$updater[$row->id]->library = $id;
}
}
else
{
// Create an object.
$updater[$row->id] = new stdClass();
$updater[$row->id]->id = $row->id;
$updater[$row->id]->library = $id;
}
}
}
}
}
// if still not found
if (!isset($updater[$row->id]))
{
// Create an object.
$updater[$row->id] = new stdClass();
$updater[$row->id]->id = $row->id;
$updater[$row->id]->library = 1; // default (no library)
}
}
// update if set
if (ComponentbuilderHelper::checkArray($updater))
{
foreach($updater as $item)
{
// update the snippets table with the new library ids
$db->updateObject('#__componentbuilder_snippet', $item, 'id');
}
}
}
}
// set some defaults
if ((isset($this->setFtpValues) && ComponentbuilderHelper::checkArray($this->setFtpValues)) || (isset($this->setMoveValues) && ComponentbuilderHelper::checkArray($this->setMoveValues)))
{
@ -4393,7 +4477,7 @@ class com_componentbuilderInstallerScript
echo '<a target="_blank" href="http://vdm.bz/component-builder" title="Component Builder">
<img src="components/com_componentbuilder/assets/images/vdm-component.jpg"/>
</a>
<h3>Upgrade to Version 2.6.4 Was Successful! Let us know if anything is not working as expected.</h3>';
<h3>Upgrade to Version 2.6.5 Was Successful! Let us know if anything is not working as expected.</h3>';
}
}
}

View File

@ -37,6 +37,75 @@ abstract class ComponentbuilderHelper
**/
protected static $params = false;
/**
* The local company details
**/
protected static $localCompany = array();
/**
* The snippet paths
**/
public static $snippetPath = 'https://raw.githubusercontent.com/vdm-io/Joomla-Component-Builder-Snippets/master/';
public static $snippetsPath = 'https://api.github.com/repos/vdm-io/Joomla-Component-Builder-Snippets/git/trees/master';
/**
* Get the snippet contributor details
*
* @param string $filename The file name
* @param string $type The type of file
*
* @return array On success the contributor details
*
*/
public static function getContributorDetails($filename, $type = 'snippet')
{
// start loading he contributor details
$contributor = array();
// get the path & content
switch ($type)
{
case 'snippet':
$path = $snippetPath.$filename;
// get the file if available
$content = self::getFileContents($path);
if (self::checkJson($content))
{
$content = json_decode($content, true);
}
break;
default:
// only allow types that are being targeted
return false;
break;
}
// see if we have content and all needed details
if (isset($content) && self::checkArray($content)
&& isset($content['contributor_company'])
&& isset($content['contributor_name'])
&& isset($content['contributor_email'])
&& isset($content['contributor_website']))
{
// got the details from file
return array('contributor_company' => $content['contributor_company'] ,'contributor_name' => $content['contributor_name'], 'contributor_email' => $content['contributor_email'], 'contributor_website' => $content['contributor_website'], 'origin' => 'file');
}
// get the global settings
if (!self::checkObject(self::$params))
{
self::$params = JComponentHelper::getParams('com_componentbuilder');
}
// get the global company details
if (!self::checkArray(self::$localCompany))
{
// Set the person sharing information (default VDM ;)
self::$localCompany['company'] = self::$params->get('export_company', 'Vast Development Method');
self::$localCompany['owner'] = self::$params->get('export_owner', 'Llewellyn van der Merwe');
self::$localCompany['email'] = self::$params->get('export_email', 'joomla@vdm.io');
self::$localCompany['website'] = self::$params->get('export_website', 'https://www.vdm.io/');
}
// default global
return array('contributor_company' => self::$localCompany['company'] ,'contributor_name' => self::$localCompany['owner'], 'contributor_email' => self::$localCompany['email'], 'contributor_website' => self::$localCompany['website'], 'origin' => 'global');
}
/**
* get all component IDs
*/