From 41a4704a4788e1c3cb13f8d7d6057661337b0064 Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Tue, 7 Jul 2015 12:33:46 +0400 Subject: [PATCH 001/352] Update en-GB.tpl_beez3.ini --- language/en-GB/en-GB.tpl_beez3.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language/en-GB/en-GB.tpl_beez3.ini b/language/en-GB/en-GB.tpl_beez3.ini index d518389a0b858..909b6adf3227a 100644 --- a/language/en-GB/en-GB.tpl_beez3.ini +++ b/language/en-GB/en-GB.tpl_beez3.ini @@ -56,5 +56,5 @@ TPL_BEEZ3_SMALLER="Smaller" TPL_BEEZ3_SYSTEM_MESSAGE="Error" TPL_BEEZ3_TEXTRIGHTCLOSE="Close info" TPL_BEEZ3_TEXTRIGHTOPEN="Open info" -TPL_BEEZ3_XML_DESCRIPTION="Accessible template for Joomla! Beez, the HTML 4 version." +TPL_BEEZ3_XML_DESCRIPTION="Accessible site template for Joomla 3.x. Beez3, the HTML5 version." TPL_BEEZ3_YOUR_SITE_DESCRIPTION="Your site description" From 4b9a1588fcb07ee826ff6ed8e8bae25136e25695 Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Tue, 7 Jul 2015 12:34:28 +0400 Subject: [PATCH 002/352] Update en-GB.tpl_beez3.sys.ini --- language/en-GB/en-GB.tpl_beez3.sys.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language/en-GB/en-GB.tpl_beez3.sys.ini b/language/en-GB/en-GB.tpl_beez3.sys.ini index 36bbf509a139e..74cdc8c326ad1 100644 --- a/language/en-GB/en-GB.tpl_beez3.sys.ini +++ b/language/en-GB/en-GB.tpl_beez3.sys.ini @@ -20,4 +20,4 @@ TPL_BEEZ3_POSITION_POSITION-6="Right top" TPL_BEEZ3_POSITION_POSITION-7="Left top" TPL_BEEZ3_POSITION_POSITION-8="Right middle" TPL_BEEZ3_POSITION_POSITION-9="Footer top" -TPL_BEEZ3_XML_DESCRIPTION="Accessible template for Joomla! Beez, the HTML 4 version." +TPL_BEEZ3_XML_DESCRIPTION="Accessible site template for Joomla 3.x. Beez3, the HTML5 version." From 5108c8b18c7edfc8551f232401cafa961c1c14d2 Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Tue, 7 Jul 2015 12:38:36 +0400 Subject: [PATCH 003/352] Update en-GB.com_config.ini Fixed invalid HTML tags --- administrator/language/en-GB/en-GB.com_config.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_config.ini b/administrator/language/en-GB/en-GB.com_config.ini index 01880aa1a4c2e..b7baae2c6fcd6 100644 --- a/administrator/language/en-GB/en-GB.com_config.ini +++ b/administrator/language/en-GB/en-GB.com_config.ini @@ -50,7 +50,7 @@ COM_CONFIG_FIELD_DATABASE_TYPE_DESC="The type of database in use entered during COM_CONFIG_FIELD_DATABASE_TYPE_LABEL="Database Type" COM_CONFIG_FIELD_DATABASE_USERNAME_DESC="The username for access to your database entered during the installation process. Do not edit this field unless absolutely necessary (eg the transfer of the database to a new hosting provider)." COM_CONFIG_FIELD_DATABASE_USERNAME_LABEL="Database Username" -COM_CONFIG_FIELD_DEBUG_LANG_DESC="Select whether the debugging indicators (**...**) or (??...??) for the Joomla Language files will be displayed. Debug Language will work without Debug System being activated, but you will not get the additional detailed references that will help you correct any errors." +COM_CONFIG_FIELD_DEBUG_LANG_DESC="Select whether the debugging indicators (**…**) or (??…??) for the Joomla Language files will be displayed. Debug Language will work without Debug System being activated, but you will not get the additional detailed references that will help you correct any errors." COM_CONFIG_FIELD_DEBUG_LANG_LABEL="Debug Language" COM_CONFIG_FIELD_DEBUG_SYSTEM_DESC="If enabled, diagnostic information, language translation and SQL errors (if present) will be displayed. The information will be displayed at the foot of every page you view within the Joomla Backend and Frontend. It is not advisable to leave the debug mode activated when running a live website." COM_CONFIG_FIELD_DEBUG_SYSTEM_LABEL="Debug System" From f9aaab65852ee07e23ca4900b02b2ae9c85ca2ca Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Tue, 7 Jul 2015 13:42:01 +0400 Subject: [PATCH 004/352] Update en-GB.tpl_beez3.ini Same change as in language folder ini file --- templates/beez3/language/en-GB/en-GB.tpl_beez3.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/beez3/language/en-GB/en-GB.tpl_beez3.ini b/templates/beez3/language/en-GB/en-GB.tpl_beez3.ini index 2629583ab943b..27198b53b15e8 100644 --- a/templates/beez3/language/en-GB/en-GB.tpl_beez3.ini +++ b/templates/beez3/language/en-GB/en-GB.tpl_beez3.ini @@ -56,5 +56,5 @@ TPL_BEEZ3_SMALLER="Smaller" TPL_BEEZ3_SYSTEM_MESSAGE="Error" TPL_BEEZ3_TEXTRIGHTCLOSE="Close info" TPL_BEEZ3_TEXTRIGHTOPEN="Open info" -TPL_BEEZ3_XML_DESCRIPTION="Accessible template for Joomla! Beez, the HTML 4 version." +TPL_BEEZ3_XML_DESCRIPTION="Accessible site template for Joomla 3.x. Beez3, the HTML5 version." TPL_BEEZ3_YOUR_SITE_DESCRIPTION="Your site description" From 3e32b991a5bb289bc7fdfb5987db62c72e8f3720 Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Tue, 7 Jul 2015 13:42:46 +0400 Subject: [PATCH 005/352] Update en-GB.tpl_beez3.sys.ini Same change as in language folder ini file --- templates/beez3/language/en-GB/en-GB.tpl_beez3.sys.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/beez3/language/en-GB/en-GB.tpl_beez3.sys.ini b/templates/beez3/language/en-GB/en-GB.tpl_beez3.sys.ini index 656635ca05fb6..b2bf1ff9f0a5a 100644 --- a/templates/beez3/language/en-GB/en-GB.tpl_beez3.sys.ini +++ b/templates/beez3/language/en-GB/en-GB.tpl_beez3.sys.ini @@ -20,5 +20,5 @@ TPL_BEEZ3_POSITION_POSITION-6="Right top" TPL_BEEZ3_POSITION_POSITION-7="Left top" TPL_BEEZ3_POSITION_POSITION-8="Right middle" TPL_BEEZ3_POSITION_POSITION-9="Footer top" -TPL_BEEZ3_XML_DESCRIPTION="Accessible template for Joomla! Beez, the HTML 4 version." +TPL_BEEZ3_XML_DESCRIPTION="Accessible site template for Joomla 3.x. Beez3, the HTML5 version." From bd0eef9c41bc35767f852ebfa53229971aebbcf0 Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Wed, 8 Jul 2015 22:59:24 +0400 Subject: [PATCH 006/352] Update en-GB.com_config.ini Added spaces before and after eppipsis chars as suggested by style guide --- administrator/language/en-GB/en-GB.com_config.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_config.ini b/administrator/language/en-GB/en-GB.com_config.ini index b7baae2c6fcd6..1e5acc5c50e92 100644 --- a/administrator/language/en-GB/en-GB.com_config.ini +++ b/administrator/language/en-GB/en-GB.com_config.ini @@ -50,7 +50,7 @@ COM_CONFIG_FIELD_DATABASE_TYPE_DESC="The type of database in use entered during COM_CONFIG_FIELD_DATABASE_TYPE_LABEL="Database Type" COM_CONFIG_FIELD_DATABASE_USERNAME_DESC="The username for access to your database entered during the installation process. Do not edit this field unless absolutely necessary (eg the transfer of the database to a new hosting provider)." COM_CONFIG_FIELD_DATABASE_USERNAME_LABEL="Database Username" -COM_CONFIG_FIELD_DEBUG_LANG_DESC="Select whether the debugging indicators (**…**) or (??…??) for the Joomla Language files will be displayed. Debug Language will work without Debug System being activated, but you will not get the additional detailed references that will help you correct any errors." +COM_CONFIG_FIELD_DEBUG_LANG_DESC="Select whether the debugging indicators (** … **) or (?? … ??) for the Joomla Language files will be displayed. Debug Language will work without Debug System being activated, but you will not get the additional detailed references that will help you correct any errors." COM_CONFIG_FIELD_DEBUG_LANG_LABEL="Debug Language" COM_CONFIG_FIELD_DEBUG_SYSTEM_DESC="If enabled, diagnostic information, language translation and SQL errors (if present) will be displayed. The information will be displayed at the foot of every page you view within the Joomla Backend and Frontend. It is not advisable to leave the debug mode activated when running a live website." COM_CONFIG_FIELD_DEBUG_SYSTEM_LABEL="Debug System" From b8ce177f1d05f5a003fc63921c2a5e7faea79dc4 Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Thu, 9 Jul 2015 14:05:58 +0400 Subject: [PATCH 007/352] Update en-GB.com_config.ini Replaced ellipse char with three separate dots as requested --- administrator/language/en-GB/en-GB.com_config.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_config.ini b/administrator/language/en-GB/en-GB.com_config.ini index 1e5acc5c50e92..cd8993311c0cd 100644 --- a/administrator/language/en-GB/en-GB.com_config.ini +++ b/administrator/language/en-GB/en-GB.com_config.ini @@ -50,7 +50,7 @@ COM_CONFIG_FIELD_DATABASE_TYPE_DESC="The type of database in use entered during COM_CONFIG_FIELD_DATABASE_TYPE_LABEL="Database Type" COM_CONFIG_FIELD_DATABASE_USERNAME_DESC="The username for access to your database entered during the installation process. Do not edit this field unless absolutely necessary (eg the transfer of the database to a new hosting provider)." COM_CONFIG_FIELD_DATABASE_USERNAME_LABEL="Database Username" -COM_CONFIG_FIELD_DEBUG_LANG_DESC="Select whether the debugging indicators (** … **) or (?? … ??) for the Joomla Language files will be displayed. Debug Language will work without Debug System being activated, but you will not get the additional detailed references that will help you correct any errors." +COM_CONFIG_FIELD_DEBUG_LANG_DESC="Select whether the debugging indicators (** ... **) or (?? ... ??) for the Joomla Language files will be displayed. Debug Language will work without Debug System being activated, but you will not get the additional detailed references that will help you correct any errors." COM_CONFIG_FIELD_DEBUG_LANG_LABEL="Debug Language" COM_CONFIG_FIELD_DEBUG_SYSTEM_DESC="If enabled, diagnostic information, language translation and SQL errors (if present) will be displayed. The information will be displayed at the foot of every page you view within the Joomla Backend and Frontend. It is not advisable to leave the debug mode activated when running a live website." COM_CONFIG_FIELD_DEBUG_SYSTEM_LABEL="Debug System" From edb63f718719e051086e4a2011f0b41ad79a283a Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Sat, 7 Nov 2015 16:37:33 +0400 Subject: [PATCH 008/352] Update en-GB.tpl_beez3.ini --- templates/beez3/language/en-GB/en-GB.tpl_beez3.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/beez3/language/en-GB/en-GB.tpl_beez3.ini b/templates/beez3/language/en-GB/en-GB.tpl_beez3.ini index 27198b53b15e8..305836e843f64 100644 --- a/templates/beez3/language/en-GB/en-GB.tpl_beez3.ini +++ b/templates/beez3/language/en-GB/en-GB.tpl_beez3.ini @@ -56,5 +56,5 @@ TPL_BEEZ3_SMALLER="Smaller" TPL_BEEZ3_SYSTEM_MESSAGE="Error" TPL_BEEZ3_TEXTRIGHTCLOSE="Close info" TPL_BEEZ3_TEXTRIGHTOPEN="Open info" -TPL_BEEZ3_XML_DESCRIPTION="Accessible site template for Joomla 3.x. Beez3, the HTML5 version." +TPL_BEEZ3_XML_DESCRIPTION="Accessible site template for Joomla! 3.x. Beez3, the HTML5 version." TPL_BEEZ3_YOUR_SITE_DESCRIPTION="Your site description" From 562d8cba23d5443abd6984ea5e9c3e00acaa60bd Mon Sep 17 00:00:00 2001 From: dgt41 Date: Sat, 7 Nov 2015 23:33:48 +0200 Subject: [PATCH 009/352] static scripts --- media/editors/none/none.js | 33 ++++++++++++++++++++++ media/editors/none/none.min.js | 1 + plugins/editors/none/none.php | 51 ++++++---------------------------- 3 files changed, 43 insertions(+), 42 deletions(-) create mode 100644 media/editors/none/none.js create mode 100644 media/editors/none/none.min.js diff --git a/media/editors/none/none.js b/media/editors/none/none.js new file mode 100644 index 0000000000000..e1a8969ab8f94 --- /dev/null +++ b/media/editors/none/none.js @@ -0,0 +1,33 @@ +/** + * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +/** + * Editor None + */ +function insertAtCursor(myField, myValue) +{ + if (document.selection) + { + // IE support + myField.focus(); + sel = document.selection.createRange(); + sel.text = myValue; + } else if (myField.selectionStart || myField.selectionStart == '0') + { + // MOZILLA/NETSCAPE support + var startPos = myField.selectionStart; + var endPos = myField.selectionEnd; + myField.value = myField.value.substring(0, startPos) + + myValue + + myField.value.substring(endPos, myField.value.length); + } else { + myField.value += myValue; + } +} + +function jInsertEditorText(text, editor) +{ + insertAtCursor(document.getElementById(editor), text); +} \ No newline at end of file diff --git a/media/editors/none/none.min.js b/media/editors/none/none.min.js new file mode 100644 index 0000000000000..2b38b08665345 --- /dev/null +++ b/media/editors/none/none.min.js @@ -0,0 +1 @@ +function insertAtCursor(e,t){if(document.selection)e.focus(),sel=document.selection.createRange(),sel.text=t;else if(e.selectionStart||"0"==e.selectionStart){var n=e.selectionStart,s=e.selectionEnd;e.value=e.value.substring(0,n)+t+e.value.substring(s,e.value.length)}else e.value+=t}function jInsertEditorText(e,t){insertAtCursor(document.getElementById(t),e)} \ No newline at end of file diff --git a/plugins/editors/none/none.php b/plugins/editors/none/none.php index 1f966cc3e9a2e..9e2fbb8e85d2f 100644 --- a/plugins/editors/none/none.php +++ b/plugins/editors/none/none.php @@ -20,36 +20,15 @@ class PlgEditorNone extends JPlugin * Method to handle the onInitEditor event. * - Initialises the Editor * - * @return string JavaScript Initialization string + * @return void * * @since 1.5 */ public function onInit() { - $txt = ""; - - return $txt; + JHtml::script('media/editors/none/none.min.js', false, false, false, false, true); + + return null; } /** @@ -94,24 +73,12 @@ public function onSetContent($id, $html) * * @param string $id The id of the editor field * - * @return boolean returns true when complete + * @return void */ public function onGetInsertMethod($id) { - static $done = false; - - // Do this only once. - if (!$done) - { - $doc = JFactory::getDocument(); - $js = "\tfunction jInsertEditorText(text, editor) - { - insertAtCursor(document.getElementById(editor), text); - }"; - $doc->addScriptDeclaration($js); - } - return true; + return null; } /** @@ -150,9 +117,9 @@ public function onDisplay($name, $content, $width, $height, $col, $row, $buttons $height .= 'px'; } - $buttons = $this->_displayButtons($id, $buttons, $asset, $author); - $editor = "" - . $buttons; + $editor = '' + . $this->_displayButtons($id, $buttons, $asset, $author); return $editor; } From fb2301f1036742275abfbf9a7be17636c7f13752 Mon Sep 17 00:00:00 2001 From: andrepereirasilva Date: Sun, 22 Nov 2015 09:58:58 +0000 Subject: [PATCH 010/352] Should be SSL/TLS (SMTPS) or STARTTLS (SMTP + STARTTLS extension) See https://github.com/joomla/joomla-cms/issues/6798 --- administrator/language/en-GB/en-GB.com_config.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/language/en-GB/en-GB.com_config.ini b/administrator/language/en-GB/en-GB.com_config.ini index 234e43971f1ec..5f3061be77e6f 100644 --- a/administrator/language/en-GB/en-GB.com_config.ini +++ b/administrator/language/en-GB/en-GB.com_config.ini @@ -211,9 +211,9 @@ COM_CONFIG_FIELD_VALUE_SENDMAIL="Sendmail" COM_CONFIG_FIELD_VALUE_SIMPLE="Simple" COM_CONFIG_FIELD_VALUE_SITE_EMAIL="Site Email" COM_CONFIG_FIELD_VALUE_SMTP="SMTP" -COM_CONFIG_FIELD_VALUE_SSL="SSL" +COM_CONFIG_FIELD_VALUE_SSL="SSL/TLS" COM_CONFIG_FIELD_VALUE_SYSTEM_DEFAULT="System Default" -COM_CONFIG_FIELD_VALUE_TLS="TLS" +COM_CONFIG_FIELD_VALUE_TLS="STARTTLS" COM_CONFIG_FTP_DETAILS="FTP Login Details" COM_CONFIG_FTP_DETAILS_TIP="For updating your configuration.php file, Joomla will most likely need your FTP account details. Please enter them in the form fields below." COM_CONFIG_FTP_SETTINGS="FTP Settings" From f47036a366cb4dfdc731330a3b5bd3ccee19a921 Mon Sep 17 00:00:00 2001 From: andrepereirasilva Date: Sun, 22 Nov 2015 10:12:22 +0000 Subject: [PATCH 011/352] Improve tooltip --- administrator/language/en-GB/en-GB.com_config.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_config.ini b/administrator/language/en-GB/en-GB.com_config.ini index 5f3061be77e6f..dff458a1843ed 100644 --- a/administrator/language/en-GB/en-GB.com_config.ini +++ b/administrator/language/en-GB/en-GB.com_config.ini @@ -120,7 +120,7 @@ COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_DESC="Enter the password for the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_LABEL="SMTP Password" COM_CONFIG_FIELD_MAIL_SMTP_PORT_DESC="Enter the port number of your SMTP server. Use 25 for most unsecured servers and 465 for most secure servers." COM_CONFIG_FIELD_MAIL_SMTP_PORT_LABEL="SMTP Port" -COM_CONFIG_FIELD_MAIL_SMTP_SECURE_DESC="Select the security model that your SMTP server uses." +COM_CONFIG_FIELD_MAIL_SMTP_SECURE_DESC="Select the security model that your SMTP server uses.
- SSL/TLS for SMTPS (normally in port 465)
- STARTTLS for SMTP with STARTTLS extension (normally in port 25 or port 587)" COM_CONFIG_FIELD_MAIL_SMTP_SECURE_LABEL="SMTP Security" COM_CONFIG_FIELD_MAIL_SMTP_USERNAME_DESC="Enter the username for access to the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_USERNAME_LABEL="SMTP Username" From 75e98c971a90135b5697438743f87d253ccfa456 Mon Sep 17 00:00:00 2001 From: andrepereirasilva Date: Sun, 22 Nov 2015 10:14:11 +0000 Subject: [PATCH 012/352] Add none to tooltip --- administrator/language/en-GB/en-GB.com_config.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_config.ini b/administrator/language/en-GB/en-GB.com_config.ini index dff458a1843ed..52b5745571d2d 100644 --- a/administrator/language/en-GB/en-GB.com_config.ini +++ b/administrator/language/en-GB/en-GB.com_config.ini @@ -120,7 +120,7 @@ COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_DESC="Enter the password for the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_LABEL="SMTP Password" COM_CONFIG_FIELD_MAIL_SMTP_PORT_DESC="Enter the port number of your SMTP server. Use 25 for most unsecured servers and 465 for most secure servers." COM_CONFIG_FIELD_MAIL_SMTP_PORT_LABEL="SMTP Port" -COM_CONFIG_FIELD_MAIL_SMTP_SECURE_DESC="Select the security model that your SMTP server uses.
- SSL/TLS for SMTPS (normally in port 465)
- STARTTLS for SMTP with STARTTLS extension (normally in port 25 or port 587)" +COM_CONFIG_FIELD_MAIL_SMTP_SECURE_DESC="Select the security model that your SMTP server uses.
- None for no encryption
- SSL/TLS for SMTPS (normally in port 465)
- STARTTLS for SMTP with STARTTLS extension (normally in port 25 or port 587)" COM_CONFIG_FIELD_MAIL_SMTP_SECURE_LABEL="SMTP Security" COM_CONFIG_FIELD_MAIL_SMTP_USERNAME_DESC="Enter the username for access to the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_USERNAME_LABEL="SMTP Username" From c650395a8d703455ed8791add34c0656c7f87d1c Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 23 Nov 2015 16:50:37 +0000 Subject: [PATCH 013/352] more improvements --- administrator/language/en-GB/en-GB.com_config.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/language/en-GB/en-GB.com_config.ini b/administrator/language/en-GB/en-GB.com_config.ini index 52b5745571d2d..45312fea51bee 100644 --- a/administrator/language/en-GB/en-GB.com_config.ini +++ b/administrator/language/en-GB/en-GB.com_config.ini @@ -118,9 +118,9 @@ COM_CONFIG_FIELD_MAIL_SMTP_HOST_DESC="Enter the name of the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_HOST_LABEL="SMTP Host" COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_DESC="Enter the password for the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_LABEL="SMTP Password" -COM_CONFIG_FIELD_MAIL_SMTP_PORT_DESC="Enter the port number of your SMTP server. Use 25 for most unsecured servers and 465 for most secure servers." +COM_CONFIG_FIELD_MAIL_SMTP_PORT_DESC="Enter the port number of the SMTP server Joomla will use to send e-mails. Usually:
- 25 when using a unsecure mail server
- 465 when using a secure server with SMTPS
- 25 or 587 when using a secure server with SMTP with STARTTLS extension." COM_CONFIG_FIELD_MAIL_SMTP_PORT_LABEL="SMTP Port" -COM_CONFIG_FIELD_MAIL_SMTP_SECURE_DESC="Select the security model that your SMTP server uses.
- None for no encryption
- SSL/TLS for SMTPS (normally in port 465)
- STARTTLS for SMTP with STARTTLS extension (normally in port 25 or port 587)" +COM_CONFIG_FIELD_MAIL_SMTP_SECURE_DESC="Select the security model of the SMTP server Joomla will use to send e-mails.
- None for no encryption
- SSL/TLS for SMTPS (usually on port 465)
- STARTTLS for SMTP with STARTTLS extension (usually on port 25 or port 587)" COM_CONFIG_FIELD_MAIL_SMTP_SECURE_LABEL="SMTP Security" COM_CONFIG_FIELD_MAIL_SMTP_USERNAME_DESC="Enter the username for access to the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_USERNAME_LABEL="SMTP Username" From 0801cffbec0b720e8736eedd20ec28f52c733f2f Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 23 Nov 2015 17:36:07 +0000 Subject: [PATCH 014/352] correction. thanks @brianteeman --- administrator/language/en-GB/en-GB.com_config.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_config.ini b/administrator/language/en-GB/en-GB.com_config.ini index 45312fea51bee..1f75680684e20 100644 --- a/administrator/language/en-GB/en-GB.com_config.ini +++ b/administrator/language/en-GB/en-GB.com_config.ini @@ -118,7 +118,7 @@ COM_CONFIG_FIELD_MAIL_SMTP_HOST_DESC="Enter the name of the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_HOST_LABEL="SMTP Host" COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_DESC="Enter the password for the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_LABEL="SMTP Password" -COM_CONFIG_FIELD_MAIL_SMTP_PORT_DESC="Enter the port number of the SMTP server Joomla will use to send e-mails. Usually:
- 25 when using a unsecure mail server
- 465 when using a secure server with SMTPS
- 25 or 587 when using a secure server with SMTP with STARTTLS extension." +COM_CONFIG_FIELD_MAIL_SMTP_PORT_DESC="Enter the port number of the SMTP server Joomla will use to send e-mails. Usually:
- 25 when using an unsecure mail server
- 465 when using a secure server with SMTPS
- 25 or 587 when using a secure server with SMTP with STARTTLS extension." COM_CONFIG_FIELD_MAIL_SMTP_PORT_LABEL="SMTP Port" COM_CONFIG_FIELD_MAIL_SMTP_SECURE_DESC="Select the security model of the SMTP server Joomla will use to send e-mails.
- None for no encryption
- SSL/TLS for SMTPS (usually on port 465)
- STARTTLS for SMTP with STARTTLS extension (usually on port 25 or port 587)" COM_CONFIG_FIELD_MAIL_SMTP_SECURE_LABEL="SMTP Security" From 081de8c7dd8df889e8a9f1432cb395c1cc06cef2 Mon Sep 17 00:00:00 2001 From: Roland Dalmulder Date: Thu, 10 Dec 2015 19:50:46 +0100 Subject: [PATCH 015/352] Use JHttpTransport classes for downloading packages --- .../com_joomlaupdate/helpers/download.php | 440 ------------------ .../com_joomlaupdate/models/default.php | 59 ++- 2 files changed, 55 insertions(+), 444 deletions(-) delete mode 100644 administrator/components/com_joomlaupdate/helpers/download.php diff --git a/administrator/components/com_joomlaupdate/helpers/download.php b/administrator/components/com_joomlaupdate/helpers/download.php deleted file mode 100644 index f3a3ed445404d..0000000000000 --- a/administrator/components/com_joomlaupdate/helpers/download.php +++ /dev/null @@ -1,440 +0,0 @@ - 0777) ) - { - $mode = 0755; - } - } - - $ftpOptions = JClientHelper::getCredentials('ftp'); - - // Check to make sure the path valid and clean - $path = JPath::clean($path); - - if ($ftpOptions['enabled'] == 1) - { - // Connect the FTP client - $ftp = JClientFtp::getInstance( - $ftpOptions['host'], $ftpOptions['port'], array(), - $ftpOptions['user'], $ftpOptions['pass'] - ); - } - - if (@chmod($path, $mode)) - { - $ret = true; - } - elseif ($ftpOptions['enabled'] == 1) - { - // Translate path and delete - $path = JPath::clean(str_replace(JPATH_ROOT, $ftpOptions['root'], $path), '/'); - - // FTP connector throws an error - $ret = $ftp->chmod($path, $mode); - } - else - { - return false; - } - - return $ret; - } -} diff --git a/administrator/components/com_joomlaupdate/models/default.php b/administrator/components/com_joomlaupdate/models/default.php index a15e73c2eb38e..f93c9ddc30b31 100644 --- a/administrator/components/com_joomlaupdate/models/default.php +++ b/administrator/components/com_joomlaupdate/models/default.php @@ -290,16 +290,67 @@ protected function downloadPackage($url, $target) { JLoader::import('helpers.download', JPATH_COMPONENT_ADMINISTRATOR); JLog::add(JText::sprintf('COM_JOOMLAUPDATE_UPDATE_LOG_URL', $url), JLog::INFO, 'Update'); - $result = AdmintoolsHelperDownload::download($url, $target); - if (!$result) + // Get the handler to download the package + $handler = $this->getHandler(); + + if (!$handler) { return false; } - else + + jimport('joomla.filesystem.file'); + + // Make sure the target does not exist. + JFile::delete($target); + + // Download the package + $uri = new JUri($url); + $result = $handler->request('get', $uri, null, array(), 30, 'Joomla/' . JVERSION); + + if (!$result || ($result->code != '200' && $result->code != '310')) + { + return false; + } + + // Write the file to disk + JFile::write($target, $result->body); + + return basename($target); + } + + /** + * Get the transport handler. + * + * @return object The transport handler. + * + * @since 3.5.0 + */ + private function getHandler() + { + $adapter = false; + + // List of handlers + $handlers = array( + 'Curl', + 'Stream', + ); + + // Load the cURL handler + $options = new \Joomla\Registry\Registry; + + foreach ($handlers as $handler) { - return basename($target); + $className = 'JHttpTransport' . $handler; + $adapter = new $className($options); + + if ($adapter->isSupported()) + { + break; + } } + + return $adapter; } /** From b4cfe7695045efa2ff6578250152fd18a6afc791 Mon Sep 17 00:00:00 2001 From: Roland Dalmulder Date: Thu, 10 Dec 2015 21:02:49 +0100 Subject: [PATCH 016/352] Better code usage --- .../com_joomlaupdate/models/default.php | 46 ++++--------------- 1 file changed, 9 insertions(+), 37 deletions(-) diff --git a/administrator/components/com_joomlaupdate/models/default.php b/administrator/components/com_joomlaupdate/models/default.php index f93c9ddc30b31..35ed376dbf481 100644 --- a/administrator/components/com_joomlaupdate/models/default.php +++ b/administrator/components/com_joomlaupdate/models/default.php @@ -292,7 +292,14 @@ protected function downloadPackage($url, $target) JLog::add(JText::sprintf('COM_JOOMLAUPDATE_UPDATE_LOG_URL', $url), JLog::INFO, 'Update'); // Get the handler to download the package - $handler = $this->getHandler(); + try + { + $handler = JHttpFactory::getHttp(null, array('curl', 'stream')); + } + catch (RuntimeException $e) + { + $handler = false; + } if (!$handler) { @@ -305,8 +312,7 @@ protected function downloadPackage($url, $target) JFile::delete($target); // Download the package - $uri = new JUri($url); - $result = $handler->request('get', $uri, null, array(), 30, 'Joomla/' . JVERSION); + $result = $handler->get($url); if (!$result || ($result->code != '200' && $result->code != '310')) { @@ -319,40 +325,6 @@ protected function downloadPackage($url, $target) return basename($target); } - /** - * Get the transport handler. - * - * @return object The transport handler. - * - * @since 3.5.0 - */ - private function getHandler() - { - $adapter = false; - - // List of handlers - $handlers = array( - 'Curl', - 'Stream', - ); - - // Load the cURL handler - $options = new \Joomla\Registry\Registry; - - foreach ($handlers as $handler) - { - $className = 'JHttpTransport' . $handler; - $adapter = new $className($options); - - if ($adapter->isSupported()) - { - break; - } - } - - return $adapter; - } - /** * Create restoration file. * From 29c5cdafce02a0da1acc1ced95773ea857f49b32 Mon Sep 17 00:00:00 2001 From: Roland Dalmulder Date: Thu, 10 Dec 2015 21:21:44 +0100 Subject: [PATCH 017/352] Code cleanup --- .../components/com_joomlaupdate/models/default.php | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/administrator/components/com_joomlaupdate/models/default.php b/administrator/components/com_joomlaupdate/models/default.php index 35ed376dbf481..4d7ce852eb81b 100644 --- a/administrator/components/com_joomlaupdate/models/default.php +++ b/administrator/components/com_joomlaupdate/models/default.php @@ -294,14 +294,9 @@ protected function downloadPackage($url, $target) // Get the handler to download the package try { - $handler = JHttpFactory::getHttp(null, array('curl', 'stream')); + $http = JHttpFactory::getHttp(null, array('curl', 'stream')); } catch (RuntimeException $e) - { - $handler = false; - } - - if (!$handler) { return false; } @@ -312,9 +307,9 @@ protected function downloadPackage($url, $target) JFile::delete($target); // Download the package - $result = $handler->get($url); + $result = $http->get($url); - if (!$result || ($result->code != '200' && $result->code != '310')) + if (!$result || ($result->code != 200 && $result->code != 310)) { return false; } From 4585e1d07988c2741ded09b71a72ec9bdb02d904 Mon Sep 17 00:00:00 2001 From: Roland Dalmulder Date: Thu, 10 Dec 2015 21:25:48 +0100 Subject: [PATCH 018/352] Add file to deletion stack --- administrator/components/com_admin/script.php | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 2762b5a6dbb36..12c377f29df28 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -1383,6 +1383,7 @@ public function deleteUnexistingFiles() '/libraries/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/ParseException.php', '/libraries/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/RuntimeException.php', '/administrator/components/com_tags/helpers/tags.php', + '/administrator/components/com_joomlaupdate/helpers/download.php', ); // TODO There is an issue while deleting folders using the ftp mode From 1377d6ce5a1a495015d2fbbc8cc1d2222617daec Mon Sep 17 00:00:00 2001 From: George Wilson Date: Sun, 13 Dec 2015 16:57:51 +0000 Subject: [PATCH 019/352] Typehint queries rather than use the magic PHP method --- components/com_banners/models/banners.php | 2 +- components/com_content/models/articles.php | 2 +- libraries/joomla/user/user.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/com_banners/models/banners.php b/components/com_banners/models/banners.php index c888de43397fe..d827d2b023c8f 100644 --- a/components/com_banners/models/banners.php +++ b/components/com_banners/models/banners.php @@ -111,7 +111,7 @@ protected function getListQuery() ->where('sub.level <= this.level + ' . $levels); // Add the subquery to the main query - $query->where('(' . $categoryEquals . ' OR a.catid IN (' . $subQuery->__toString() . '))'); + $query->where('(' . $categoryEquals . ' OR a.catid IN (' . (string) $subQuery . '))'); } else { diff --git a/components/com_content/models/articles.php b/components/com_content/models/articles.php index edb00fc7c25ea..b9dfc38b129e4 100644 --- a/components/com_content/models/articles.php +++ b/components/com_content/models/articles.php @@ -354,7 +354,7 @@ protected function getListQuery() } // Add the subquery to the main query - $query->where('(' . $categoryEquals . ' OR a.catid IN (' . $subQuery->__toString() . '))'); + $query->where('(' . $categoryEquals . ' OR a.catid IN (' . (string) $subQuery . '))'); } else { diff --git a/libraries/joomla/user/user.php b/libraries/joomla/user/user.php index a99d02d666a02..be4cc74656ddc 100644 --- a/libraries/joomla/user/user.php +++ b/libraries/joomla/user/user.php @@ -417,7 +417,7 @@ public function getAuthorisedCategories($component, $action) $query = $db->getQuery(true) ->select('c.id AS id, a.name AS asset_name') - ->from('(' . $subQuery->__toString() . ') AS c') + ->from('(' . (string) $subQuery . ') AS c') ->join('INNER', '#__assets AS a ON c.asset_id = a.id'); $db->setQuery($query); $allCategories = $db->loadObjectList('id'); From 0f64cbdb50fec3c268c57553a2df465b29002c5b Mon Sep 17 00:00:00 2001 From: Jelle Kok Date: Thu, 24 Dec 2015 16:04:52 +0100 Subject: [PATCH 020/352] Installer Warnings: better alert messages --- .../com_installer/views/warnings/tmpl/default.php | 10 +++++++--- administrator/language/en-GB/en-GB.com_installer.ini | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/administrator/components/com_installer/views/warnings/tmpl/default.php b/administrator/components/com_installer/views/warnings/tmpl/default.php index af6f0332b9461..c21cae3e56322 100644 --- a/administrator/components/com_installer/views/warnings/tmpl/default.php +++ b/administrator/components/com_installer/views/warnings/tmpl/default.php @@ -20,11 +20,15 @@
messages)) : ?> -
+
×
+
+ × + +
'warning0')); ?> messages as $message) : ?> @@ -35,7 +39,7 @@ - +
@@ -43,4 +47,4 @@
-
\ No newline at end of file + diff --git a/administrator/language/en-GB/en-GB.com_installer.ini b/administrator/language/en-GB/en-GB.com_installer.ini index a8ad91322704c..4d689de6b0c9e 100644 --- a/administrator/language/en-GB/en-GB.com_installer.ini +++ b/administrator/language/en-GB/en-GB.com_installer.ini @@ -131,6 +131,7 @@ COM_INSTALLER_MSG_WARNINGS_MEDMEMORYDESC="Potentially low PHP memory limit." COM_INSTALLER_MSG_WARNINGS_MEDMEMORYWARN="Your PHP memory limit is set below 16MB which may cause some issues when installing large extensions. Please set your memory limit to at least 16MB." COM_INSTALLER_MSG_WARNINGS_NONE="No warnings detected." COM_INSTALLER_MSG_WARNINGS_NOTCOMPLETE="

Warning: Update Not Complete!

The update is only partially complete. Please do the second update to complete the process.

" +COM_INSTALLER_MSG_WARNINGS_NOTICE="Warning: There are some warnings detected." COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSET="The PHP temporary folder is not set." COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSETDESC="The PHP temporary folder is the folder that PHP uses to store an uploaded file before Joomla can access this file. Whilst the folder not being set isn't always a problem, if you are having issues with manifest files not being detected or uploaded files not being detected, setting this in your php.ini file might fix the issue." COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLE="The PHP temporary folder is not writeable." From 894dfa46d810ebb79dd6cb815bb6d211aedf69f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20Smoli=C5=84ski?= Date: Sun, 27 Dec 2015 22:33:21 +0100 Subject: [PATCH 021/352] Update en-GB.tpl_beez3.sys.ini --- templates/beez3/language/en-GB/en-GB.tpl_beez3.sys.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/beez3/language/en-GB/en-GB.tpl_beez3.sys.ini b/templates/beez3/language/en-GB/en-GB.tpl_beez3.sys.ini index b2bf1ff9f0a5a..7ae50f326baca 100644 --- a/templates/beez3/language/en-GB/en-GB.tpl_beez3.sys.ini +++ b/templates/beez3/language/en-GB/en-GB.tpl_beez3.sys.ini @@ -20,5 +20,5 @@ TPL_BEEZ3_POSITION_POSITION-6="Right top" TPL_BEEZ3_POSITION_POSITION-7="Left top" TPL_BEEZ3_POSITION_POSITION-8="Right middle" TPL_BEEZ3_POSITION_POSITION-9="Footer top" -TPL_BEEZ3_XML_DESCRIPTION="Accessible site template for Joomla 3.x. Beez3, the HTML5 version." +TPL_BEEZ3_XML_DESCRIPTION="Accessible site template for Joomla! 3.x. Beez3, the HTML5 version." From 7d74c54181de62142ce0c5be5e2bc5edfbe2bb2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20Smoli=C5=84ski?= Date: Mon, 28 Dec 2015 17:20:25 +0100 Subject: [PATCH 022/352] fix for joomla#7360 PR for https://github.com/joomla/joomla-cms/pull/7360 --- language/en-GB/en-GB.tpl_beez3.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language/en-GB/en-GB.tpl_beez3.ini b/language/en-GB/en-GB.tpl_beez3.ini index 909b6adf3227a..8bb6e6b3a99ef 100644 --- a/language/en-GB/en-GB.tpl_beez3.ini +++ b/language/en-GB/en-GB.tpl_beez3.ini @@ -56,5 +56,5 @@ TPL_BEEZ3_SMALLER="Smaller" TPL_BEEZ3_SYSTEM_MESSAGE="Error" TPL_BEEZ3_TEXTRIGHTCLOSE="Close info" TPL_BEEZ3_TEXTRIGHTOPEN="Open info" -TPL_BEEZ3_XML_DESCRIPTION="Accessible site template for Joomla 3.x. Beez3, the HTML5 version." +TPL_BEEZ3_XML_DESCRIPTION="Accessible site template for Joomla! 3.x. Beez3, the HTML5 version." TPL_BEEZ3_YOUR_SITE_DESCRIPTION="Your site description" From c3cee03069262fbe4adc2447ceea249adb294a32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20Smoli=C5=84ski?= Date: Mon, 28 Dec 2015 17:25:21 +0100 Subject: [PATCH 023/352] fix for joomla/joomla-cms#7359 PR for https://github.com/joomla/joomla-cms/pull/7359 --- language/en-GB/en-GB.tpl_beez3.sys.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language/en-GB/en-GB.tpl_beez3.sys.ini b/language/en-GB/en-GB.tpl_beez3.sys.ini index 74cdc8c326ad1..fcce08cebcf2e 100644 --- a/language/en-GB/en-GB.tpl_beez3.sys.ini +++ b/language/en-GB/en-GB.tpl_beez3.sys.ini @@ -20,4 +20,4 @@ TPL_BEEZ3_POSITION_POSITION-6="Right top" TPL_BEEZ3_POSITION_POSITION-7="Left top" TPL_BEEZ3_POSITION_POSITION-8="Right middle" TPL_BEEZ3_POSITION_POSITION-9="Footer top" -TPL_BEEZ3_XML_DESCRIPTION="Accessible site template for Joomla 3.x. Beez3, the HTML5 version." +TPL_BEEZ3_XML_DESCRIPTION="Accessible site template for Joomla! 3.x. Beez3, the HTML5 version." From e7fdc2243a9ab14a2090d4481ee7329eebce47fe Mon Sep 17 00:00:00 2001 From: Demis Palma Date: Thu, 31 Dec 2015 00:55:54 +0000 Subject: [PATCH 024/352] Method call with an extra parameter Method call uses 2 parameters, but method signature uses 1 parameter --- bin/keychain.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/keychain.php b/bin/keychain.php index 1320b2e1b34e8..d02d8cd15fb3a 100644 --- a/bin/keychain.php +++ b/bin/keychain.php @@ -281,7 +281,7 @@ protected function delete() } $this->updated = true; - $this->keychain->deleteValue($this->input->args[1], null); + $this->keychain->deleteValue($this->input->args[1]); } /** From b61db90d718a355a95026313906b94758abeee64 Mon Sep 17 00:00:00 2001 From: Roland Dalmulder Date: Thu, 10 Dec 2015 19:50:46 +0100 Subject: [PATCH 025/352] Use JHttpTransport classes for downloading packages --- .../com_joomlaupdate/helpers/download.php | 440 ------------------ .../com_joomlaupdate/models/default.php | 59 ++- 2 files changed, 55 insertions(+), 444 deletions(-) delete mode 100644 administrator/components/com_joomlaupdate/helpers/download.php diff --git a/administrator/components/com_joomlaupdate/helpers/download.php b/administrator/components/com_joomlaupdate/helpers/download.php deleted file mode 100644 index f3a3ed445404d..0000000000000 --- a/administrator/components/com_joomlaupdate/helpers/download.php +++ /dev/null @@ -1,440 +0,0 @@ - 0777) ) - { - $mode = 0755; - } - } - - $ftpOptions = JClientHelper::getCredentials('ftp'); - - // Check to make sure the path valid and clean - $path = JPath::clean($path); - - if ($ftpOptions['enabled'] == 1) - { - // Connect the FTP client - $ftp = JClientFtp::getInstance( - $ftpOptions['host'], $ftpOptions['port'], array(), - $ftpOptions['user'], $ftpOptions['pass'] - ); - } - - if (@chmod($path, $mode)) - { - $ret = true; - } - elseif ($ftpOptions['enabled'] == 1) - { - // Translate path and delete - $path = JPath::clean(str_replace(JPATH_ROOT, $ftpOptions['root'], $path), '/'); - - // FTP connector throws an error - $ret = $ftp->chmod($path, $mode); - } - else - { - return false; - } - - return $ret; - } -} diff --git a/administrator/components/com_joomlaupdate/models/default.php b/administrator/components/com_joomlaupdate/models/default.php index a15e73c2eb38e..f93c9ddc30b31 100644 --- a/administrator/components/com_joomlaupdate/models/default.php +++ b/administrator/components/com_joomlaupdate/models/default.php @@ -290,16 +290,67 @@ protected function downloadPackage($url, $target) { JLoader::import('helpers.download', JPATH_COMPONENT_ADMINISTRATOR); JLog::add(JText::sprintf('COM_JOOMLAUPDATE_UPDATE_LOG_URL', $url), JLog::INFO, 'Update'); - $result = AdmintoolsHelperDownload::download($url, $target); - if (!$result) + // Get the handler to download the package + $handler = $this->getHandler(); + + if (!$handler) { return false; } - else + + jimport('joomla.filesystem.file'); + + // Make sure the target does not exist. + JFile::delete($target); + + // Download the package + $uri = new JUri($url); + $result = $handler->request('get', $uri, null, array(), 30, 'Joomla/' . JVERSION); + + if (!$result || ($result->code != '200' && $result->code != '310')) + { + return false; + } + + // Write the file to disk + JFile::write($target, $result->body); + + return basename($target); + } + + /** + * Get the transport handler. + * + * @return object The transport handler. + * + * @since 3.5.0 + */ + private function getHandler() + { + $adapter = false; + + // List of handlers + $handlers = array( + 'Curl', + 'Stream', + ); + + // Load the cURL handler + $options = new \Joomla\Registry\Registry; + + foreach ($handlers as $handler) { - return basename($target); + $className = 'JHttpTransport' . $handler; + $adapter = new $className($options); + + if ($adapter->isSupported()) + { + break; + } } + + return $adapter; } /** From 211cbb4c644e2366b955de740ff8d15cf1c2e5fd Mon Sep 17 00:00:00 2001 From: Roland Dalmulder Date: Thu, 10 Dec 2015 21:02:49 +0100 Subject: [PATCH 026/352] Better code usage --- .../com_joomlaupdate/models/default.php | 46 ++++--------------- 1 file changed, 9 insertions(+), 37 deletions(-) diff --git a/administrator/components/com_joomlaupdate/models/default.php b/administrator/components/com_joomlaupdate/models/default.php index f93c9ddc30b31..35ed376dbf481 100644 --- a/administrator/components/com_joomlaupdate/models/default.php +++ b/administrator/components/com_joomlaupdate/models/default.php @@ -292,7 +292,14 @@ protected function downloadPackage($url, $target) JLog::add(JText::sprintf('COM_JOOMLAUPDATE_UPDATE_LOG_URL', $url), JLog::INFO, 'Update'); // Get the handler to download the package - $handler = $this->getHandler(); + try + { + $handler = JHttpFactory::getHttp(null, array('curl', 'stream')); + } + catch (RuntimeException $e) + { + $handler = false; + } if (!$handler) { @@ -305,8 +312,7 @@ protected function downloadPackage($url, $target) JFile::delete($target); // Download the package - $uri = new JUri($url); - $result = $handler->request('get', $uri, null, array(), 30, 'Joomla/' . JVERSION); + $result = $handler->get($url); if (!$result || ($result->code != '200' && $result->code != '310')) { @@ -319,40 +325,6 @@ protected function downloadPackage($url, $target) return basename($target); } - /** - * Get the transport handler. - * - * @return object The transport handler. - * - * @since 3.5.0 - */ - private function getHandler() - { - $adapter = false; - - // List of handlers - $handlers = array( - 'Curl', - 'Stream', - ); - - // Load the cURL handler - $options = new \Joomla\Registry\Registry; - - foreach ($handlers as $handler) - { - $className = 'JHttpTransport' . $handler; - $adapter = new $className($options); - - if ($adapter->isSupported()) - { - break; - } - } - - return $adapter; - } - /** * Create restoration file. * From fa92ca59d287ca80add10c8c938d02ec54d5b1e3 Mon Sep 17 00:00:00 2001 From: Roland Dalmulder Date: Thu, 10 Dec 2015 21:21:44 +0100 Subject: [PATCH 027/352] Code cleanup --- .../components/com_joomlaupdate/models/default.php | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/administrator/components/com_joomlaupdate/models/default.php b/administrator/components/com_joomlaupdate/models/default.php index 35ed376dbf481..4d7ce852eb81b 100644 --- a/administrator/components/com_joomlaupdate/models/default.php +++ b/administrator/components/com_joomlaupdate/models/default.php @@ -294,14 +294,9 @@ protected function downloadPackage($url, $target) // Get the handler to download the package try { - $handler = JHttpFactory::getHttp(null, array('curl', 'stream')); + $http = JHttpFactory::getHttp(null, array('curl', 'stream')); } catch (RuntimeException $e) - { - $handler = false; - } - - if (!$handler) { return false; } @@ -312,9 +307,9 @@ protected function downloadPackage($url, $target) JFile::delete($target); // Download the package - $result = $handler->get($url); + $result = $http->get($url); - if (!$result || ($result->code != '200' && $result->code != '310')) + if (!$result || ($result->code != 200 && $result->code != 310)) { return false; } From 50144f8b11272c81149b20f8322fd8e388e6f6e4 Mon Sep 17 00:00:00 2001 From: Roland Dalmulder Date: Thu, 10 Dec 2015 21:25:48 +0100 Subject: [PATCH 028/352] Add file to deletion stack --- administrator/components/com_admin/script.php | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 2762b5a6dbb36..12c377f29df28 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -1383,6 +1383,7 @@ public function deleteUnexistingFiles() '/libraries/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/ParseException.php', '/libraries/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/RuntimeException.php', '/administrator/components/com_tags/helpers/tags.php', + '/administrator/components/com_joomlaupdate/helpers/download.php', ); // TODO There is an issue while deleting folders using the ftp mode From e1a09dbd5da6f1c22a9bd0c5e4dfa239bc00a2b3 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sun, 17 Jan 2016 20:57:47 +0000 Subject: [PATCH 029/352] remove JLayoutFile deprecated function from the library file --- libraries/cms/layout/file.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/cms/layout/file.php b/libraries/cms/layout/file.php index 87f7f4ca26dfe..e75d761b42ad7 100644 --- a/libraries/cms/layout/file.php +++ b/libraries/cms/layout/file.php @@ -73,7 +73,7 @@ public function __construct($layoutId, $basePath = null, $options = null) $this->setOptions($options); // Main properties - $this->setLayout($layoutId); + $this->setLayoutId($layoutId); $this->basePath = $basePath; // Init Enviroment @@ -466,7 +466,7 @@ public function setComponent($option) $this->options->set('component', $component); // Refresh include paths - $this->refreshIncludePaths(); + $this->clearIncludePaths(); } /** @@ -501,7 +501,7 @@ public function setClient($client) $this->options->set('client', $client); // Refresh include paths - $this->refreshIncludePaths(); + $this->clearIncludePaths(); } /** From 24ccdd27c2e80c2e42d0933c3d5ff8a1418b5c2c Mon Sep 17 00:00:00 2001 From: Roland Dalmulder Date: Thu, 10 Dec 2015 19:50:46 +0100 Subject: [PATCH 030/352] Use JHttpTransport classes for downloading packages --- administrator/components/com_admin/script.php | 1 + .../com_joomlaupdate/helpers/download.php | 440 ------------------ .../com_joomlaupdate/models/default.php | 26 +- 3 files changed, 23 insertions(+), 444 deletions(-) delete mode 100644 administrator/components/com_joomlaupdate/helpers/download.php diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 4ad06e2891dd1..dd060d1b4bd05 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -1396,6 +1396,7 @@ public function deleteUnexistingFiles() '/libraries/joomla/document/opensearch/opensearch.php', '/libraries/joomla/document/raw/raw.php', '/libraries/joomla/document/xml/xml.php', + '/administrator/components/com_joomlaupdate/helpers/download.php', ); // TODO There is an issue while deleting folders using the ftp mode diff --git a/administrator/components/com_joomlaupdate/helpers/download.php b/administrator/components/com_joomlaupdate/helpers/download.php deleted file mode 100644 index dbb6ebb2e1ddd..0000000000000 --- a/administrator/components/com_joomlaupdate/helpers/download.php +++ /dev/null @@ -1,440 +0,0 @@ - 0777) ) - { - $mode = 0755; - } - } - - $ftpOptions = JClientHelper::getCredentials('ftp'); - - // Check to make sure the path valid and clean - $path = JPath::clean($path); - - if ($ftpOptions['enabled'] == 1) - { - // Connect the FTP client - $ftp = JClientFtp::getInstance( - $ftpOptions['host'], $ftpOptions['port'], array(), - $ftpOptions['user'], $ftpOptions['pass'] - ); - } - - if (@chmod($path, $mode)) - { - $ret = true; - } - elseif ($ftpOptions['enabled'] == 1) - { - // Translate path and delete - $path = JPath::clean(str_replace(JPATH_ROOT, $ftpOptions['root'], $path), '/'); - - // FTP connector throws an error - $ret = $ftp->chmod($path, $mode); - } - else - { - return false; - } - - return $ret; - } -} diff --git a/administrator/components/com_joomlaupdate/models/default.php b/administrator/components/com_joomlaupdate/models/default.php index 91f9c30823a7c..5599de915a40e 100644 --- a/administrator/components/com_joomlaupdate/models/default.php +++ b/administrator/components/com_joomlaupdate/models/default.php @@ -290,16 +290,34 @@ protected function downloadPackage($url, $target) { JLoader::import('helpers.download', JPATH_COMPONENT_ADMINISTRATOR); JLog::add(JText::sprintf('COM_JOOMLAUPDATE_UPDATE_LOG_URL', $url), JLog::INFO, 'Update'); - $result = AdmintoolsHelperDownload::download($url, $target); - if (!$result) + // Get the handler to download the package + try + { + $http = JHttpFactory::getHttp(null, array('curl', 'stream')); + } + catch (RuntimeException $e) { return false; } - else + + jimport('joomla.filesystem.file'); + + // Make sure the target does not exist. + JFile::delete($target); + + // Download the package + $result = $http->get($url); + + if (!$result || ($result->code != 200 && $result->code != 310)) { - return basename($target); + return false; } + + // Write the file to disk + JFile::write($target, $result->body); + + return basename($target); } /** From c4f86b594659e0e344a3863208d78fae38f35f22 Mon Sep 17 00:00:00 2001 From: Roland Dalmulder Date: Wed, 20 Jan 2016 17:02:16 +0100 Subject: [PATCH 031/352] Only need to delete the file once. --- administrator/components/com_admin/script.php | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index f19dd97881779..dd060d1b4bd05 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -1397,7 +1397,6 @@ public function deleteUnexistingFiles() '/libraries/joomla/document/raw/raw.php', '/libraries/joomla/document/xml/xml.php', '/administrator/components/com_joomlaupdate/helpers/download.php', - '/administrator/components/com_joomlaupdate/helpers/download.php', ); // TODO There is an issue while deleting folders using the ftp mode From 0dec81c24377629012d5cdc6a4927af88354d33e Mon Sep 17 00:00:00 2001 From: Constantin Romankiewicz Date: Sun, 24 Jan 2016 19:39:23 +0100 Subject: [PATCH 032/352] Remove width/height for module edit button. --- media/system/js/frontediting-uncompressed.js | 2 +- media/system/js/frontediting.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/media/system/js/frontediting-uncompressed.js b/media/system/js/frontediting-uncompressed.js index 8919f6cf61d56..7f7c5f152420e 100644 --- a/media/system/js/frontediting-uncompressed.js +++ b/media/system/js/frontediting-uncompressed.js @@ -32,7 +32,7 @@ el.css({ position: "absolute", marginLeft: 0, marginTop: 0, top: pos.top, left: pos.left, - width: el.width(), height: el.height() + bottom: 'auto', right: 'auto' }); if (rebase) { diff --git a/media/system/js/frontediting.js b/media/system/js/frontediting.js index 5048329edc9a4..890098146fab6 100644 --- a/media/system/js/frontediting.js +++ b/media/system/js/frontediting.js @@ -1 +1 @@ -!function(t){t.fn.extend({jEditMakeAbsolute:function(e){return this.each(function(){var o,i=t(this);o=e?i.offset():i.position(),i.css({position:"absolute",marginLeft:0,marginTop:0,top:o.top,left:o.left,width:i.width(),height:i.height()}),e&&i.detach().appendTo("body")})}}),t(document).ready(function(){var e=200,o=100,i=function(i,n){var d,a,l,r,s,p,u,h,m,c,f,v,j,b,g;return v=function(t){return ut.left+e&&r>t.top+o},d=t(n),b=t.extend({},d.offset(),{width:n.offsetWidth,height:n.offsetHeight}),u=t(document).scrollTop(),s=t(document).scrollLeft(),p=s+t(window).width(),r=u+t(window).height(),h={top:b.top-o,left:b.left+b.width/2-e/2},m={top:b.top+b.height,left:b.left+b.width/2-e/2},c={top:b.top+b.height/2-o/2,left:b.left-e},f={top:b.top+b.height/2-o/2,left:b.left+b.width},a=v(h),l=v(m),j=v(c),g=v(f),a?"top":l?"bottom":j?"left":"right"};t(".jmoddiv").on({mouseenter:function(){var e=t(this).data("jmodediturl"),o=t(this).data("jmodtip"),n=t(this).data("target");t("body>.btn.jmodedit").clearQueue().tooltip("destroy").remove(),t(this).addClass("jmodinside").prepend('').children(":first").attr("href",e).attr("title",o).tooltip({container:!1,html:!0,placement:i}).jEditMakeAbsolute(!0),t(".btn.jmodedit").on({mouseenter:function(){t(this).clearQueue()},mouseleave:function(){t(this).delay(500).queue(function(e){t(this).tooltip("destroy").remove(),e()})}})},mouseleave:function(){t("body>.btn.jmodedit").delay(500).queue(function(e){t(this).tooltip("destroy").remove(),e()})}});var n=null;t(".jmoddiv[data-jmenuedittip] .nav li,.jmoddiv[data-jmenuedittip].nav li,.jmoddiv[data-jmenuedittip] .nav .nav-child li,.jmoddiv[data-jmenuedittip].nav .nav-child li").on({mouseenter:function(){var e=/\bitem-(\d+)\b/.exec(t(this).attr("class"));if("string"==typeof e[1])var o=t(this).closest(".jmoddiv"),i=o.data("jmodediturl"),d=i.replace(/\/index.php\?option=com_config&controller=config.display.modules([^\d]+).+$/,"/administrator/index.php?option=com_menus&view=item&layout=edit$1"+e[1]);var a=o.data("jmenuedittip").replace("%s",e[1]),l=t('
');l.children("a.jfedit-menu").prop("href",d).prop("title",a),n&&t(n).popover("hide"),t(this).popover({html:!0,content:l.html(),container:"body",trigger:"manual",animation:!1,placement:"bottom"}).popover("show"),n=this,t("body>div.popover").on({mouseenter:function(){n&&t(n).clearQueue()},mouseleave:function(){n&&t(n).popover("hide")}}).find("a.jfedit-menu").tooltip({container:!1,html:!0,placement:"bottom"})},mouseleave:function(){t(this).delay(1500).queue(function(e){t(this).popover("hide"),e()})}})})}(jQuery); \ No newline at end of file +!function(t){t.fn.extend({jEditMakeAbsolute:function(e){return this.each(function(){var o,i=t(this);o=e?i.offset():i.position(),i.css({position:"absolute",marginLeft:0,marginTop:0,top:o.top,left:o.left,bottom:"auto",right:"auto"}),e&&i.detach().appendTo("body")})}}),t(document).ready(function(){var e=200,o=100,i=function(i,n){var d,a,l,r,s,p,u,m,c,h,f,v,j,b,g;return v=function(t){return ut.left+e&&r>t.top+o},d=t(n),b=t.extend({},d.offset(),{width:n.offsetWidth,height:n.offsetHeight}),u=t(document).scrollTop(),s=t(document).scrollLeft(),p=s+t(window).width(),r=u+t(window).height(),m={top:b.top-o,left:b.left+b.width/2-e/2},c={top:b.top+b.height,left:b.left+b.width/2-e/2},h={top:b.top+b.height/2-o/2,left:b.left-e},f={top:b.top+b.height/2-o/2,left:b.left+b.width},a=v(m),l=v(c),j=v(h),g=v(f),a?"top":l?"bottom":j?"left":"right"};t(".jmoddiv").on({mouseenter:function(){var e=t(this).data("jmodediturl"),o=t(this).data("jmodtip"),n=t(this).data("target");t("body>.btn.jmodedit").clearQueue().tooltip("destroy").remove(),t(this).addClass("jmodinside").prepend('').children(":first").attr("href",e).attr("title",o).tooltip({container:!1,html:!0,placement:i}).jEditMakeAbsolute(!0),t(".btn.jmodedit").on({mouseenter:function(){t(this).clearQueue()},mouseleave:function(){t(this).delay(500).queue(function(e){t(this).tooltip("destroy").remove(),e()})}})},mouseleave:function(){t("body>.btn.jmodedit").delay(500).queue(function(e){t(this).tooltip("destroy").remove(),e()})}});var n=null;t(".jmoddiv[data-jmenuedittip] .nav li,.jmoddiv[data-jmenuedittip].nav li,.jmoddiv[data-jmenuedittip] .nav .nav-child li,.jmoddiv[data-jmenuedittip].nav .nav-child li").on({mouseenter:function(){var e=/\bitem-(\d+)\b/.exec(t(this).attr("class"));if("string"==typeof e[1])var o=t(this).closest(".jmoddiv"),i=o.data("jmodediturl"),d=i.replace(/\/index.php\?option=com_config&controller=config.display.modules([^\d]+).+$/,"/administrator/index.php?option=com_menus&view=item&layout=edit$1"+e[1]);var a=o.data("jmenuedittip").replace("%s",e[1]),l=t('
');l.children("a.jfedit-menu").prop("href",d).prop("title",a),n&&t(n).popover("hide"),t(this).popover({html:!0,content:l.html(),container:"body",trigger:"manual",animation:!1,placement:"bottom"}).popover("show"),n=this,t("body>div.popover").on({mouseenter:function(){n&&t(n).clearQueue()},mouseleave:function(){n&&t(n).popover("hide")}}).find("a.jfedit-menu").tooltip({container:!1,html:!0,placement:"bottom"})},mouseleave:function(){t(this).delay(1500).queue(function(e){t(this).popover("hide"),e()})}})})}(jQuery); \ No newline at end of file From 6c77d0bcfc07cae610cb0ed882af774fa104f765 Mon Sep 17 00:00:00 2001 From: Nicola Galgano Date: Wed, 27 Jan 2016 19:01:28 +0100 Subject: [PATCH 033/352] Tags - tagged items - fix TagsHelperRoute #### Steps to reproduce the issue #### Expected result #### Actual result #### Additional comments --- .../com_tags/views/tag/tmpl/default_items.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/components/com_tags/views/tag/tmpl/default_items.php b/components/com_tags/views/tag/tmpl/default_items.php index ffef4727a7cfb..86e250612d78b 100644 --- a/components/com_tags/views/tag/tmpl/default_items.php +++ b/components/com_tags/views/tag/tmpl/default_items.php @@ -65,11 +65,17 @@
  • -

    - + type_alias == 'com_users.category') || ($item->type_alias == 'com_banners.category')) : ?> +

    escape($item->core_title); ?> - -

    +

    + +

    + + escape($item->core_title); ?> + +

    + event->afterDisplayTitle; ?> From bbd1fa79c6ddc59603c12043cfd635e575a13d12 Mon Sep 17 00:00:00 2001 From: Nicola Galgano Date: Wed, 27 Jan 2016 19:29:56 +0100 Subject: [PATCH 034/352] similar tag module similar tag module same TagsHelperRoute::getItemRoute issue --- modules/mod_tags_similar/tmpl/default.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/mod_tags_similar/tmpl/default.php b/modules/mod_tags_similar/tmpl/default.php index 16785f60d61e7..52378304fd2cb 100644 --- a/modules/mod_tags_similar/tmpl/default.php +++ b/modules/mod_tags_similar/tmpl/default.php @@ -16,12 +16,18 @@ From 955d74bd1d5493af403c6ca3aa579d52d030b713 Mon Sep 17 00:00:00 2001 From: wojsmol Date: Tue, 2 Feb 2016 10:32:02 +0100 Subject: [PATCH 035/352] Add support for URLs with no protocol in JDocumentRenderer --- libraries/joomla/document/renderer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/joomla/document/renderer.php b/libraries/joomla/document/renderer.php index 247ad45882daf..eb9db1a3200f6 100644 --- a/libraries/joomla/document/renderer.php +++ b/libraries/joomla/document/renderer.php @@ -83,7 +83,7 @@ public function getContentType() protected function _relToAbs($text) { $base = JUri::base(); - $text = preg_replace("/(href|src)=\"(?!http|ftp|https|mailto|data)([^\"]*)\"/", "$1=\"$base\$2\"", $text); + $text = preg_replace("/(href|src)=\"(?!http|ftp|https|mailto|data|\/\/)([^\"]*)\"/", "$1=\"$base\$2\"", $text); return $text; } From bddf73faa11d74629c37e579ae012a4445ffc20e Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 9 Feb 2016 12:24:06 +0000 Subject: [PATCH 036/352] com_installer languages - jlayout searchtools and other UX improvments --- .../models/forms/filter_languages.xml | 37 +++++++++++++++ .../com_installer/models/languages.php | 19 +++----- .../views/languages/tmpl/default.php | 46 +++++++++---------- .../views/languages/tmpl/default_filter.php | 27 ----------- .../views/languages/view.html.php | 6 +++ 5 files changed, 70 insertions(+), 65 deletions(-) create mode 100644 administrator/components/com_installer/models/forms/filter_languages.xml delete mode 100644 administrator/components/com_installer/views/languages/tmpl/default_filter.php diff --git a/administrator/components/com_installer/models/forms/filter_languages.xml b/administrator/components/com_installer/models/forms/filter_languages.xml new file mode 100644 index 0000000000000..dfe99e8e9d099 --- /dev/null +++ b/administrator/components/com_installer/models/forms/filter_languages.xml @@ -0,0 +1,37 @@ + +
    + + + + + + + + + + + + + +
    diff --git a/administrator/components/com_installer/models/languages.php b/administrator/components/com_installer/models/languages.php index 6b0b827afba02..4268dad26dc7b 100644 --- a/administrator/components/com_installer/models/languages.php +++ b/administrator/components/com_installer/models/languages.php @@ -41,8 +41,8 @@ public function __construct($config = array()) if (empty($config['filter_fields'])) { $config['filter_fields'] = array( - 'update_id', 'update_id', - 'name', 'name', + 'update_id', + 'name', ); } @@ -122,17 +122,13 @@ protected function _getListQuery() // Filter by search in title $search = $this->getState('filter.search'); - if (!empty($search)) { - $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); - $query->where('(name LIKE ' . $search . ')'); + $query->where('(name LIKE ' . $db->quote('%' . str_replace(' ', '%', $db->escape(trim($this->getState('filter.search')), true) . '%')) . ')'); } // Add the list ordering clause. - $listOrder = $this->state->get('list.ordering'); - $orderDirn = $this->state->get('list.direction'); - $query->order($db->escape($listOrder) . ' ' . $db->escape($orderDirn)); + $query->order($db->escape($this->getState('list.ordering')) . ' ' . $db->escape($this->getState('list.direction'))); return $query; } @@ -168,12 +164,9 @@ protected function getStoreId($id = '') */ protected function populateState($ordering = 'name', $direction = 'asc') { - $app = JFactory::getApplication(); - - $value = $app->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); - $this->setState('filter.search', $value); + $this->setState('filter.search', $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search')); - $this->setState('extension_message', $app->getUserState('com_installer.extension_message')); + $this->setState('extension_message', JFactory::getApplication()->getUserState('com_installer.extension_message')); parent::populateState($ordering, $direction); } diff --git a/administrator/components/com_installer/views/languages/tmpl/default.php b/administrator/components/com_installer/views/languages/tmpl/default.php index b1f445d96faef..961488d5ffc98 100644 --- a/administrator/components/com_installer/views/languages/tmpl/default.php +++ b/administrator/components/com_installer/views/languages/tmpl/default.php @@ -29,21 +29,22 @@
    - items) || $this->escape($this->state->get('filter.search'))) : ?> - loadTemplate('filter'); ?> - items)) : ?> -
    - -
    - + items) : ?> + $this, 'options' => array('filterButton' => false))); ?> +
    + items)) : ?> +
    + +
    + - - @@ -75,22 +76,21 @@
    + - + @@ -54,8 +55,8 @@ - + +
    - version; ?> + + version, 0, 3) != $version::RELEASE || substr($language->version, 0, 5) != $version->getShortVersion()) : ?> + version; ?> + + version; ?> + type)); ?> - detailsurl; ?> + detailsurl; ?> update_id; ?> @@ -99,15 +99,11 @@
    + +
    - -
    - - - -
    diff --git a/administrator/components/com_installer/views/languages/tmpl/default_filter.php b/administrator/components/com_installer/views/languages/tmpl/default_filter.php deleted file mode 100644 index 7e3a989fd97eb..0000000000000 --- a/administrator/components/com_installer/views/languages/tmpl/default_filter.php +++ /dev/null @@ -1,27 +0,0 @@ - -
    -
    - - pagination->getLimitBox(); ?> -
    - -
    - - -
    -
    -
    diff --git a/administrator/components/com_installer/views/languages/view.html.php b/administrator/components/com_installer/views/languages/view.html.php index 00d439925fed3..37c0ad72483e6 100644 --- a/administrator/components/com_installer/views/languages/view.html.php +++ b/administrator/components/com_installer/views/languages/view.html.php @@ -51,6 +51,12 @@ public function display($tpl = null) $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); + if ($this->getLayout() == 'default') + { + $this->filterForm = $this->get('FilterForm'); + $this->activeFilters = $this->get('ActiveFilters'); + } + // Check for errors. if (count($errors = $this->get('Errors'))) { From a274a7781b88964010484dbce444022722584e5e Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 9 Feb 2016 12:31:51 +0000 Subject: [PATCH 037/352] missing ) --- .../components/com_installer/views/languages/tmpl/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_installer/views/languages/tmpl/default.php b/administrator/components/com_installer/views/languages/tmpl/default.php index 961488d5ffc98..66e8e2cc8e07f 100644 --- a/administrator/components/com_installer/views/languages/tmpl/default.php +++ b/administrator/components/com_installer/views/languages/tmpl/default.php @@ -29,7 +29,7 @@
    - items) : ?> + items)) : ?> $this, 'options' => array('filterButton' => false))); ?>
    items)) : ?> From a26b96ea97e1d7f53dee8b05afe49ebc6ace97d0 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 9 Feb 2016 12:39:48 +0000 Subject: [PATCH 038/352] code and ux improvements --- .../views/languages/tmpl/default.php | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/administrator/components/com_installer/views/languages/tmpl/default.php b/administrator/components/com_installer/views/languages/tmpl/default.php index 66e8e2cc8e07f..76daa88efa0dd 100644 --- a/administrator/components/com_installer/views/languages/tmpl/default.php +++ b/administrator/components/com_installer/views/languages/tmpl/default.php @@ -16,8 +16,6 @@ $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); -$version = new JVersion; - ?>
    @@ -28,14 +26,14 @@
    - - items)) : ?> - $this, 'options' => array('filterButton' => false))); ?> -
    + + items)) : ?> + $this, 'options' => array('filterButton' => false))); ?> +
    items)) : ?> -
    - -
    +
    + +
    @@ -49,10 +47,10 @@ - - + items as $i => $language) : ?>
    + + @@ -68,6 +66,7 @@
    @@ -99,6 +98,7 @@
    +
    From ab1e607d0366b5baaaba1972635c388d3076e613 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 9 Feb 2016 16:36:17 +0000 Subject: [PATCH 039/352] flags for nn_no and ug_cn --- media/mod_languages/images/nn_no.gif | Bin 0 -> 74 bytes media/mod_languages/images/ug_cn.gif | Bin 0 -> 161 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 media/mod_languages/images/nn_no.gif create mode 100644 media/mod_languages/images/ug_cn.gif diff --git a/media/mod_languages/images/nn_no.gif b/media/mod_languages/images/nn_no.gif new file mode 100644 index 0000000000000000000000000000000000000000..51295cdf76540bca88ba4d5d778242e894598699 GIT binary patch literal 74 zcmZ?wbh9u|6k_0E_{hNU|Nnmh`L6fcx(o~qIzY?-5_e!yp28|v@OIj@>;++|#mg$> bSlg0Lc+L|xOkY{`SUYRRvW=^2#TcvsGz=J& literal 0 HcmV?d00001 diff --git a/media/mod_languages/images/ug_cn.gif b/media/mod_languages/images/ug_cn.gif new file mode 100644 index 0000000000000000000000000000000000000000..384522b664c3ecb8124b2a095564c21bd4cc3f60 GIT binary patch literal 161 zcmZ?wbh9u|6k_0E_#(papPk`<5ySsdhW}*@|4kVF^D_MBX88Y~;r|1M|4a=3*E0NX zWcaVm@V}7ZzaPVYDTe>%4FBsH{wFc~XJGg*%0Lk4fK-6&a$r?^pwgF;Iq$_0iwh|% iFEtbe1566ny?<;R*mU>N0uLXKJ@*w(=2$s1SOWk Date: Tue, 9 Feb 2016 16:38:51 +0000 Subject: [PATCH 040/352] now with flags and language code --- .../models/forms/filter_languages.xml | 4 +++- .../com_installer/models/languages.php | 3 ++- .../views/languages/tmpl/default.php | 22 ++++++++++++++----- .../language/en-GB/en-GB.com_installer.ini | 3 +++ 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/administrator/components/com_installer/models/forms/filter_languages.xml b/administrator/components/com_installer/models/forms/filter_languages.xml index dfe99e8e9d099..d5eeec1fd34e3 100644 --- a/administrator/components/com_installer/models/forms/filter_languages.xml +++ b/administrator/components/com_installer/models/forms/filter_languages.xml @@ -16,13 +16,15 @@ label="JGLOBAL_SORT_BY" description="JGLOBAL_SORT_BY" onchange="this.form.submit();" - default="name DESC" + default="name ASC" > + + getQuery(true); // Select the required fields from the updates table. - $query->select($db->quoteName(array('update_id', 'name', 'version', 'detailsurl', 'type'))) + $query->select($db->quoteName(array('update_id', 'name', 'element', 'version', 'detailsurl', 'type'))) ->from($db->quoteName('#__updates')); /* diff --git a/administrator/components/com_installer/views/languages/tmpl/default.php b/administrator/components/com_installer/views/languages/tmpl/default.php index 76daa88efa0dd..9dc9e05525ffe 100644 --- a/administrator/components/com_installer/views/languages/tmpl/default.php +++ b/administrator/components/com_installer/views/languages/tmpl/default.php @@ -44,10 +44,13 @@ - + + + + - + @@ -68,16 +71,25 @@ items as $i => $language) : ?> + element, $element); + $language->code = $element[1]; + $language->image = strtolower(str_replace('-', '_', $language->code)); + ?> update_id, false, 'cid'); ?> - + + code; ?> + + version, 0, 3) != $version::RELEASE || substr($language->version, 0, 5) != $version->getShortVersion()) : ?> version; ?> @@ -85,7 +97,7 @@ version; ?> - + type)); ?> diff --git a/administrator/language/en-GB/en-GB.com_installer.ini b/administrator/language/en-GB/en-GB.com_installer.ini index 3aaa71a514ea5..5d3be82efa01b 100644 --- a/administrator/language/en-GB/en-GB.com_installer.ini +++ b/administrator/language/en-GB/en-GB.com_installer.ini @@ -40,6 +40,9 @@ COM_INSTALLER_HEADING_DETAILSURL="URL Details" COM_INSTALLER_HEADING_FOLDER="Folder" COM_INSTALLER_HEADING_ID="ID" COM_INSTALLER_HEADING_INSTALLTYPE="Install Type" +COM_INSTALLER_HEADING_LANGUAGECODE="Language Code" +COM_INSTALLER_HEADING_LANGUAGECODE_ASC="Language Code ascending" +COM_INSTALLER_HEADING_LANGUAGECODE_DESC="Language Code descending" COM_INSTALLER_HEADING_LOCATION="Location" COM_INSTALLER_HEADING_NAME="Name" COM_INSTALLER_HEADING_TYPE="Type" From d58155557bc2d8fbe98376d45427e7d270342304 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 9 Feb 2016 17:10:21 +0000 Subject: [PATCH 041/352] cs --- .../components/com_installer/views/languages/tmpl/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_installer/views/languages/tmpl/default.php b/administrator/components/com_installer/views/languages/tmpl/default.php index 9dc9e05525ffe..60d20b6880285 100644 --- a/administrator/components/com_installer/views/languages/tmpl/default.php +++ b/administrator/components/com_installer/views/languages/tmpl/default.php @@ -83,7 +83,7 @@ From 24207bf6dced2a53fca4bf23fb91c82fefbca3cf Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 9 Feb 2016 17:18:34 +0000 Subject: [PATCH 042/352] add old filter box to delete files list --- administrator/components/com_admin/script.php | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 07e2dac05d356..27e55d20a4260 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -1407,6 +1407,7 @@ public function deleteUnexistingFiles() '/libraries/joomla/document/opensearch/opensearch.php', '/libraries/joomla/document/raw/raw.php', '/libraries/joomla/document/xml/xml.php', + '/administrator/components/com_installer/views/languages/tmpl/default_filter.php', ); // TODO There is an issue while deleting folders using the ftp mode From d4e73aaa29be5ce41a1d42bbe725ccdf09e4cca2 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 9 Feb 2016 17:29:52 +0000 Subject: [PATCH 043/352] use the same order as columns --- .../com_installer/models/forms/filter_languages.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_installer/models/forms/filter_languages.xml b/administrator/components/com_installer/models/forms/filter_languages.xml index d5eeec1fd34e3..ace450fcbb383 100644 --- a/administrator/components/com_installer/models/forms/filter_languages.xml +++ b/administrator/components/com_installer/models/forms/filter_languages.xml @@ -21,10 +21,10 @@ - - + + Date: Tue, 9 Feb 2016 17:51:53 +0000 Subject: [PATCH 044/352] always show searchtools --- .../components/com_installer/views/languages/tmpl/default.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/administrator/components/com_installer/views/languages/tmpl/default.php b/administrator/components/com_installer/views/languages/tmpl/default.php index 60d20b6880285..6ac26c0f1be2b 100644 --- a/administrator/components/com_installer/views/languages/tmpl/default.php +++ b/administrator/components/com_installer/views/languages/tmpl/default.php @@ -27,7 +27,6 @@
    - items)) : ?> $this, 'options' => array('filterButton' => false))); ?>
    items)) : ?> @@ -111,9 +110,6 @@ - -
    - From 1e62347bc32ebea218c99b9e58afb3c0bec85c73 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Tue, 9 Feb 2016 19:52:40 +0100 Subject: [PATCH 045/352] Delete si_LK.gif --- media/mod_languages/images/si_LK.gif | Bin 206 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 media/mod_languages/images/si_LK.gif diff --git a/media/mod_languages/images/si_LK.gif b/media/mod_languages/images/si_LK.gif deleted file mode 100644 index 3c0c873f0d6c04c3282a3df954b22a223abf75a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmZ?wbhEHb6k_0EIKsfNe*OCU_wV=j_t)3g@87@w{Q2|p^78NBzjttOFf}zzPEO9x z&ySCf*Votg_xGPaf4;rF{r~^}8HfgoKUu(PbwDJ@P6k%*1eLy&%y}8BtOS%-q$nwz z`eDHBBE$5>g{8UqB7=z-kB4$WilH3;fyD>9926RlKG0$iVLQWigt0+Kj_=xAM#Db| Q6B$+)Hr#&yLx8~=02Z-54gdfE From 43fc9a815927567e86abccd68bfec4222af90432 Mon Sep 17 00:00:00 2001 From: richard67 Date: Tue, 9 Feb 2016 19:55:42 +0100 Subject: [PATCH 046/352] Renamed language flag image si_LK.gif to si_lk.gif --- media/mod_languages/images/si_lk.gif | Bin 0 -> 206 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 media/mod_languages/images/si_lk.gif diff --git a/media/mod_languages/images/si_lk.gif b/media/mod_languages/images/si_lk.gif new file mode 100644 index 0000000000000000000000000000000000000000..3c0c873f0d6c04c3282a3df954b22a223abf75a0 GIT binary patch literal 206 zcmZ?wbhEHb6k_0EIKsfNe*OCU_wV=j_t)3g@87@w{Q2|p^78NBzjttOFf}zzPEO9x z&ySCf*Votg_xGPaf4;rF{r~^}8HfgoKUu(PbwDJ@P6k%*1eLy&%y}8BtOS%-q$nwz z`eDHBBE$5>g{8UqB7=z-kB4$WilH3;fyD>9926RlKG0$iVLQWigt0+Kj_=xAM#Db| Q6B$+)Hr#&yLx8~=02Z-54gdfE literal 0 HcmV?d00001 From 1a86bc7be4f52ce70eb3a6abd52edceda68b7124 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 9 Feb 2016 22:10:23 +0000 Subject: [PATCH 047/352] adds default language --- administrator/components/com_installer/models/languages.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_installer/models/languages.php b/administrator/components/com_installer/models/languages.php index cea0e24930760..91cc67aec3f00 100644 --- a/administrator/components/com_installer/models/languages.php +++ b/administrator/components/com_installer/models/languages.php @@ -129,7 +129,7 @@ protected function _getListQuery() } // Add the list ordering clause. - $query->order($db->escape($this->getState('list.ordering')) . ' ' . $db->escape($this->getState('list.direction'))); + $query->order($db->escape($this->getState('list.ordering', 'name')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } From df771588a32445c37379305e8d303b0a60c92489 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Wed, 10 Feb 2016 20:25:53 +0000 Subject: [PATCH 048/352] remove language flags from default --- .../components/com_installer/views/languages/tmpl/default.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/administrator/components/com_installer/views/languages/tmpl/default.php b/administrator/components/com_installer/views/languages/tmpl/default.php index 6ac26c0f1be2b..742dd966808d8 100644 --- a/administrator/components/com_installer/views/languages/tmpl/default.php +++ b/administrator/components/com_installer/views/languages/tmpl/default.php @@ -74,7 +74,6 @@ // Get language code and language image. preg_match('#^pkg_([a-z]{2,3}-[A-Z]{2})$#', $language->element, $element); $language->code = $element[1]; - $language->image = strtolower(str_replace('-', '_', $language->code)); ?> @@ -82,7 +81,7 @@ From 73b4aedad3a4ca1b8f7fc3c16090321cd8da16bd Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Wed, 10 Feb 2016 20:28:30 +0000 Subject: [PATCH 049/352] code improvements --- .../com_installer/views/languages/tmpl/default.php | 9 +++++---- .../com_installer/views/languages/view.html.php | 14 +++++--------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/administrator/components/com_installer/views/languages/tmpl/default.php b/administrator/components/com_installer/views/languages/tmpl/default.php index 742dd966808d8..13f8d9163332d 100644 --- a/administrator/components/com_installer/views/languages/tmpl/default.php +++ b/administrator/components/com_installer/views/languages/tmpl/default.php @@ -68,9 +68,10 @@ - - items as $i => $language) : ?> - getShortVersion()); + foreach ($this->items as $i => $language) : // Get language code and language image. preg_match('#^pkg_([a-z]{2,3}-[A-Z]{2})$#', $language->element, $element); $language->code = $element[1]; @@ -89,7 +90,7 @@ - version, 0, 3) != $version::RELEASE || substr($language->version, 0, 5) != $version->getShortVersion()) : ?> + version, 0, 3) != $version::RELEASE || substr($language->version, 0, 5) != $currentShortVersion) : ?> version; ?> version; ?> diff --git a/administrator/components/com_installer/views/languages/view.html.php b/administrator/components/com_installer/views/languages/view.html.php index 37c0ad72483e6..0ffb1b9e836c8 100644 --- a/administrator/components/com_installer/views/languages/view.html.php +++ b/administrator/components/com_installer/views/languages/view.html.php @@ -47,15 +47,11 @@ public function display($tpl = null) $this->model->findLanguages(); // Get data from the model. - $this->state = $this->get('State'); - $this->items = $this->get('Items'); - $this->pagination = $this->get('Pagination'); - - if ($this->getLayout() == 'default') - { - $this->filterForm = $this->get('FilterForm'); - $this->activeFilters = $this->get('ActiveFilters'); - } + $this->state = $this->get('State'); + $this->items = $this->get('Items'); + $this->pagination = $this->get('Pagination'); + $this->filterForm = $this->get('FilterForm'); + $this->activeFilters = $this->get('ActiveFilters'); // Check for errors. if (count($errors = $this->get('Errors'))) From 3b1f7f7322073120a69a4c1332bed716cd5264d1 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Wed, 10 Feb 2016 21:23:43 +0000 Subject: [PATCH 050/352] minor improvement --- administrator/components/com_installer/models/languages.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_installer/models/languages.php b/administrator/components/com_installer/models/languages.php index 91cc67aec3f00..3ed0e06e97e9d 100644 --- a/administrator/components/com_installer/models/languages.php +++ b/administrator/components/com_installer/models/languages.php @@ -125,7 +125,7 @@ protected function _getListQuery() $search = $this->getState('filter.search'); if (!empty($search)) { - $query->where('(name LIKE ' . $db->quote('%' . str_replace(' ', '%', $db->escape(trim($this->getState('filter.search')), true) . '%')) . ')'); + $query->where('(name LIKE ' . $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')) . ')'); } // Add the list ordering clause. From 6fc60cf4ad2f927fcdd0bea81792e0696c3dd5de Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Wed, 10 Feb 2016 21:26:21 +0000 Subject: [PATCH 051/352] don't replace ug_cn lang image --- media/mod_languages/images/ug_cn.gif | Bin 161 -> 544 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/media/mod_languages/images/ug_cn.gif b/media/mod_languages/images/ug_cn.gif index 384522b664c3ecb8124b2a095564c21bd4cc3f60..a4834d53d5f13e219af342a7d260f90796ff2aee 100644 GIT binary patch literal 544 zcmZ?wbhEHb6k_0Ec*el+|NnnqU*E2-uD-s$^78T3#kB_1m{^+qZA$=H@OeEL^c-MO0MOuV26B&YgSm zgsZHbJwg{ z^Xb#4;^N|xl9IoF|IV2+XVt1zFJ8Q8Zf>46Yu5Sm=PzEoIC0{{1q&9qySq=AFyZ<0 z=S!C^{qyHfW@ct+Xy}tCPmUZpGHKGJ=;-L$+S+&T-nqKE+S%EOii*0pxG)TQp!kyo z>_#0B35pX2_Sy!9rskH`w)Tz|Ci8ZFJqAwI7A=`3aqDI&6$T#07NI6dLv{uoF0LkN zHU?HF23ZLPU3U!z8w&%4FBsH{wFc~XJGg*%0Lk4fK-6&a$r?^pwgF;Iq$_0iwh|% iFEtbe1566ny?<;R*mU>N0uLXKJ@*w(=2$s1SOWk Date: Wed, 10 Feb 2016 22:37:07 +0000 Subject: [PATCH 052/352] language code left aligned --- .../components/com_installer/views/languages/tmpl/default.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_installer/views/languages/tmpl/default.php b/administrator/components/com_installer/views/languages/tmpl/default.php index 13f8d9163332d..3b7439d799371 100644 --- a/administrator/components/com_installer/views/languages/tmpl/default.php +++ b/administrator/components/com_installer/views/languages/tmpl/default.php @@ -43,7 +43,7 @@ - + @@ -85,7 +85,7 @@ name; ?> - + code; ?> From fe2e15da299a12e53c85d82c438cec6c4aaa02b9 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Thu, 11 Feb 2016 22:08:11 +0000 Subject: [PATCH 053/352] removed type, nowrap and mobile friendly --- .../com_installer/models/languages.php | 2 +- .../views/languages/tmpl/default.php | 18 ++++++------------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/administrator/components/com_installer/models/languages.php b/administrator/components/com_installer/models/languages.php index 3ed0e06e97e9d..8c7e5dbc1be5d 100644 --- a/administrator/components/com_installer/models/languages.php +++ b/administrator/components/com_installer/models/languages.php @@ -165,7 +165,7 @@ protected function getStoreId($id = '') */ protected function populateState($ordering = 'name', $direction = 'asc') { - $this->setState('filter.search', $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search')); + $this->setState('filter.search', $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search', '', 'string')); $this->setState('extension_message', JFactory::getApplication()->getUserState('com_installer.extension_message')); diff --git a/administrator/components/com_installer/views/languages/tmpl/default.php b/administrator/components/com_installer/views/languages/tmpl/default.php index 3b7439d799371..a35b3541c577c 100644 --- a/administrator/components/com_installer/views/languages/tmpl/default.php +++ b/administrator/components/com_installer/views/languages/tmpl/default.php @@ -18,7 +18,7 @@ ?>
    - + sidebar)) : ?>
    sidebar; ?> @@ -43,15 +43,12 @@ - + - - - @@ -62,7 +59,7 @@ - + pagination->getListFooter(); ?> @@ -85,10 +82,10 @@ name; ?> - + code; ?> - + version, 0, 3) != $version::RELEASE || substr($language->version, 0, 5) != $currentShortVersion) : ?> version; ?> @@ -96,13 +93,10 @@ version; ?> - - type)); ?> - detailsurl; ?> - + update_id; ?> From e984017446b86781ddde51a5b7a4a52cfa540963 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Thu, 11 Feb 2016 22:37:09 +0000 Subject: [PATCH 054/352] Language Tag, not Code! --- .../com_installer/models/forms/filter_languages.xml | 4 ++-- .../components/com_installer/views/languages/tmpl/default.php | 2 +- administrator/language/en-GB/en-GB.com_installer.ini | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/administrator/components/com_installer/models/forms/filter_languages.xml b/administrator/components/com_installer/models/forms/filter_languages.xml index ace450fcbb383..63f91444fc926 100644 --- a/administrator/components/com_installer/models/forms/filter_languages.xml +++ b/administrator/components/com_installer/models/forms/filter_languages.xml @@ -21,8 +21,8 @@ - - + + diff --git a/administrator/components/com_installer/views/languages/tmpl/default.php b/administrator/components/com_installer/views/languages/tmpl/default.php index a35b3541c577c..42348f945197b 100644 --- a/administrator/components/com_installer/views/languages/tmpl/default.php +++ b/administrator/components/com_installer/views/languages/tmpl/default.php @@ -44,7 +44,7 @@ - + diff --git a/administrator/language/en-GB/en-GB.com_installer.ini b/administrator/language/en-GB/en-GB.com_installer.ini index 5d3be82efa01b..0ea692c9f6818 100644 --- a/administrator/language/en-GB/en-GB.com_installer.ini +++ b/administrator/language/en-GB/en-GB.com_installer.ini @@ -43,6 +43,9 @@ COM_INSTALLER_HEADING_INSTALLTYPE="Install Type" COM_INSTALLER_HEADING_LANGUAGECODE="Language Code" COM_INSTALLER_HEADING_LANGUAGECODE_ASC="Language Code ascending" COM_INSTALLER_HEADING_LANGUAGECODE_DESC="Language Code descending" +COM_INSTALLER_HEADING_LANGUAGE_TAG="Language Tag" +COM_INSTALLER_HEADING_LANGUAGE_TAG_ASC="Language Tag ascending" +COM_INSTALLER_HEADING_LANGUAGE_TAG_DESC="Language Tag descending" COM_INSTALLER_HEADING_LOCATION="Location" COM_INSTALLER_HEADING_NAME="Name" COM_INSTALLER_HEADING_TYPE="Type" From 1f55d334c78a8a2ba7b2b9ef55aaa6b362087382 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Fri, 12 Feb 2016 14:12:07 +0000 Subject: [PATCH 055/352] remove language code language variable --- administrator/language/en-GB/en-GB.com_installer.ini | 3 --- 1 file changed, 3 deletions(-) diff --git a/administrator/language/en-GB/en-GB.com_installer.ini b/administrator/language/en-GB/en-GB.com_installer.ini index 0ea692c9f6818..398d29b2fcddb 100644 --- a/administrator/language/en-GB/en-GB.com_installer.ini +++ b/administrator/language/en-GB/en-GB.com_installer.ini @@ -40,9 +40,6 @@ COM_INSTALLER_HEADING_DETAILSURL="URL Details" COM_INSTALLER_HEADING_FOLDER="Folder" COM_INSTALLER_HEADING_ID="ID" COM_INSTALLER_HEADING_INSTALLTYPE="Install Type" -COM_INSTALLER_HEADING_LANGUAGECODE="Language Code" -COM_INSTALLER_HEADING_LANGUAGECODE_ASC="Language Code ascending" -COM_INSTALLER_HEADING_LANGUAGECODE_DESC="Language Code descending" COM_INSTALLER_HEADING_LANGUAGE_TAG="Language Tag" COM_INSTALLER_HEADING_LANGUAGE_TAG_ASC="Language Tag ascending" COM_INSTALLER_HEADING_LANGUAGE_TAG_DESC="Language Tag descending" From b02b0a0f25ef2998dfc65609b289344bb71ea03a Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Fri, 12 Feb 2016 14:13:02 +0000 Subject: [PATCH 056/352] colspan should be 6 --- .../components/com_installer/views/languages/tmpl/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_installer/views/languages/tmpl/default.php b/administrator/components/com_installer/views/languages/tmpl/default.php index 42348f945197b..6693d9cf16a36 100644 --- a/administrator/components/com_installer/views/languages/tmpl/default.php +++ b/administrator/components/com_installer/views/languages/tmpl/default.php @@ -59,7 +59,7 @@ - + pagination->getListFooter(); ?> From 203d132848646586e28df931910175efdd2b1fec Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 20 Feb 2016 16:57:08 +0000 Subject: [PATCH 057/352] messages, code improvments --- .../components/com_cache/controller.php | 36 ++++++++++--------- .../components/com_cache/helpers/cache.php | 2 ++ .../components/com_cache/models/cache.php | 20 ++++++----- .../language/en-GB/en-GB.com_cache.ini | 2 ++ 4 files changed, 35 insertions(+), 25 deletions(-) diff --git a/administrator/components/com_cache/controller.php b/administrator/components/com_cache/controller.php index 37edb29aa7157..1e99435b412cf 100644 --- a/administrator/components/com_cache/controller.php +++ b/administrator/components/com_cache/controller.php @@ -76,18 +76,24 @@ public function delete() $cid = $this->input->post->get('cid', array(), 'array'); - $model = $this->getModel('cache'); - if (empty($cid)) { - JError::raiseWarning(500, JText::_('JERROR_NO_ITEMS_SELECTED')); + throw new Exception(JText::_('JERROR_NO_ITEMS_SELECTED'), 500); } else { - $model->cleanlist($cid); - } + $result = $this->getModel('cache')->cleanlist($cid); - $this->setRedirect('index.php?option=com_cache&client=' . $model->getClient()->id); + if ($result !== array()) + { + JFactory::getApplication()->enqueueMessage(JText::sprintf('COM_CACHE_EXPIRED_ITEMS_DELETE_ERROR', implode(', ', $result)), 'error'); + } + else + { + JFactory::getApplication()->enqueueMessage(JText::_('COM_CACHE_EXPIRED_ITEMS_HAVE_BEEN_DELETED'), 'message'); + } + } + $this->setRedirect('index.php?option=com_cache'); } /** @@ -100,18 +106,14 @@ public function purge() // Check for request forgeries JSession::checkToken() or jexit(JText::_('JInvalid_Token')); - $model = $this->getModel('cache'); - $ret = $model->purge(); - - $msg = JText::_('COM_CACHE_EXPIRED_ITEMS_HAVE_BEEN_PURGED'); - $msgType = 'message'; - - if ($ret === false) + if (!$this->getModel('cache')->purge()) { - $msg = JText::_('COM_CACHE_EXPIRED_ITEMS_PURGING_ERROR'); - $msgType = 'error'; + JFactory::getApplication()->enqueueMessage(JText::_('COM_CACHE_EXPIRED_ITEMS_PURGING_ERROR'), 'error'); } - - $this->setRedirect('index.php?option=com_cache&view=purge', $msg, $msgType); + else + { + JFactory::getApplication()->enqueueMessage(JText::_('COM_CACHE_EXPIRED_ITEMS_HAVE_BEEN_PURGED'), 'message'); + } + $this->setRedirect('index.php?option=com_cache&view=purge'); } } diff --git a/administrator/components/com_cache/helpers/cache.php b/administrator/components/com_cache/helpers/cache.php index 034bbb8d697fd..9b9e61e307d93 100644 --- a/administrator/components/com_cache/helpers/cache.php +++ b/administrator/components/com_cache/helpers/cache.php @@ -20,6 +20,8 @@ class CacheHelper * Get a list of filter options for the application clients. * * @return array An array of JHtmlOption elements. + * + * @deprecated 4.0 No replacement. */ public static function getClientOptions() { diff --git a/administrator/components/com_cache/models/cache.php b/administrator/components/com_cache/models/cache.php index 0fe044520005c..250a7f891c2a7 100644 --- a/administrator/components/com_cache/models/cache.php +++ b/administrator/components/com_cache/models/cache.php @@ -226,12 +226,11 @@ public function getPagination() * * @param string $group Cache group name. * - * @return void + * @return boolean True on success, false otherwise */ public function clean($group = '') { - $cache = $this->getCache(); - $cache->clean($group); + return $this->getCache()->clean($group); } /** @@ -239,14 +238,21 @@ public function clean($group = '') * * @param array $array Array of cache group names. * - * @return void + * @return array Array with errors, if they exist. */ public function cleanlist($array) { + $errors = array(); + foreach ($array as $group) { - $this->clean($group); + if (!$this->clean($group)) + { + $errors[] = $group; + } } + + return $errors; } /** @@ -256,8 +262,6 @@ public function cleanlist($array) */ public function purge() { - $cache = JFactory::getCache(''); - - return $cache->gc(); + return JFactory::getCache('')->gc(); } } diff --git a/administrator/language/en-GB/en-GB.com_cache.ini b/administrator/language/en-GB/en-GB.com_cache.ini index a629c5cdbd612..cf94d96bf21f4 100644 --- a/administrator/language/en-GB/en-GB.com_cache.ini +++ b/administrator/language/en-GB/en-GB.com_cache.ini @@ -9,7 +9,9 @@ COM_CACHE_CLEAR_CACHE_ADMIN="Clear Cache Administrator" COM_CACHE_CLEAR_CACHE="Maintenance: Clear Cache" COM_CACHE_PURGE_EXPIRED_CACHE="Maintenance: Clear Expired Cache" COM_CACHE_CONFIGURATION="Cache: Options" +COM_CACHE_EXPIRED_ITEMS_HAVE_BEEN_DELETED="The selected cached items have been cleared." COM_CACHE_EXPIRED_ITEMS_HAVE_BEEN_PURGED="Expired items have been cleared." +COM_CACHE_EXPIRED_ITEMS_DELETE_ERROR="Error clearing cached group(s): %s." COM_CACHE_EXPIRED_ITEMS_PURGING_ERROR="Error clearing expired items." COM_CACHE_GROUP="Cache Group" COM_CACHE_HEADING_GROUP_ASC="Cache Group ascending" From 5f20aecc58f1a8eed3e0bed365c4ef5e536db11e Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 20 Feb 2016 17:05:14 +0000 Subject: [PATCH 058/352] deprecate getClient --- administrator/components/com_cache/models/cache.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/administrator/components/com_cache/models/cache.php b/administrator/components/com_cache/models/cache.php index 250a7f891c2a7..810a22c77ad23 100644 --- a/administrator/components/com_cache/models/cache.php +++ b/administrator/components/com_cache/models/cache.php @@ -184,6 +184,8 @@ public function getCache() * Method to get client data. * * @return array + * + * @deprecated 4.0 No replacement. */ public function getClient() { From 67d573f17c15296e18ec41e2d717baa71b05e130 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 20 Feb 2016 17:41:20 +0000 Subject: [PATCH 059/352] no need for a exception, just a warning --- administrator/components/com_cache/controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_cache/controller.php b/administrator/components/com_cache/controller.php index 1e99435b412cf..2674dc507b075 100644 --- a/administrator/components/com_cache/controller.php +++ b/administrator/components/com_cache/controller.php @@ -78,7 +78,7 @@ public function delete() if (empty($cid)) { - throw new Exception(JText::_('JERROR_NO_ITEMS_SELECTED'), 500); + JFactory::getApplication()->enqueueMessage(JText::_('JERROR_NO_ITEMS_SELECTED'), 'warning'); } else { From e44e0e5ed4e1519509a0cab97caaf4f9a87261d8 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 20 Feb 2016 17:57:19 +0000 Subject: [PATCH 060/352] improvments in messages --- administrator/language/en-GB/en-GB.com_cache.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/administrator/language/en-GB/en-GB.com_cache.ini b/administrator/language/en-GB/en-GB.com_cache.ini index cf94d96bf21f4..d2181382a1fba 100644 --- a/administrator/language/en-GB/en-GB.com_cache.ini +++ b/administrator/language/en-GB/en-GB.com_cache.ini @@ -9,10 +9,10 @@ COM_CACHE_CLEAR_CACHE_ADMIN="Clear Cache Administrator" COM_CACHE_CLEAR_CACHE="Maintenance: Clear Cache" COM_CACHE_PURGE_EXPIRED_CACHE="Maintenance: Clear Expired Cache" COM_CACHE_CONFIGURATION="Cache: Options" -COM_CACHE_EXPIRED_ITEMS_HAVE_BEEN_DELETED="The selected cached items have been cleared." -COM_CACHE_EXPIRED_ITEMS_HAVE_BEEN_PURGED="Expired items have been cleared." -COM_CACHE_EXPIRED_ITEMS_DELETE_ERROR="Error clearing cached group(s): %s." -COM_CACHE_EXPIRED_ITEMS_PURGING_ERROR="Error clearing expired items." +COM_CACHE_EXPIRED_ITEMS_HAVE_BEEN_DELETED="The selected cache group(s) have been cleared." +COM_CACHE_EXPIRED_ITEMS_HAVE_BEEN_PURGED="Expired cached items have been cleared." +COM_CACHE_EXPIRED_ITEMS_DELETE_ERROR="Error clearing cache group(s): %s." +COM_CACHE_EXPIRED_ITEMS_PURGING_ERROR="Error clearing expired cached items." COM_CACHE_GROUP="Cache Group" COM_CACHE_HEADING_GROUP_ASC="Cache Group ascending" COM_CACHE_HEADING_GROUP_DESC="Cache Group descending" From 476a40beb11b3be2272d5bb9fbb93c63636ade1c Mon Sep 17 00:00:00 2001 From: Jelle Kok Date: Sun, 28 Feb 2016 04:21:50 +0100 Subject: [PATCH 061/352] Update spinner on joomlaupdate --- media/media/css/mediamanager.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/media/media/css/mediamanager.css b/media/media/css/mediamanager.css index 1fb10866f4234..d592e94366a05 100644 --- a/media/media/css/mediamanager.css +++ b/media/media/css/mediamanager.css @@ -151,6 +151,7 @@ div#media-noimages { .spinner { position: absolute; + left: 50%; opacity: 0.9; filter: alpha(opacity=90); -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=90); @@ -163,7 +164,7 @@ div#media-noimages { } .spinner-img { - background: url(../../system/images/modal/spinner.gif) no-repeat; + background: url(../../jui/images/ajax-loader.gif) no-repeat; width: 24px; height: 24px; margin: 0 auto; From 2005b2f61c4fa7952c18b0859196803338a247d5 Mon Sep 17 00:00:00 2001 From: Jelle Kok Date: Sun, 28 Feb 2016 05:15:58 +0100 Subject: [PATCH 062/352] Fix spinner height --- media/media/css/mediamanager.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/media/media/css/mediamanager.css b/media/media/css/mediamanager.css index d592e94366a05..aec16bdcc39e8 100644 --- a/media/media/css/mediamanager.css +++ b/media/media/css/mediamanager.css @@ -164,9 +164,9 @@ div#media-noimages { } .spinner-img { - background: url(../../jui/images/ajax-loader.gif) no-repeat; - width: 24px; - height: 24px; + background: url(../../jui/images/ajax-loader.gif) center no-repeat; + width: 66px; + height: 66px; margin: 0 auto; } From 8766904a8d0330f230b5c7f1fe3a18d740690686 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 1 Mar 2016 00:17:47 +0000 Subject: [PATCH 063/352] use https as default in install from url input field --- .../components/com_installer/views/install/tmpl/default.php | 4 ++-- .../hathor/html/com_installer/install/default_form.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/administrator/components/com_installer/views/install/tmpl/default.php b/administrator/components/com_installer/views/install/tmpl/default.php index c2342397991b3..5d88358fbbc5f 100644 --- a/administrator/components/com_installer/views/install/tmpl/default.php +++ b/administrator/components/com_installer/views/install/tmpl/default.php @@ -51,7 +51,7 @@ var form = document.getElementById("adminForm"); // do field validation - if (form.install_url.value == "" || form.install_url.value == "http://") { + if (form.install_url.value == "" || form.install_url.value == "http://" || form.install_url.value == "https://") { alert("' . JText::_('COM_INSTALLER_MSG_INSTALL_ENTER_A_URL', true) . '"); } else @@ -165,7 +165,7 @@
    - +
    diff --git a/administrator/templates/hathor/html/com_installer/install/default_form.php b/administrator/templates/hathor/html/com_installer/install/default_form.php index 82010004ae779..86ae4b184b6ba 100644 --- a/administrator/templates/hathor/html/com_installer/install/default_form.php +++ b/administrator/templates/hathor/html/com_installer/install/default_form.php @@ -49,7 +49,7 @@ var form = document.getElementById('adminForm'); // do field validation - if (form.install_url.value == '' || form.install_url.value == 'http://'){ + if (form.install_url.value == '' || form.install_url.value == 'http://' || form.install_url.value == 'https://'){ alert('" . JText::_('COM_INSTALLER_MSG_INSTALL_ENTER_A_URL', true) . "'); } else @@ -110,7 +110,7 @@
    - +
    From 3a5de3db4bdaa785f35ce95a737d938a869e773d Mon Sep 17 00:00:00 2001 From: GABBAR1947 Date: Thu, 3 Mar 2016 00:22:27 +0530 Subject: [PATCH 064/352] issue #9169 solved --- libraries/cms/html/html.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/cms/html/html.php b/libraries/cms/html/html.php index 3ace2cb81a29a..41b283e8374b0 100644 --- a/libraries/cms/html/html.php +++ b/libraries/cms/html/html.php @@ -979,7 +979,8 @@ public static function calendar($value, $name, $id, $format = '%Y-%m-%d', $attri { $tz = date_default_timezone_get(); date_default_timezone_set('UTC'); - $inputvalue = strftime($format, strtotime($value)); + $temp = DateTime::createFromFormat("Y-m-d H:i:s",$value); + $inputvalue = $temp->format(str_replace('%','',$format)); date_default_timezone_set($tz); } else From 9921a09783f802b772aa970accd258d47733dc7f Mon Sep 17 00:00:00 2001 From: Shubham Rathore Date: Wed, 2 Mar 2016 00:26:35 +0530 Subject: [PATCH 065/352] Update html.php --- libraries/cms/html/html.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/cms/html/html.php b/libraries/cms/html/html.php index 41b283e8374b0..a2d36ebd8cf5f 100644 --- a/libraries/cms/html/html.php +++ b/libraries/cms/html/html.php @@ -979,8 +979,8 @@ public static function calendar($value, $name, $id, $format = '%Y-%m-%d', $attri { $tz = date_default_timezone_get(); date_default_timezone_set('UTC'); - $temp = DateTime::createFromFormat("Y-m-d H:i:s",$value); - $inputvalue = $temp->format(str_replace('%','',$format)); + $temp = DateTime::createFromFormat("Y-m-d H:i:s",$value); + $inputvalue = $temp->format(str_replace('%','',$format)); date_default_timezone_set($tz); } else From b131222c2d06de2b0bd308515f2eee073fe33f81 Mon Sep 17 00:00:00 2001 From: Shubham Rathore Date: Wed, 2 Mar 2016 00:27:44 +0530 Subject: [PATCH 066/352] Update html.php --- libraries/cms/html/html.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/cms/html/html.php b/libraries/cms/html/html.php index a2d36ebd8cf5f..aff53fd7529af 100644 --- a/libraries/cms/html/html.php +++ b/libraries/cms/html/html.php @@ -979,8 +979,8 @@ public static function calendar($value, $name, $id, $format = '%Y-%m-%d', $attri { $tz = date_default_timezone_get(); date_default_timezone_set('UTC'); - $temp = DateTime::createFromFormat("Y-m-d H:i:s",$value); - $inputvalue = $temp->format(str_replace('%','',$format)); + $temp = DateTime::createFromFormat("Y-m-d H:i:s",$value); + $inputvalue = $temp->format(str_replace('%','',$format)); date_default_timezone_set($tz); } else From 6c5a4cd4fcf12732195245468dce07a15232e22d Mon Sep 17 00:00:00 2001 From: Shubham Rathore Date: Wed, 2 Mar 2016 08:24:06 +0530 Subject: [PATCH 067/352] Update html.php --- libraries/cms/html/html.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/cms/html/html.php b/libraries/cms/html/html.php index aff53fd7529af..6fa2bcf51f2f6 100644 --- a/libraries/cms/html/html.php +++ b/libraries/cms/html/html.php @@ -979,8 +979,8 @@ public static function calendar($value, $name, $id, $format = '%Y-%m-%d', $attri { $tz = date_default_timezone_get(); date_default_timezone_set('UTC'); - $temp = DateTime::createFromFormat("Y-m-d H:i:s",$value); - $inputvalue = $temp->format(str_replace('%','',$format)); + $temp = DateTime::createFromFormat("Y-m-d H:i:s",$value); + $inputvalue = $temp->format(str_replace('%','',$format)); date_default_timezone_set($tz); } else From 068b36b94717e1a28bc75095f65acd3b8f7a6557 Mon Sep 17 00:00:00 2001 From: Shubham Rathore Date: Wed, 2 Mar 2016 08:30:47 +0530 Subject: [PATCH 068/352] Update html.php --- libraries/cms/html/html.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/cms/html/html.php b/libraries/cms/html/html.php index 6fa2bcf51f2f6..4699b4bec9184 100644 --- a/libraries/cms/html/html.php +++ b/libraries/cms/html/html.php @@ -979,8 +979,8 @@ public static function calendar($value, $name, $id, $format = '%Y-%m-%d', $attri { $tz = date_default_timezone_get(); date_default_timezone_set('UTC'); - $temp = DateTime::createFromFormat("Y-m-d H:i:s",$value); - $inputvalue = $temp->format(str_replace('%','',$format)); + $temp = DateTime::createFromFormat("Y-m-d H:i:s", $value); + $inputvalue = $temp->format(str_replace('%', '', $format)); date_default_timezone_set($tz); } else From 118cc15eb741159cac7b8238a1a07d1e18807a06 Mon Sep 17 00:00:00 2001 From: Shubham Rathore Date: Wed, 2 Mar 2016 19:39:26 +0530 Subject: [PATCH 069/352] Update html.php --- libraries/cms/html/html.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/cms/html/html.php b/libraries/cms/html/html.php index 4699b4bec9184..3ace2cb81a29a 100644 --- a/libraries/cms/html/html.php +++ b/libraries/cms/html/html.php @@ -979,8 +979,7 @@ public static function calendar($value, $name, $id, $format = '%Y-%m-%d', $attri { $tz = date_default_timezone_get(); date_default_timezone_set('UTC'); - $temp = DateTime::createFromFormat("Y-m-d H:i:s", $value); - $inputvalue = $temp->format(str_replace('%', '', $format)); + $inputvalue = strftime($format, strtotime($value)); date_default_timezone_set($tz); } else From 800162d5e736c5c68905d8fb4ef539db99ddd122 Mon Sep 17 00:00:00 2001 From: GABBAR1947 Date: Tue, 8 Mar 2016 02:17:13 +0530 Subject: [PATCH 070/352] Back to top: feature --- libraries/cms/application/site.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/cms/application/site.php b/libraries/cms/application/site.php index 12ece1c37bfa5..a12482f55dc7f 100644 --- a/libraries/cms/application/site.php +++ b/libraries/cms/application/site.php @@ -158,7 +158,7 @@ public function dispatch($component = null) if ($router->getMode() == JROUTER_MODE_SEF) { - $document->setBase(htmlspecialchars(JUri::current())); + $document->setBase(htmlspecialchars(JUri::getInstance())); } // Get the template From 7e932713e9ae49ed103f492d6991d0b348c24d0d Mon Sep 17 00:00:00 2001 From: GABBAR1947 Date: Tue, 8 Mar 2016 03:41:37 +0530 Subject: [PATCH 071/352] Number form field negative number --- libraries/joomla/form/fields/number.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/libraries/joomla/form/fields/number.php b/libraries/joomla/form/fields/number.php index 81b567ed6252a..d715ca414e30d 100644 --- a/libraries/joomla/form/fields/number.php +++ b/libraries/joomla/form/fields/number.php @@ -157,8 +157,20 @@ protected function getInput() $autofocus = $this->autofocus ? ' autofocus' : ''; - $value = (float) $this->value; - $value = empty($value) ? $this->min : $value; + + if(!isset($this->min) + { + $this->min = 0; + } + + if(is_numeric($this->value)) + { + $value = (float) $this->value; + } + else + { + $value = $this->min; + } // Initialize JavaScript field attributes. $onchange = !empty($this->onchange) ? ' onchange="' . $this->onchange . '"' : ''; From 2e4e019417af9fc8a9fb7cc8cdbd870744f215a3 Mon Sep 17 00:00:00 2001 From: GABBAR1947 Date: Tue, 8 Mar 2016 04:14:51 +0530 Subject: [PATCH 072/352] Number form field for negative values --- libraries/cms/application/site.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/cms/application/site.php b/libraries/cms/application/site.php index a12482f55dc7f..12ece1c37bfa5 100644 --- a/libraries/cms/application/site.php +++ b/libraries/cms/application/site.php @@ -158,7 +158,7 @@ public function dispatch($component = null) if ($router->getMode() == JROUTER_MODE_SEF) { - $document->setBase(htmlspecialchars(JUri::getInstance())); + $document->setBase(htmlspecialchars(JUri::current())); } // Get the template From 231e78560bdd5f2c4704b341fb75f7dab6f7258c Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Thu, 10 Mar 2016 12:56:19 +0000 Subject: [PATCH 073/352] Update en-GB.ini --- administrator/language/en-GB/en-GB.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/language/en-GB/en-GB.ini b/administrator/language/en-GB/en-GB.ini index acdceb6bb2927..1b4b31c1f8345 100644 --- a/administrator/language/en-GB/en-GB.ini +++ b/administrator/language/en-GB/en-GB.ini @@ -557,6 +557,7 @@ JGLOBAL_TITLE_REVERSE_ALPHABETICAL="Title Reverse Alphabetical" JGLOBAL_TOGGLE_FEATURED="Toggle featured status." JGLOBAL_TOP="Top" JGLOBAL_TPL_CPANEL_LINK_TEXT="Return to Control Panel" +JGLOBAL_TYPE_OR_SELECT_SOME_OPTIONS="Type or select some options" JGLOBAL_USE_GLOBAL="Use Global" JGLOBAL_USERNAME="Username" JGLOBAL_VALIDATION_FORM_FAILED="Invalid form" From fa5521ad91b7016f6dd731fa337407f366f0d8f1 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Thu, 10 Mar 2016 12:56:47 +0000 Subject: [PATCH 074/352] Update en-GB.ini --- language/en-GB/en-GB.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/language/en-GB/en-GB.ini b/language/en-GB/en-GB.ini index bef1b624aa85a..99b5708f0fa7a 100644 --- a/language/en-GB/en-GB.ini +++ b/language/en-GB/en-GB.ini @@ -225,6 +225,7 @@ JGLOBAL_START_PUBLISH_AFTER_FINISH="Item start publishing date must be before fi JGLOBAL_SUBCATEGORIES="Subcategories" JGLOBAL_SUBHEADING_DESC="Optional text to show as a subheading." JGLOBAL_TITLE="Title" +JGLOBAL_TYPE_OR_SELECT_SOME_OPTIONS="Type or select some options" JGLOBAL_USE_GLOBAL="Use Global" JGLOBAL_USERNAME="Username" JGLOBAL_VALIDATION_FORM_FAILED="Invalid form" From 0e859a9588e63acc277c68e93f82dfe56c61cc2a Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Thu, 10 Mar 2016 12:57:42 +0000 Subject: [PATCH 075/352] Update formbehavior.php --- libraries/cms/html/formbehavior.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/cms/html/formbehavior.php b/libraries/cms/html/formbehavior.php index f074d4213f9d2..1b25150b73dc3 100644 --- a/libraries/cms/html/formbehavior.php +++ b/libraries/cms/html/formbehavior.php @@ -70,7 +70,7 @@ public static function chosen($selector = '.advancedSelect', $debug = null, $opt if (!isset($options['placeholder_text_multiple'])) { - $options['placeholder_text_multiple'] = JText::_('JGLOBAL_SELECT_SOME_OPTIONS'); + $options['placeholder_text_multiple'] = JText::_('JGLOBAL_TYPE_OR_SELECT_SOME_OPTIONS'); } if (!isset($options['placeholder_text_single'])) From 288296e2daf72286c88541038257a05dbb70b0e6 Mon Sep 17 00:00:00 2001 From: Constantin Romankiewicz Date: Thu, 10 Mar 2016 16:32:11 +0100 Subject: [PATCH 076/352] Add language string JAPPLY to frontend. --- language/en-GB/en-GB.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/language/en-GB/en-GB.ini b/language/en-GB/en-GB.ini index bef1b624aa85a..c334a45fd9d8e 100644 --- a/language/en-GB/en-GB.ini +++ b/language/en-GB/en-GB.ini @@ -48,6 +48,7 @@ JACTION_MANAGE="Access Administration Interface" JADMINISTRATOR="Administrator" JALL="All" JALL_LANGUAGE="All" +JAPPLY="Save" JARCHIVED="Archived" JAUTHOR="Author" JCANCEL="Cancel" From 13416a8621a1841c4c18f796a663a3a83dbcd382 Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Fri, 11 Mar 2016 10:33:24 +0200 Subject: [PATCH 077/352] Joomla! Update: Reinstall current version Add type hints to Joomla! Update's controller --- administrator/components/com_joomlaupdate/controller.php | 1 + .../components/com_joomlaupdate/controllers/update.php | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/controller.php b/administrator/components/com_joomlaupdate/controller.php index 0f2434b12ee2f..c242213485727 100644 --- a/administrator/components/com_joomlaupdate/controller.php +++ b/administrator/components/com_joomlaupdate/controller.php @@ -43,6 +43,7 @@ public function display($cachable = false, $urlparams = false) $view->ftp = &$ftp; // Get the model for the view. + /** @var JoomlaupdateModelDefault $model */ $model = $this->getModel('default'); // Perform update source preference check and refresh update information. diff --git a/administrator/components/com_joomlaupdate/controllers/update.php b/administrator/components/com_joomlaupdate/controllers/update.php index 7d4f8792461ae..aced8a7e35a83 100644 --- a/administrator/components/com_joomlaupdate/controllers/update.php +++ b/administrator/components/com_joomlaupdate/controllers/update.php @@ -33,6 +33,7 @@ public function download() $this->_applyCredentials(); + /** @var JoomlaupdateModelDefault $model */ $model = $this->getModel('Default'); $file = $model->download(); @@ -71,6 +72,7 @@ public function install() $this->_applyCredentials(); + /** @var JoomlaupdateModelDefault $model */ $model = $this->getModel('Default'); $file = JFactory::getApplication()->getUserState('com_joomlaupdate.file', null); @@ -94,6 +96,7 @@ public function finalise() JLog::add(JText::_('COM_JOOMLAUPDATE_UPDATE_LOG_FINALISE'), JLog::INFO, 'Update'); $this->_applyCredentials(); + /** @var JoomlaupdateModelDefault $model */ $model = $this->getModel('Default'); $model->finaliseUpgrade(); @@ -117,6 +120,7 @@ public function cleanup() JLog::add(JText::_('COM_JOOMLAUPDATE_UPDATE_LOG_CLEANUP'), JLog::INFO, 'Update'); $this->_applyCredentials(); + /** @var JoomlaupdateModelDefault $model */ $model = $this->getModel('Default'); $model->cleanUp(); @@ -135,9 +139,11 @@ public function cleanup() */ public function purge() { - // Purge updates // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); + + // Purge updates + /** @var JoomlaupdateModelDefault $model */ $model = $this->getModel('Default'); $model->purge(); @@ -169,6 +175,7 @@ public function display($cachable = false, $urlparams = array()) if ($view = $this->getView($vName, $vFormat)) { // Get the model for the view. + /** @var JoomlaupdateModelDefault $model */ $model = $this->getModel('Default'); // Push the model into the view (as default). From 02092f6c6d3143ebfcc6969ed2e24815ae0de7e0 Mon Sep 17 00:00:00 2001 From: Jean-Marie Simonet Date: Fri, 11 Mar 2016 10:04:29 +0100 Subject: [PATCH 078/352] Accessibility for title on article tool --- components/com_content/helpers/icon.php | 5 +++-- language/en-GB/en-GB.ini | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/components/com_content/helpers/icon.php b/components/com_content/helpers/icon.php index 85d7ed248b561..ad71ae8436632 100644 --- a/components/com_content/helpers/icon.php +++ b/components/com_content/helpers/icon.php @@ -107,7 +107,7 @@ public static function email($article, $params, $attribs = array(), $legacy = fa $text = JText::_('JGLOBAL_EMAIL'); } - $attribs['title'] = JText::_('JGLOBAL_EMAIL'); + $attribs['title'] = JText::_('JGLOBAL_EMAIL_TITLE'); $attribs['onclick'] = "window.open(this.href,'win2','" . $status . "'); return false;"; $attribs['rel'] = 'nofollow'; @@ -223,6 +223,7 @@ public static function edit($article, $params, $attribs = array(), $legacy = fal . JText::_('JGLOBAL_EDIT'); } + $attribs['title'] = JText::_('JGLOBAL_EDIT_TITLE'); $output = JHtml::_('link', JRoute::_($url), $text, $attribs); return $output; @@ -266,7 +267,7 @@ public static function print_popup($article, $params, $attribs = array(), $legac $text = JText::_('JGLOBAL_PRINT'); } - $attribs['title'] = JText::_('JGLOBAL_PRINT'); + $attribs['title'] = JText::sprintf('JGLOBAL_PRINT_TITLE', htmlspecialchars($article->title, ENT_QUOTES, 'UTF-8')); $attribs['onclick'] = "window.open(this.href,'win2','" . $status . "'); return false;"; $attribs['rel'] = 'nofollow'; diff --git a/language/en-GB/en-GB.ini b/language/en-GB/en-GB.ini index bef1b624aa85a..fc942fb98dae8 100644 --- a/language/en-GB/en-GB.ini +++ b/language/en-GB/en-GB.ini @@ -178,7 +178,9 @@ JGLOBAL_CREATED_DATE_ON="Created on %s" JGLOBAL_DESCRIPTION="Description" JGLOBAL_DISPLAY_NUM="Display #" JGLOBAL_EDIT="Edit" +JGLOBAL_EDIT_TITLE="Edit article" JGLOBAL_EMAIL="Email" +JGLOBAL_EMAIL_TITLE="Email this link to a friend" JGLOBAL_FIELD_CREATED_BY_ALIAS_DESC="Uses another name than the author's for display." JGLOBAL_FIELD_CREATED_BY_ALIAS_LABEL="Author's Alias" JGLOBAL_FIELD_FEATURED_DESC="Assign the article to the featured blog layout." @@ -210,6 +212,7 @@ JGLOBAL_OTPMETHOD_NONE="Disable Two Factor Authentication" JGLOBAL_PASSWORD="Password" JGLOBAL_PASSWORD_RESET_REQUIRED="You are required to reset your password before proceeding." JGLOBAL_PRINT="Print" +JGLOBAL_PRINT_TITLE="Print article < %s >" JGLOBAL_RECORD_NUMBER="Record ID: %d" JGLOBAL_REMEMBER_ME="Remember me" JGLOBAL_REMEMBER_MUST_LOGIN="For security reasons you must login before editing your personal information." From 8880ed9d16bf97ced4543724b89cc5f33a2791d8 Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Fri, 11 Mar 2016 16:46:58 +0200 Subject: [PATCH 079/352] Joomla! Update: Reinstall current version Refactored JUpdater, made it possible to record the current version of an extension into the #__updates table --- libraries/joomla/updater/updater.php | 348 +++++++++++++++++++-------- 1 file changed, 251 insertions(+), 97 deletions(-) diff --git a/libraries/joomla/updater/updater.php b/libraries/joomla/updater/updater.php index 7249d7684a6c5..080b1495286dc 100644 --- a/libraries/joomla/updater/updater.php +++ b/libraries/joomla/updater/updater.php @@ -98,26 +98,118 @@ public static function getInstance() } /** - * Finds an update for an extension + * Finds the update for an extension. Any discovered updates are stored in the #__updates table. + * + * @param int|array $eid Extension Identifier or list of Extension Identifiers; if zero use all + * sites + * @param integer $cacheTimeout How many seconds to cache update information; if zero, force reload the + * update information + * @param integer $minimum_stability Minimum stability for the updates; 0=dev, 1=alpha, 2=beta, 3=rc, + * 4=stable + * @param boolean $includeCurrent Should I include the current version in the results? * - * @param int|array $eid Extension Identifier or list of Extension Identifiers; if zero use all sites - * @param integer $cacheTimeout How many seconds to cache update information; if zero, force reload the update information - * @param integer $minimum_stability Minimum stability for the updates; 0=dev, 1=alpha, 2=beta, 3=rc, 4=stable * * @return boolean True if there are updates * * @since 11.1 */ - public function findUpdates($eid = 0, $cacheTimeout = 0, $minimum_stability = self::STABILITY_STABLE) + public function findUpdates($eid = 0, $cacheTimeout = 0, $minimum_stability = self::STABILITY_STABLE, $includeCurrent = false) + { + $retval = false; + + $results = $this->getUpdateSites($eid); + + if (empty($results)) + { + return $retval; + } + + $now = time(); + $earliestTime = $now - $cacheTimeout; + $sitesWithUpdates = array(); + + if ($cacheTimeout > 0) + { + $sitesWithUpdates = $this->getSitesWithUpdates($earliestTime); + } + + foreach ($results as $result) + { + /** + * If we have already checked for updates within the cache timeout period we will report updates available + * only if there are update records matching this update site. Then we skip processing of the update site + * since it's already processed within the cache timeout period. + */ + if ( + ($cacheTimeout > 0) + && isset($result['last_check_timestamp']) + && ($result['last_check_timestamp'] >= $earliestTime) + ) + { + $retval = $retval || in_array($result['update_site_id'], $sitesWithUpdates); + + continue; + } + + $updateObjects = $this->getUpdateObjectsForSite($result, $minimum_stability, $includeCurrent); + + if (!empty($updateObjects)) + { + $retval = true; + + /** @var JTableUpdate $update */ + foreach ($updateObjects as $update) + { + $update->store(); + } + } + + // Finally, update the last update check timestamp + $this->updateLastCheckTimestamp($result['update_site_id']); + } + + return $retval; + } + + /** + * Finds an update for an extension + * + * @param integer $id Id of the extension + * + * @return mixed + * + * @since 11.1 + */ + public function update($id) + { + $updaterow = JTable::getInstance('update'); + $updaterow->load($id); + $update = new JUpdate; + + if ($update->loadFromXml($updaterow->detailsurl)) + { + return $update->install(); + } + + return false; + } + + /** + * Returns the update site records for an extension with ID $eid. If $eid is zero all enabled update sites records + * will be returned. + * + * @param int $eid The extension ID to fetch. + * + * @return array + */ + private function getUpdateSites($eid = 0) { $db = $this->getDbo(); $query = $db->getQuery(true); - $retval = false; - $query->select('DISTINCT a.update_site_id, a.type, a.location, a.last_check_timestamp, a.extra_query') - ->from('#__update_sites AS a') - ->where('a.enabled = 1'); + ->from('#__update_sites AS a') + ->where('a.enabled = 1'); if ($eid) { @@ -134,139 +226,201 @@ public function findUpdates($eid = 0, $cacheTimeout = 0, $minimum_stability = se } $db->setQuery($query); - $results = $db->loadAssocList(); - $result_count = count($results); - $now = time(); - for ($i = 0; $i < $result_count; $i++) + $result = $db->loadAssocList(); + + if (!is_array($result)) { - $result = &$results[$i]; - $this->setAdapter($result['type']); + return array(); + } - if (!isset($this->_adapters[$result['type']])) - { - // Ignore update sites requiring adapters we don't have installed - continue; - } + return $result; + } - if ($cacheTimeout > 0) - { - if (isset($result['last_check_timestamp']) && ($now - $result['last_check_timestamp'] <= $cacheTimeout)) - { - // Ignore update sites whose information we have fetched within - // the cache time limit - $retval = true; - continue; - } - } + /** + * Loads the contents of an update site record $updateSite and returns the update objects + * + * @param array $updateSite The update site record to process + * @param int $minimum_stability Minimum stability for the returned update records + * @param bool $includeCurrent Should I also include the current version? + * + * @return array The update records. Empty array if no updates are found. + */ + private function getUpdateObjectsForSite($updateSite, $minimum_stability = self::STABILITY_STABLE, $includeCurrent = false) + { + $retVal = array(); - $result['minimum_stability'] = $minimum_stability; + $this->setAdapter($updateSite['type']); - /** @var JUpdateAdapter $adapter */ - $adapter = $this->_adapters[$result['type']]; - $update_result = $adapter->findUpdate($result); + if (!isset($this->_adapters[$updateSite['type']])) + { + // Ignore update sites requiring adapters we don't have installed + return $retVal; + } + + $updateSite['minimum_stability'] = $minimum_stability; + + // Get the update information from the remote update XML document + /** @var JUpdateAdapter $adapter */ + $adapter = $this->_adapters[ $updateSite['type']]; + $update_result = $adapter->findUpdate($updateSite); + + // Version comparison operator. + $operator = $includeCurrent ? 'ge' : 'gt'; - if (is_array($update_result)) + if (is_array($update_result)) + { + // If we have additional update sites in the remote (collection) update XML document, parse them + if (array_key_exists('update_sites', $update_result) && count($update_result['update_sites'])) { - if (array_key_exists('update_sites', $update_result) && count($update_result['update_sites'])) + $thisUrl = trim($updateSite['location']); + $thisId = (int) $updateSite['update_site_id']; + + foreach ($update_result['update_sites'] as $extraUpdateSite) { - $results = JArrayHelper::arrayUnique(array_merge($results, $update_result['update_sites'])); - $result_count = count($results); + $extraUrl = trim($extraUpdateSite['location']); + $extraId = (int) $extraUpdateSite['update_site_id']; + + // Do not try to fetch the same update site twice + if (($thisId == $extraId) || ($thisUrl == $extraUrl)) + { + continue; + } + + $extraUpdates = $this->getUpdateObjectsForSite($extraUpdateSite, $minimum_stability); + + if (count($extraUpdates)) + { + $retVal = array_merge($retVal, $extraUpdates); + } } + } - if (array_key_exists('updates', $update_result) && count($update_result['updates'])) + if (array_key_exists('updates', $update_result) && count($update_result['updates'])) + { + /** @var JUpdate $current_update */ + foreach($update_result['updates'] as $current_update) { - for ($k = 0, $count = count($update_result['updates']); $k < $count; $k++) - { - $current_update = &$update_result['updates'][$k]; - $current_update->extra_query = $result['extra_query']; - $update = JTable::getInstance('update'); - $extension = JTable::getInstance('extension'); - $uid = $update - ->find( + $current_update->extra_query = $updateSite['extra_query']; + + /** @var JTableUpdate $update */ + $update = JTable::getInstance('update'); + + /** @var JTableExtension $extension */ + $extension = JTable::getInstance('extension'); + + $uid = $update + ->find( array( - 'element' => $current_update->get('element'), 'type' => $current_update->get('type'), + 'element' => $current_update->get('element'), + 'type' => $current_update->get('type'), 'client_id' => $current_update->get('client_id'), - 'folder' => $current_update->get('folder') + 'folder' => $current_update->get('folder') ) ); - $eid = $extension - ->find( + $eid = $extension + ->find( array( - 'element' => $current_update->get('element'), 'type' => $current_update->get('type'), + 'element' => $current_update->get('element'), + 'type' => $current_update->get('type'), 'client_id' => $current_update->get('client_id'), - 'folder' => $current_update->get('folder') + 'folder' => $current_update->get('folder') ) ); - if (!$uid) + if (!$uid) + { + // Set the extension id + if ($eid) { - // Set the extension id - if ($eid) - { - // We have an installed extension, check the update is actually newer - $extension->load($eid); - $data = json_decode($extension->manifest_cache, true); - - if (version_compare($current_update->version, $data['version'], '>') == 1) - { - $current_update->extension_id = $eid; - $current_update->store(); - } - } - else + // We have an installed extension, check the update is actually newer + $extension->load($eid); + $data = json_decode($extension->manifest_cache, true); + + if (version_compare($current_update->version, $data['version'], $operator) == 1) { - // A potentially new extension to be installed - $current_update->store(); + $current_update->extension_id = $eid; + $retVal[] = $current_update; } } else { - $update->load($uid); + // A potentially new extension to be installed + $retVal[] = $current_update; + } + } + else + { + $update->load($uid); - // If there is an update, check that the version is newer then replaces - if (version_compare($current_update->version, $update->version, '>') == 1) - { - $current_update->store(); - } + // If there is an update, check that the version is newer then replaces + if (version_compare($current_update->version, $update->version, $operator) == 1) + { + $retVal[] = $current_update; } } } } - - // Finally, update the last update check timestamp - $query = $db->getQuery(true) - ->update($db->quoteName('#__update_sites')) - ->set($db->quoteName('last_check_timestamp') . ' = ' . $db->quote($now)) - ->where($db->quoteName('update_site_id') . ' = ' . $db->quote($result['update_site_id'])); - $db->setQuery($query); - $db->execute(); } - return $retval; + return $retVal; } /** - * Finds an update for an extension + * Returns the IDs of the update sites with cached updates * - * @param integer $id Id of the extension + * @param int $timestamp Optional. If set, only update sites checked before $timestamp will be taken into + * account. * - * @return mixed - * - * @since 11.1 + * @return array The IDs of the update sites with cached updates */ - public function update($id) + private function getSitesWithUpdates($timestamp = 0) { - $updaterow = JTable::getInstance('update'); - $updaterow->load($id); - $update = new JUpdate; + $db = JFactory::getDbo(); - if ($update->loadFromXml($updaterow->detailsurl)) + $query = $db->getQuery(true) + ->select('DISTINCT jdev_update_sites') + ->from('#__updates'); + + if ($timestamp) { - return $update->install(); + $subQuery = $db->getQuery(true) + ->select('update_site_id') + ->from('#__update_sites') + ->where($db->qn('last_check_timestamp') . ' = ' . $db->q(''), 'OR') + ->where($db->qn('last_check_timestamp') . ' <= ' . $db->q($timestamp), 'OR'); + + $query->where($db->qn('update_site_id') . ' IN (' . $subQuery . ')'); } - return false; + $retVal = $db->setQuery($query)->loadColumn(0); + + if (empty($retVal)) + { + return array(); + } + + return $retVal; + } + + /** + * Update the last check timestamp of an update site + * + * @param int $updateSiteId The update site ID to mark as just checked + * + * @return void + */ + private function updateLastCheckTimestamp($updateSiteId) + { + $timestamp = time(); + $db = JFactory::getDbo(); + + $query = $db->getQuery(true) + ->update($db->quoteName('#__update_sites')) + ->set($db->quoteName('last_check_timestamp') . ' = ' . $db->quote($timestamp)) + ->where($db->quoteName('update_site_id') . ' = ' . $db->quote($updateSiteId)); + $db->setQuery($query); + $db->execute(); } } From a8d1488758458222e7c44a081ee84f1f45b3becd Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Fri, 11 Mar 2016 18:06:21 +0200 Subject: [PATCH 080/352] Joomla! Update: Reinstall current version Model and view template changes --- .../com_joomlaupdate/models/default.php | 27 ++---- .../views/default/tmpl/default.php | 96 ++++++++++++++++++- .../language/en-GB/en-GB.com_joomlaupdate.ini | 1 + 3 files changed, 103 insertions(+), 21 deletions(-) diff --git a/administrator/components/com_joomlaupdate/models/default.php b/administrator/components/com_joomlaupdate/models/default.php index 91f9c30823a7c..038baf2ff7e03 100644 --- a/administrator/components/com_joomlaupdate/models/default.php +++ b/administrator/components/com_joomlaupdate/models/default.php @@ -120,7 +120,7 @@ public function refreshUpdates($force = false) } $updater = JUpdater::getInstance(); - $updater->findUpdates(700, $cache_timeout); + $updater->findUpdates(700, $cache_timeout, JUpdater::STABILITY_ALPHA, true); } /** @@ -135,8 +135,9 @@ public function getUpdateInformation() // Initialise the return array. $ret = array( 'installed' => JVERSION, - 'latest' => null, - 'object' => null + 'latest' => null, + 'object' => null, + 'hasUpdate' => false ); // Fetch the update information from the database. @@ -154,25 +155,16 @@ public function getUpdateInformation() return $ret; } - else - { - $ret['latest'] = $updateObject->version; - } + + $ret['latest'] = $updateObject->version; + $ret['hasUpdate'] = $updateObject->version != JVERSION; // Fetch the full update details from the update details URL. jimport('joomla.updater.update'); $update = new JUpdate; $update->loadFromXML($updateObject->detailsurl); - // Pass the update object. - if ($ret['latest'] == JVERSION) - { - $ret['object'] = null; - } - else - { - $ret['object'] = $update; - } + $ret['object'] = $update; return $ret; } @@ -419,7 +411,8 @@ public function createRestorationFile($basename = null) if (!is_dir($tempdir)) { JFolder::create($tempdir, 511); - JFile::write($tempdir . '/.htaccess', "order deny,allow\ndeny from all\nallow from none\n"); + $htaccessContents = "order deny,allow\ndeny from all\nallow from none\n"; + JFile::write($tempdir . '/.htaccess', $htaccessContents); } // If it exists and it is unwritable, try creating a writable admintools subdirectory. diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php index d44995df41ece..961ee8bda0be8 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php @@ -52,7 +52,7 @@ -updateInfo['object'])) : ?> +updateInfo['hasUpdate']) : ?>
    @@ -61,9 +61,97 @@

    -

    - -

    + +
    + +
    + + updateInfo['object']) && ($this->updateInfo['object'] instanceof JUpdate)): ?> + + + + + + + + + + + + + + + > + + + + > + + + + > + + + + > + + + + > + + + + + + + + + + +
    + + + + updateInfo['object']->downloadurl->_data; ?> + +
    + + + + updateInfo['object']->get('infourl')->title; ?> + +
    + + + methodSelect; ?> +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    +   + + +
    +
    diff --git a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini index 04ed6a114e8d4..eb36ea68d6bff 100644 --- a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini +++ b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini @@ -34,6 +34,7 @@ COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_PORT="FTP port" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_USERNAME="FTP username" COM_JOOMLAUPDATE_VIEW_DEFAULT_INFOURL="Additional Information" COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLED="Installed Joomla version" +COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLAGAIN="Reinstall Joomla! core files" COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLUPDATE="Install the Update" COM_JOOMLAUPDATE_VIEW_DEFAULT_LATEST="Latest Joomla version" COM_JOOMLAUPDATE_VIEW_DEFAULT_METHOD_DIRECT="Write files directly" From 28eeb62d30f861fc550ba63b82d2fd2866b5b604 Mon Sep 17 00:00:00 2001 From: Nicola Galgano Date: Fri, 11 Mar 2016 18:04:11 +0100 Subject: [PATCH 081/352] Module Popular Tags is not working properly #9351 https://github.com/joomla/joomla-cms/issues/9351#issuecomment-194477650 --- modules/mod_tags_popular/helper.php | 41 ++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/modules/mod_tags_popular/helper.php b/modules/mod_tags_popular/helper.php index a0f334778d6d4..98f5ba1ec70a2 100644 --- a/modules/mod_tags_popular/helper.php +++ b/modules/mod_tags_popular/helper.php @@ -73,6 +73,16 @@ public static function getList(&$params) $query->join('INNER', $db->quoteName('#__tags', 't') . ' ON ' . $db->quoteName('tag_id') . ' = t.id') ->join('INNER', $db->qn('#__ucm_content', 'c') . ' ON ' . $db->qn('m.core_content_id') . ' = ' . $db->qn('c.core_content_id')); + $query->where($db->quoteName('m.type_alias') . ' = ' . $db->quoteName('c.core_type_alias')); + + // Only return tags connected to published articles + $query->where($db->quoteName('c.core_state') . ' = 1') + ->where('(' . $db->quoteName('c.core_publish_up') . ' = ' . $nullDate + . ' OR ' . $db->quoteName('c.core_publish_up') . ' <= ' . $db->quote($nowDate) . ')') + ->where('(' . $db->quoteName('c.core_publish_down') . ' = ' . $nullDate + . ' OR ' . $db->quoteName('c.core_publish_down') . ' >= ' . $db->quote($nowDate) . ')'); + + // Set query depending on order_value param if ($order_value == 'rand()') { $query->order($query->Rand()); @@ -81,17 +91,30 @@ public static function getList(&$params) { $order_value = $db->quoteName($order_value); $order_direction = $params->get('order_direction', 1) ? 'DESC' : 'ASC'; - $query->order($order_value . ' ' . $order_direction); - } - $query->where($db->quoteName('m.type_alias') . ' = ' . $db->quoteName('c.core_type_alias')); + if ($params->get('order_value', 'title') == 'title') + { + $query->setLimit($maximum); + $query->order('count DESC'); + $equery = $db->getQuery(true) + ->select( + array( + 'a.tag_id', + 'a.count', + 'a.title', + 'a.access', + 'a.alias') + ) + ->from('(' . (string) $query . ') AS a') + ->order('a.title' . ' ' . $order_direction); + $query = $equery; + } + else + { + $query->order($order_value . ' ' . $order_direction); + } + } - // Only return tags connected to published articles - $query->where($db->quoteName('c.core_state') . ' = 1') - ->where('(' . $db->quoteName('c.core_publish_up') . ' = ' . $nullDate - . ' OR ' . $db->quoteName('c.core_publish_up') . ' <= ' . $db->quote($nowDate) . ')') - ->where('(' . $db->quoteName('c.core_publish_down') . ' = ' . $nullDate - . ' OR ' . $db->quoteName('c.core_publish_down') . ' >= ' . $db->quote($nowDate) . ')'); $db->setQuery($query, 0, $maximum); try From 82d9b6d09ff9d3d21e31f17c6518b085796bce05 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 12 Mar 2016 15:43:24 +0000 Subject: [PATCH 082/352] https in sample data --- installation/sql/mysql/sample_data.sql | 2 +- installation/sql/mysql/sample_learn.sql | 42 ++++++------- installation/sql/mysql/sample_testing.sql | 46 +++++++------- installation/sql/postgresql/sample_data.sql | 4 +- installation/sql/postgresql/sample_learn.sql | 42 ++++++------- .../sql/postgresql/sample_testing.sql | 46 +++++++------- installation/sql/sqlazure/sample_brochure.sql | 2 +- installation/sql/sqlazure/sample_data.sql | 4 +- installation/sql/sqlazure/sample_learn.sql | 48 +++++++-------- installation/sql/sqlazure/sample_testing.sql | 60 +++++++++---------- 10 files changed, 148 insertions(+), 148 deletions(-) diff --git a/installation/sql/mysql/sample_data.sql b/installation/sql/mysql/sample_data.sql index b956bd284f520..cd9203949aece 100644 --- a/installation/sql/mysql/sample_data.sql +++ b/installation/sql/mysql/sample_data.sql @@ -175,6 +175,6 @@ INSERT IGNORE INTO `#__ucm_content` (`core_content_id`, `core_type_alias`, `core INSERT IGNORE INTO `#__ucm_history` (`version_id`, `ucm_item_id`, `ucm_type_id`, `version_note`, `save_date`, `editor_user_id`, `character_count`, `sha1_hash`, `version_data`, `keep_forever`) VALUES (1, 2, 10, 'Initial content', '2013-11-16 00:00:00', 849, 558, 'be28228b479aa67bad3dc1db2975232a033d5f0f', '{"id":2,"parent_id":"1","lft":"1","rgt":2,"level":1,"path":"joomla","title":"Joomla","alias":"joomla","note":"","description":null,"published":1,"checked_out":"0","checked_out_time":"0000-00-00 00:00:00","access":1,"params":null,"metadesc":null,"metakey":null,"metadata":null,"created_user_id":"849","created_time":"2013-11-16 00:00:00","created_by_alias":"","modified_user_id":"0","modified_time":"0000-00-00 00:00:00","images":null,"urls":null,"hits":"0","language":"*","version":"1","publish_up":"0000-00-00 00:00:00","publish_down":"0000-00-00 00:00:00"}', 0), -(2, 1, 1, 'Initial content', '2013-11-16 00:00:00', 849, 4539, '4f6bf8f67e89553853c3b6e8ed0a6111daaa7a2f', '{"id":1,"asset_id":54,"title":"Getting Started","alias":"getting-started","introtext":"

    It''s easy to get started creating your website. Knowing some of the basics will help.<\\/p>\\r\\n

    What is a Content Management System?<\\/h3>\\r\\n

    A content management system is software that allows you to create and manage webpages easily by separating the creation of your content from the mechanics required to present it on the web.<\\/p>\\r\\n

    In this site, the content is stored in a database<\\/em>. The look and feel are created by a template<\\/em>. Joomla! brings together the template and your content to create web pages.<\\/p>\\r\\n

    Logging in<\\/h3>\\r\\n

    To login to your site use the user name and password that were created as part of the installation process. Once logged-in you will be able to create and edit articles and modify some settings.<\\/p>\\r\\n

    Creating an article<\\/h3>\\r\\n

    Once you are logged-in, a new menu will be visible. To create a new article, click on the \\"Submit Article\\" link on that menu.<\\/p>\\r\\n

    The new article interface gives you a lot of options, but all you need to do is add a title and put something in the content area. To make it easy to find, set the state to published.<\\/p>\\r\\n

    You can edit an existing article by clicking on the edit icon (this only displays to users who have the right to edit).<\\/div>\\r\\n

    Template, site settings, and modules<\\/h3>\\r\\n

    The look and feel of your site is controlled by a template. You can change the site name, background colour, highlights colour and more by editing the template settings. Click the \\"Template Settings\\" in the user menu.\\u00a0<\\/p>\\r\\n

    The boxes around the main content of the site are called modules. \\u00a0You can modify modules on the current page by moving your cursor to the module and clicking the edit link. Always be sure to save and close any module you edit.<\\/p>\\r\\n

    You can change some site settings such as the site name and description by clicking on the \\"Site Settings\\" link.<\\/p>\\r\\n

    More advanced options for templates, site settings, modules, and more are available in the site administrator.<\\/p>\\r\\n

    Site and Administrator<\\/h3>\\r\\n

    Your site actually has two separate sites. The site (also called the front end) is what visitors to your site will see. The administrator (also called the back end) is only used by people managing your site. You can access the administrator by clicking the \\"Site Administrator\\" link on the \\"User Menu\\" menu (visible once you login) or by adding \\/administrator to the end of your domain name. The same user name and password are used for both sites.<\\/p>\\r\\n

    Learn more<\\/h3>\\r\\n

    There is much more to learn about how to use Joomla! to create the web site you envision. You can learn much more at the Joomla! documentation site<\\/a> and on the Joomla! forums<\\/a>.<\\/p>","fulltext":"","state":1,"catid":"2","created":"2013-11-16 00:00:00","created_by":"849","created_by_alias":"","modified":"","modified_by":null,"checked_out":null,"checked_out_time":null,"publish_up":"2013-11-16 00:00:00","publish_down":"0000-00-00 00:00:00","images":"{\\"image_intro\\":\\"\\",\\"float_intro\\":\\"\\",\\"image_intro_alt\\":\\"\\",\\"image_intro_caption\\":\\"\\",\\"image_fulltext\\":\\"\\",\\"float_fulltext\\":\\"\\",\\"image_fulltext_alt\\":\\"\\",\\"image_fulltext_caption\\":\\"\\"}","urls":"{\\"urla\\":false,\\"urlatext\\":\\"\\",\\"targeta\\":\\"\\",\\"urlb\\":false,\\"urlbtext\\":\\"\\",\\"targetb\\":\\"\\",\\"urlc\\":false,\\"urlctext\\":\\"\\",\\"targetc\\":\\"\\"}","attribs":"{\\"show_title\\":\\"\\",\\"link_titles\\":\\"\\",\\"show_tags\\":\\"\\",\\"show_intro\\":\\"\\",\\"info_block_position\\":\\"\\",\\"show_category\\":\\"\\",\\"link_category\\":\\"\\",\\"show_parent_category\\":\\"\\",\\"link_parent_category\\":\\"\\",\\"show_author\\":\\"\\",\\"link_author\\":\\"\\",\\"show_create_date\\":\\"\\",\\"show_modify_date\\":\\"\\",\\"show_publish_date\\":\\"\\",\\"show_item_navigation\\":\\"\\",\\"show_icons\\":\\"\\",\\"show_print_icon\\":\\"\\",\\"show_email_icon\\":\\"\\",\\"show_vote\\":\\"\\",\\"show_hits\\":\\"\\",\\"show_noauth\\":\\"\\",\\"urls_position\\":\\"\\",\\"alternative_readmore\\":\\"\\",\\"article_layout\\":\\"\\",\\"show_publishing_options\\":\\"\\",\\"show_article_options\\":\\"\\",\\"show_urls_images_backend\\":\\"\\",\\"show_urls_images_frontend\\":\\"\\"}","version":1,"ordering":null,"metakey":"","metadesc":"","access":"1","hits":null,"metadata":"{\\"robots\\":\\"\\",\\"author\\":\\"\\",\\"rights\\":\\"\\",\\"xreference\\":\\"\\"}","featured":"0","language":"*","xreference":""}', 0); +(2, 1, 1, 'Initial content', '2013-11-16 00:00:00', 849, 4539, '4f6bf8f67e89553853c3b6e8ed0a6111daaa7a2f', '{"id":1,"asset_id":54,"title":"Getting Started","alias":"getting-started","introtext":"

    It''s easy to get started creating your website. Knowing some of the basics will help.<\\/p>\\r\\n

    What is a Content Management System?<\\/h3>\\r\\n

    A content management system is software that allows you to create and manage webpages easily by separating the creation of your content from the mechanics required to present it on the web.<\\/p>\\r\\n

    In this site, the content is stored in a database<\\/em>. The look and feel are created by a template<\\/em>. Joomla! brings together the template and your content to create web pages.<\\/p>\\r\\n

    Logging in<\\/h3>\\r\\n

    To login to your site use the user name and password that were created as part of the installation process. Once logged-in you will be able to create and edit articles and modify some settings.<\\/p>\\r\\n

    Creating an article<\\/h3>\\r\\n

    Once you are logged-in, a new menu will be visible. To create a new article, click on the \\"Submit Article\\" link on that menu.<\\/p>\\r\\n

    The new article interface gives you a lot of options, but all you need to do is add a title and put something in the content area. To make it easy to find, set the state to published.<\\/p>\\r\\n

    You can edit an existing article by clicking on the edit icon (this only displays to users who have the right to edit).<\\/div>\\r\\n

    Template, site settings, and modules<\\/h3>\\r\\n

    The look and feel of your site is controlled by a template. You can change the site name, background colour, highlights colour and more by editing the template settings. Click the \\"Template Settings\\" in the user menu.\\u00a0<\\/p>\\r\\n

    The boxes around the main content of the site are called modules. \\u00a0You can modify modules on the current page by moving your cursor to the module and clicking the edit link. Always be sure to save and close any module you edit.<\\/p>\\r\\n

    You can change some site settings such as the site name and description by clicking on the \\"Site Settings\\" link.<\\/p>\\r\\n

    More advanced options for templates, site settings, modules, and more are available in the site administrator.<\\/p>\\r\\n

    Site and Administrator<\\/h3>\\r\\n

    Your site actually has two separate sites. The site (also called the front end) is what visitors to your site will see. The administrator (also called the back end) is only used by people managing your site. You can access the administrator by clicking the \\"Site Administrator\\" link on the \\"User Menu\\" menu (visible once you login) or by adding \\/administrator to the end of your domain name. The same user name and password are used for both sites.<\\/p>\\r\\n

    Learn more<\\/h3>\\r\\n

    There is much more to learn about how to use Joomla! to create the web site you envision. You can learn much more at the Joomla! documentation site<\\/a> and on the Joomla! forums<\\/a>.<\\/p>","fulltext":"","state":1,"catid":"2","created":"2013-11-16 00:00:00","created_by":"849","created_by_alias":"","modified":"","modified_by":null,"checked_out":null,"checked_out_time":null,"publish_up":"2013-11-16 00:00:00","publish_down":"0000-00-00 00:00:00","images":"{\\"image_intro\\":\\"\\",\\"float_intro\\":\\"\\",\\"image_intro_alt\\":\\"\\",\\"image_intro_caption\\":\\"\\",\\"image_fulltext\\":\\"\\",\\"float_fulltext\\":\\"\\",\\"image_fulltext_alt\\":\\"\\",\\"image_fulltext_caption\\":\\"\\"}","urls":"{\\"urla\\":false,\\"urlatext\\":\\"\\",\\"targeta\\":\\"\\",\\"urlb\\":false,\\"urlbtext\\":\\"\\",\\"targetb\\":\\"\\",\\"urlc\\":false,\\"urlctext\\":\\"\\",\\"targetc\\":\\"\\"}","attribs":"{\\"show_title\\":\\"\\",\\"link_titles\\":\\"\\",\\"show_tags\\":\\"\\",\\"show_intro\\":\\"\\",\\"info_block_position\\":\\"\\",\\"show_category\\":\\"\\",\\"link_category\\":\\"\\",\\"show_parent_category\\":\\"\\",\\"link_parent_category\\":\\"\\",\\"show_author\\":\\"\\",\\"link_author\\":\\"\\",\\"show_create_date\\":\\"\\",\\"show_modify_date\\":\\"\\",\\"show_publish_date\\":\\"\\",\\"show_item_navigation\\":\\"\\",\\"show_icons\\":\\"\\",\\"show_print_icon\\":\\"\\",\\"show_email_icon\\":\\"\\",\\"show_vote\\":\\"\\",\\"show_hits\\":\\"\\",\\"show_noauth\\":\\"\\",\\"urls_position\\":\\"\\",\\"alternative_readmore\\":\\"\\",\\"article_layout\\":\\"\\",\\"show_publishing_options\\":\\"\\",\\"show_article_options\\":\\"\\",\\"show_urls_images_backend\\":\\"\\",\\"show_urls_images_frontend\\":\\"\\"}","version":1,"ordering":null,"metakey":"","metadesc":"","access":"1","hits":null,"metadata":"{\\"robots\\":\\"\\",\\"author\\":\\"\\",\\"rights\\":\\"\\",\\"xreference\\":\\"\\"}","featured":"0","language":"*","xreference":""}', 0); SET FOREIGN_KEY_CHECKS=1; diff --git a/installation/sql/mysql/sample_learn.sql b/installation/sql/mysql/sample_learn.sql index 01a156d1f03ac..a8b3284392b3f 100644 --- a/installation/sql/mysql/sample_learn.sql +++ b/installation/sql/mysql/sample_learn.sql @@ -181,9 +181,9 @@ INSERT INTO `#__assets` (`id`, `parent_id`, `lft`, `rgt`, `level`, `name`, `titl (178, 1, 428, 429, 1, 'com_postinstall', 'com_postinstall', '{}'); INSERT IGNORE INTO `#__banners` (`id`, `cid`, `type`, `name`, `alias`, `imptotal`, `impmade`, `clicks`, `clickurl`, `state`, `catid`, `description`, `custombannercode`, `sticky`, `ordering`, `metakey`, `params`, `own_prefix`, `metakey_prefix`, `purchase_type`, `track_clicks`, `track_impressions`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `reset`, `created`, `language`, `created_by`, `created_by_alias`, `modified`, `modified_by`, `version`) VALUES -(2, 3, 0, 'Shop 1', 'shop-1', 0, 0, 0, 'http://shop.joomla.org/amazoncom-bookstores.html', 1, 15, 'Get books about Joomla! at the Joomla! Book Shop.', '', 0, 1, '', '{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Books"}', 0, '', -1, 0, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '0000-00-00 00:00:00', 0, 1), -(3, 2, 0, 'Shop 2', 'shop-2', 0, 0, 0, 'http://shop.joomla.org', 1, 15, 'T Shirts, caps and more from the Joomla! Shop.', '', 0, 2, '', '{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Shop"}', 0, '', -1, 0, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '0000-00-00 00:00:00', 0, 1), -(4, 1, 0, 'Support Joomla!', 'support-joomla', 0, 0, 0, 'http://contribute.joomla.org', 1, 15, 'Your contributions of time, talent and money make Joomla possible.', '', 0, 3, '', '{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":""}', 0, '', -1, 0, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '0000-00-00 00:00:00', 0, 1); +(2, 3, 0, 'Shop 1', 'shop-1', 0, 0, 0, 'https://shop.joomla.org/amazoncom-bookstores.html', 1, 15, 'Get books about Joomla! at the Joomla! Book Shop.', '', 0, 1, '', '{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Books"}', 0, '', -1, 0, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '0000-00-00 00:00:00', 0, 1), +(3, 2, 0, 'Shop 2', 'shop-2', 0, 0, 0, 'https://shop.joomla.org', 1, 15, 'T Shirts, caps and more from the Joomla! Shop.', '', 0, 2, '', '{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Shop"}', 0, '', -1, 0, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '0000-00-00 00:00:00', 0, 1), +(4, 1, 0, 'Support Joomla!', 'support-joomla', 0, 0, 0, 'https://contribute.joomla.org', 1, 15, 'Your contributions of time, talent and money make Joomla possible.', '', 0, 3, '', '{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":""}', 0, '', -1, 0, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '0000-00-00 00:00:00', 0, 1); INSERT IGNORE INTO `#__banner_clients` (`id`, `name`, `contact`, `email`, `extrainfo`, `state`, `checked_out`, `checked_out_time`, `metakey`, `own_prefix`, `metakey_prefix`, `purchase_type`, `track_clicks`, `track_impressions`) VALUES (1, 'Joomla!', 'Administrator', 'banner@example.com', '', 1, 0, '0000-00-00 00:00:00', '', 0, '', -1, -1, -1), @@ -209,13 +209,13 @@ INSERT IGNORE INTO `#__categories` (`id`, `asset_id`, `parent_id`, `lft`, `rgt`, (25, 50, 20, 34, 35, 4, 'sample-data-articles/joomla/extensions/plugins', 'com_content', 'Plugins', 'plugins', '', '

    Plugins are small task oriented extensions that enhance the Joomla! framework. Some are associated with particular extensions and others, such as editors, are used across all of Joomla. Most beginning users do not need to change any of the plugins that install with Joomla. Help

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 910, '2011-01-01 00:00:01', 123, '2012-09-25 06:36:50', 0, '*', 1), (26, 51, 14, 38, 47, 2, 'sample-data-articles/park-site', 'com_content', 'Park Site', 'park-site', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 910, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, 'en-GB', 1), (27, 52, 26, 39, 40, 3, 'sample-data-articles/park-site/park-blog', 'com_content', 'Park Blog', 'park-blog', '', '

    Here is where I will blog all about the parks of Australia.

    You can make a blog on your website by creating a category to write your blog posts in (this one is called Park Blog). Each blog post will be an article in that category. If you make a category blog menu link with 1 column it will look like this page, if you display the category description then this part is displayed.

    To enhance your blog you may want to add extensions for comments, interacting with social network sites, tagging, and keeping in contact with your readers. You can also enable the syndication that is included in Joomla (in the Integration Options set Show Feed Link to Show and make sure to display the syndication module on the page).

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"category_layout":"","image":"images\\/sampledata\\/parks\\/banner_cradle.jpg"}', '', '', '{"author":"","robots":""}', 910, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, 'en-GB', 1), -(28, 53, 26, 41, 46, 3, 'sample-data-articles/park-site/photo-gallery', 'com_content', 'Photo Gallery', 'photo-gallery', '', '

    These are my photos from parks I have visited (I didn''t take them, they are all from Wikimedia Commons).

    This shows you how to make a simple image gallery using articles in com_content.

    In each article put a thumbnail image before a "readmore" and the full size image after it. Set the article to Show Intro Text: Hide.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 910, '2011-01-01 00:00:01', 123, '2012-09-25 11:05:37', 0, 'en-GB', 1), +(28, 53, 26, 41, 46, 3, 'sample-data-articles/park-site/photo-gallery', 'com_content', 'Photo Gallery', 'photo-gallery', '', '

    These are my photos from parks I have visited (I didn''t take them, they are all from Wikimedia Commons).

    This shows you how to make a simple image gallery using articles in com_content.

    In each article put a thumbnail image before a "readmore" and the full size image after it. Set the article to Show Intro Text: Hide.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 910, '2011-01-01 00:00:01', 123, '2012-09-25 11:05:37', 0, 'en-GB', 1), (29, 54, 14, 48, 53, 2, 'sample-data-articles/fruit-shop-site', 'com_content', 'Fruit Shop Site', 'fruit-shop-site', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 910, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (30, 55, 29, 49, 50, 3, 'sample-data-articles/fruit-shop-site/growers', 'com_content', 'Growers', 'growers', '', '

    We search the whole countryside for the best fruit growers.

    You can let each supplier have a page that he or she can edit. To see this in action you will need to create a user who is in the suppliers group.

    Create one page in the growers category for that user and make that supplier the author of the page. That user will be able to edit his or her page.

    This illustrates the use of the Edit Own permission.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 910, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (34, 59, 16, 62, 63, 2, 'sample-data-contact/park-site', 'com_contact', 'Park Site', 'park-site', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 910, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, 'en-GB', 1), (35, 60, 16, 64, 121, 2, 'sample-data-contact/shop-site', 'com_contact', 'Shop Site', 'shop-site', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 910, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (36, 61, 35, 65, 66, 3, 'sample-data-contact/shop-site/staff', 'com_contact', 'Staff', 'staff', '', '

    Please feel free to contact our staff at any time should you need assistance.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 910, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), -(37, 62, 35, 67, 120, 3, 'sample-data-contact/shop-site/fruit-encyclopedia', 'com_contact', 'Fruit Encyclopedia', 'fruit-encyclopedia', '', '

    Our directory of information about different kinds of fruit.

    We love fruit and want the world to know more about all of its many varieties.

    Although it is small now, we work on it whenever we have a chance.

    All of the images can be found in Wikimedia Commons.

    Apples

    This encyclopedia is implemented using the contact component, each fruit a separate contact and a category for each letter. A CSS style is used to create the horizontal layout of the alphabet headings.

    If you wanted to, you could allow some users (such as your growers) to have access to just this category in the contact component and let them help you to create new content for the encyclopedia.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 910, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), +(37, 62, 35, 67, 120, 3, 'sample-data-contact/shop-site/fruit-encyclopedia', 'com_contact', 'Fruit Encyclopedia', 'fruit-encyclopedia', '', '

    Our directory of information about different kinds of fruit.

    We love fruit and want the world to know more about all of its many varieties.

    Although it is small now, we work on it whenever we have a chance.

    All of the images can be found in Wikimedia Commons.

    Apples

    This encyclopedia is implemented using the contact component, each fruit a separate contact and a category for each letter. A CSS style is used to create the horizontal layout of the alphabet headings.

    If you wanted to, you could allow some users (such as your growers) to have access to just this category in the contact component and let them help you to create new content for the encyclopedia.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 910, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (38, 63, 37, 68, 69, 4, 'sample-data-contact/shop-site/fruit-encyclopedia/a', 'com_contact', 'A', 'a', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 910, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (39, 64, 37, 70, 71, 4, 'sample-data-contact/shop-site/fruit-encyclopedia/b', 'com_contact', 'B', 'b', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 910, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (40, 65, 37, 72, 73, 4, 'sample-data-contact/shop-site/fruit-encyclopedia/c', 'com_contact', 'C', 'c', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 910, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), @@ -255,13 +255,13 @@ INSERT IGNORE INTO `#__categories` (`id`, `asset_id`, `parent_id`, `lft`, `rgt`, (78, 174, 23, 29, 30, 5, 'sample-data-articles/joomla/extensions/templates/protostar', 'com_content', 'Protostar', 'protostar', '', '

    Protostar is a mobile ready template designed using Twitter Bootstrap. It is sleek and easily to customise. It is the default template for Joomla 3.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 910, '2012-09-25 11:50:03', 123, '2012-09-25 12:13:14', 0, '*', 1); INSERT IGNORE INTO `#__contact_details` (`id`, `name`, `alias`, `con_position`, `address`, `suburb`, `state`, `country`, `postcode`, `telephone`, `fax`, `misc`, `image`, `email_to`, `default_con`, `published`, `checked_out`, `checked_out_time`, `ordering`, `params`, `user_id`, `catid`, `access`, `mobile`, `webpage`, `sortname1`, `sortname2`, `sortname3`, `language`, `created`, `created_by`, `created_by_alias`, `modified`, `modified_by`, `metakey`, `metadesc`, `metadata`, `featured`, `xreference`, `publish_up`, `publish_down`, `version`, `hits`) VALUES -(1, 'Contact Name Here', 'name', 'Position', 'Street Address', 'Suburb', 'State', 'Country', 'Zip Code', 'Telephone', 'Fax', '

    Information about or by the contact.

    ', 'images/powered_by.png', 'email@example.com', 1, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"http:\\/\\/twitter.com\\/joomla","linkb_name":"YouTube","linkb":"http:\\/\\/www.youtube.com\\/user\\/joomla","linkc_name":"Facebook","linkc":"http:\\/\\/www.facebook.com\\/joomla","linkd_name":"FriendFeed","linkd":"http:\\/\\/friendfeed.com\\/joomla","linke_name":"Scribd","linke":"http:\\/\\/www.scribd.com\\/people\\/view\\/504592-joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 16, 1, '', '', 'last', 'first', 'middle', 'en-GB', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), +(1, 'Contact Name Here', 'name', 'Position', 'Street Address', 'Suburb', 'State', 'Country', 'Zip Code', 'Telephone', 'Fax', '

    Information about or by the contact.

    ', 'images/powered_by.png', 'email@example.com', 1, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"https:\\/\\/twitter.com\\/joomla","linkb_name":"YouTube","linkb":"https:\\/\\/www.youtube.com\\/user\\/joomla","linkc_name":"Facebook","linkc":"https:\/\/www.facebook.com\/joomla","linkd_name":"FriendFeed","linkd":"http:\\/\\/friendfeed.com\\/joomla","linke_name":"Scribd","linke":"https:\\/\\/www.scribd.com\\/user\\/504592\\/Joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 16, 1, '', '', 'last', 'first', 'middle', 'en-GB', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), (2, 'Webmaster', 'webmaster', '', '', '', '', '', '', '', '', '', '', 'webmaster@example.com', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"1","show_email_copy":"1","banned_email":"","banned_subject":"","banned_text":"","validate_session":"1","custom_reply":"","redirect":""}', 0, 34, 1, '', '', '', '', '', 'en-GB', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), (3, 'Owner', 'owner', '', '', '', '', '', '', '', '', '

    I''m the owner of this store.

    ', '', '', 0, 1, 0, '0000-00-00 00:00:00', 2, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 36, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), (4, 'Buyer', 'buyer', '', '', '', '', '', '', '', '', '

    I am in charge of buying fruit. If you sell good fruit, contact me.

    ', '', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"0","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 36, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), -(5, 'Bananas', 'bananas', 'Scientific Name: Musa', 'Image Credit: EnzikRights: Creative Commons Share Alike Unported 3.0Source: http://commons.wikimedia.org/wiki/File:Bananas_-_Morocco.jpg', '', 'Type: Herbaceous', 'Large Producers: India, China, Brasil', '', '', '', '

    Bananas are a great source of potassium.

    ', 'images/sampledata/fruitshop/bananas_2.jpg', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"show_with_link","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"1","show_email":"","show_street_address":"","show_suburb":"","show_state":"1","show_postcode":"","show_country":"1","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Banana English","linka":"http:\\/\\/en.wikipedia.org\\/wiki\\/Banana","linkb_name":"Wikipedia: \\u0939\\u093f\\u0928\\u094d\\u0926\\u0940 \\u0915\\u0947\\u0932\\u093e","linkb":"http:\\/\\/hi.wikipedia.org\\/wiki\\/%E0%A4%95%E0%A5%87%E0%A4%B2%E0%A4%BE","linkc_name":"Wikipedia:Banana Portugu\\u00eas","linkc":"http:\\/\\/pt.wikipedia.org\\/wiki\\/Banana","linkd_name":"Wikipedia: \\u0411\\u0430\\u043d\\u0430\\u043d \\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439","linkd":"http:\\/\\/ru.wikipedia.org\\/\\u0411\\u0430\\u043d\\u0430\\u043d","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 39, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), -(6, 'Apples', 'apples', 'Scientific Name: Malus domestica', 'Image Credit: FievetRights: Public DomainSource: http://commons.wikimedia.org/wiki/File:Pommes_vertes.JPG', '', 'Family: Rosaceae', 'Large: Producers: China, United States', '', '', '', '

    Apples are a versatile fruit, used for eating, cooking, and preserving.

    There are more that 7500 different kinds of apples grown around the world.

    ', 'images/sampledata/fruitshop/apple.jpg', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Apples English","linka":"http:\\/\\/en.wikipedia.org\\/wiki\\/Apple","linkb_name":"Wikipedia: Manzana Espa\\u00f1ol ","linkb":"http:\\/\\/es.wikipedia.org\\/wiki\\/Manzana","linkc_name":"Wikipedia: \\u82f9\\u679c \\u4e2d\\u6587","linkc":"http:\\/\\/zh.wikipedia.org\\/zh\\/\\u82f9\\u679c","linkd_name":"Wikipedia: Tofaa Kiswahili","linkd":"http:\\/\\/sw.wikipedia.org\\/wiki\\/Tofaa","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 38, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), -(7, 'Tamarind', 'tamarind', 'Scientific Name: Tamarindus indica', 'Image Credit: Franz Eugen Köhler, Köhler''s Medizinal-Pflanzen Rights: Public DomainSource:http://commons.wikimedia.org/wiki/File:Koeh-134.jpg', '', 'Family: Fabaceae', 'Large Producers: India, United States', '', '', '', '

    Tamarinds are a versatile fruit used around the world. In its young form it is used in hot sauces; ripened it is the basis for many refreshing drinks.

    ', 'images/sampledata/fruitshop/tamarind.jpg', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Tamarind English","linka":"http:\\/\\/en.wikipedia.org\\/wiki\\/Tamarind","linkb_name":"Wikipedia: \\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 \\u09ac\\u09be\\u0982\\u09b2\\u09be ","linkb":"http:\\/\\/bn.wikipedia.org\\/wiki\\/\\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 ","linkc_name":"Wikipedia: Tamarinier Fran\\u00e7ais","linkc":"http:\\/\\/fr.wikipedia.org\\/wiki\\/Tamarinier","linkd_name":"Wikipedia:Tamaline lea faka-Tonga","linkd":"http:\\/\\/to.wikipedia.org\\/wiki\\/Tamaline","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 57, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), +(5, 'Bananas', 'bananas', 'Scientific Name: Musa', 'Image Credit: EnzikRights: Creative Commons Share Alike Unported 3.0Source: https://commons.wikimedia.org/wiki/File:Bananas_-_Morocco.jpg', '', 'Type: Herbaceous', 'Large Producers: India, China, Brasil', '', '', '', '

    Bananas are a great source of potassium.

    ', 'images/sampledata/fruitshop/bananas_2.jpg', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"show_with_link","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"1","show_email":"","show_street_address":"","show_suburb":"","show_state":"1","show_postcode":"","show_country":"1","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Banana English","linka":"https:\\/\\/en.wikipedia.org\\/wiki\\/Banana","linkb_name":"Wikipedia: \\u0939\\u093f\\u0928\\u094d\\u0926\\u0940 \\u0915\\u0947\\u0932\\u093e","linkb":"https:\\/\\/hi.wikipedia.org\\/wiki\\/%E0%A4%95%E0%A5%87%E0%A4%B2%E0%A4%BE","linkc_name":"Wikipedia:Banana Portugu\\u00eas","linkc":"https:\\/\\/pt.wikipedia.org\\/wiki\\/Banana","linkd_name":"Wikipedia: \\u0411\\u0430\\u043d\\u0430\\u043d \\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439","linkd":"https:\\/\\/ru.wikipedia.org\\/\\u0411\\u0430\\u043d\\u0430\\u043d","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 39, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), +(6, 'Apples', 'apples', 'Scientific Name: Malus domestica', 'Image Credit: FievetRights: Public DomainSource: https://commons.wikimedia.org/wiki/File:Pommes_vertes.JPG', '', 'Family: Rosaceae', 'Large: Producers: China, United States', '', '', '', '

    Apples are a versatile fruit, used for eating, cooking, and preserving.

    There are more that 7500 different kinds of apples grown around the world.

    ', 'images/sampledata/fruitshop/apple.jpg', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Apples English","linka":"https:\\/\\/en.wikipedia.org\\/wiki\\/Apple","linkb_name":"Wikipedia: Manzana Espa\\u00f1ol ","linkb":"https:\\/\\/es.wikipedia.org\\/wiki\\/Manzana","linkc_name":"Wikipedia: \\u82f9\\u679c \\u4e2d\\u6587","linkc":"https:\\/\\/zh.wikipedia.org\\/zh\\/\\u82f9\\u679c","linkd_name":"Wikipedia: Tofaa Kiswahili","linkd":"https:\\/\\/sw.wikipedia.org\\/wiki\\/Tofaa","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 38, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), +(7, 'Tamarind', 'tamarind', 'Scientific Name: Tamarindus indica', 'Image Credit: Franz Eugen Köhler, Köhler''s Medizinal-Pflanzen Rights: Public DomainSource:https://commons.wikimedia.org/wiki/File:Koeh-134.jpg', '', 'Family: Fabaceae', 'Large Producers: India, United States', '', '', '', '

    Tamarinds are a versatile fruit used around the world. In its young form it is used in hot sauces; ripened it is the basis for many refreshing drinks.

    ', 'images/sampledata/fruitshop/tamarind.jpg', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Tamarind English","linka":"https:\\/\\/en.wikipedia.org\\/wiki\\/Tamarind","linkb_name":"Wikipedia: \\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 \\u09ac\\u09be\\u0982\\u09b2\\u09be ","linkb":"https:\\/\\/bn.wikipedia.org\\/wiki\\/\\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 ","linkc_name":"Wikipedia: Tamarinier Fran\\u00e7ais","linkc":"https:\\/\\/fr.wikipedia.org\\/wiki\\/Tamarinier","linkd_name":"Wikipedia:Tamaline lea faka-Tonga","linkd":"https:\\/\\/to.wikipedia.org\\/wiki\\/Tamaline","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 57, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), (8, 'Shop Address', 'shop-address', '', '', 'Our City', 'Our Province', 'Our Country', '', '555-555-5555', '', '

    Here are directions for how to get to our shop.

    ', '', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 35, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0); INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext`, `fulltext`, `state`, `catid`, `created`, `created_by`, `created_by_alias`, `modified`, `modified_by`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `images`, `urls`, `attribs`, `version`, `ordering`, `metakey`, `metadesc`, `access`, `hits`, `metadata`, `featured`, `language`, `xreference`) VALUES @@ -275,7 +275,7 @@ INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext` (8, 104, 'Beginners', 'beginners', '

    If this is your first Joomla! site or your first web site, you have come to the right place. Joomla will help you get your website up and running quickly and easily.

    Start off using your site by logging in using the administrator account you created when you installed Joomla.

    ', '

    Explore the articles and other resources right here on your site data to learn more about how Joomla works. (When you''re done reading, you can delete or archive all of this.) You will also probably want to visit the Beginners'' Areas of the Joomla documentation and support forums.

    You''ll also want to sign up for the Joomla Security Mailing list and the Announcements mailing list. For inspiration visit the Joomla! Site Showcase to see an amazing array of ways people use Joomla to tell their stories on the web.

    The basic Joomla installation will let you get a great site up and running, but when you are ready for more features the power of Joomla is in the creative ways that developers have extended it to do all kinds of things. Visit the Joomla! Extensions Directory to see thousands of extensions that can do almost anything you could want on a website. Can''t find what you need? You may want to find a Joomla professional in the Joomla! Resource Directory.

    Want to learn more? Consider attending a Joomla! Day or other event or joining a local Joomla! Users Group. Can''t find one near you? Start one yourself.

    ', 1, 19, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 1, '{"robots":"","author":"","rights":"","xreference":""}', 1, '*', ''), (9, 105, 'Contacts', 'contact', '

    The contact component provides a way to provide contact forms and information for your site or to create a complex directory that can be used for many different purposes. Help

    ', '', 1, 21, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (10, 106, 'Content', 'content', '

    The content component (com_content) is what you use to write articles. It is extremely flexible and has the largest number of built in views. Articles can be created and edited from the front end, making content the easiest component to use to create your site content. Help

    ', '', 1, 21, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}', 1, 1, '', '', 1, 2, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), -(11, 107, 'Cradle Mountain', 'cradle-mountain', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/250px_cradle_mountain_seen_from_barn_bluff.jpg","float_intro":"","image_intro_alt":"Cradle Mountain","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_cradle_mountain_seen_from_barn_bluff.jpg","float_fulltext":"none","image_fulltext_alt":"Cradle Mountain","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Alan J.W.C. License: GNU Free Documentation License v . 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(11, 107, 'Cradle Mountain', 'cradle-mountain', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/250px_cradle_mountain_seen_from_barn_bluff.jpg","float_intro":"","image_intro_alt":"Cradle Mountain","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_cradle_mountain_seen_from_barn_bluff.jpg","float_fulltext":"none","image_fulltext_alt":"Cradle Mountain","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Alan J.W.C. License: GNU Free Documentation License v . 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (12, 110, 'Custom Module', 'custom-module', '

    This module allows you to create your own Module using a WYSIWYG editor. Help

    {loadmodule custom,Custom}
    ', '', 1, 66, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (13, 111, 'Directions', 'directions', '

    Here''s how to find our shop.

    By car

    Drive along Main Street to the intersection with First Avenue. Look for our sign.

    By foot

    From the center of town, walk north on Main Street until you see our sign.

    By bus

    Take the #73 Bus to the last stop. We are on the north east corner.

    ', '', 1, 29, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 2, '', '', 1, 3, '', 0, '*', ''), (14, 112, 'Editors', 'editors', '

    Editors are used thoughout Joomla! where content is created. TinyMCE is the default choice in most locations although CodeMirror is used in the template manager. No Editor provides a text box for html content.

    Default on:

    Default off:

    • None
    ', '', 1, 25, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 5, '', '', 1, 0, '', 0, '*', ''), @@ -285,11 +285,11 @@ INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext` (18, 116, 'Second Blog Post', 'second-blog-post', '

    Lorem Ipsum is text that is traditionally used by designers when working on a site before the content is ready.

    Pellentesque bibendum metus ut dolor fermentum ut pulvinar tortor hendrerit. Nam vel odio vel diam tempus iaculis in non urna. Curabitur scelerisque, nunc id interdum vestibulum, felis elit luctus dui, ac dapibus tellus mauris tempus augue. Duis congue facilisis lobortis. Phasellus neque erat, tincidunt non lacinia sit amet, rutrum vitae nunc. Sed placerat lacinia fermentum. Integer justo sem, cursus id tristique eget, accumsan vel sapien. Curabitur ipsum neque, elementum vel vestibulum ut, lobortis a nisl. Fusce malesuada mollis purus consectetur auctor. Morbi tellus nunc, dapibus sit amet rutrum vel, laoreet quis mauris. Aenean nec sem nec purus bibendum venenatis. Mauris auctor commodo libero, in adipiscing dui adipiscing eu. Praesent eget orci ac nunc sodales varius.

    ', '

    Nam eget venenatis lorem. Vestibulum a interdum sapien. Suspendisse potenti. Quisque auctor purus nec sapien venenatis vehicula malesuada velit vehicula. Fusce vel diam dolor, quis facilisis tortor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque libero nisi, pellentesque quis cursus sit amet, vehicula vitae nisl. Curabitur nec nunc ac sem tincidunt auctor. Phasellus in mattis magna. Donec consequat orci eget tortor ultricies rutrum. Mauris luctus vulputate molestie. Proin tincidunt vehicula euismod. Nam congue leo non erat cursus a adipiscing ipsum congue. Nulla iaculis purus sit amet turpis aliquam sit amet dapibus odio tincidunt. Ut augue diam, congue ut commodo pellentesque, fermentum mattis leo. Sed iaculis urna id enim dignissim sodales at a ipsum. Quisque varius lobortis mollis. Nunc purus magna, pellentesque pellentesque convallis sed, varius id ipsum. Etiam commodo mi mollis erat scelerisque fringilla. Nullam bibendum massa sagittis diam ornare rutrum.

    Praesent convallis metus ut elit faucibus tempus in quis dui. Donec fringilla imperdiet nibh, sit amet fringilla velit congue et. Quisque commodo luctus ligula, vitae porttitor eros venenatis in. Praesent aliquet commodo orci id varius. Nulla nulla nibh, varius id volutpat nec, sagittis nec eros. Cras et dui justo. Curabitur malesuada facilisis neque, sed tempus massa tincidunt ut. Sed suscipit odio in lacus auctor vehicula non ut lacus. In hac habitasse platea dictumst. Sed nulla nisi, lacinia in viverra at, blandit vel tellus. Nulla metus erat, ultrices non pretium vel, varius nec sem. Morbi sollicitudin mattis lacus quis pharetra. Donec tincidunt mollis pretium. Proin non libero justo, vitae mattis diam. Integer vel elit in enim varius posuere sed vitae magna. Duis blandit tempor elementum. Vestibulum molestie dui nisi.

    Curabitur volutpat interdum lorem sed tempus. Sed placerat quam non ligula lacinia sodales. Cras ultrices justo at nisi luctus hendrerit. Quisque sit amet placerat justo. In id sapien eu neque varius pharetra sed in sapien. Etiam nisl nunc, suscipit sed gravida sed, scelerisque ut nisl. Mauris quis massa nisl, aliquet posuere ligula. Etiam eget tortor mauris. Sed pellentesque vestibulum commodo. Mauris vitae est a libero dapibus dictum fringilla vitae magna.

    Nulla facilisi. Praesent eget elit et mauris gravida lobortis ac nec risus. Ut vulputate ullamcorper est, volutpat feugiat lacus convallis non. Maecenas quis sem odio, et aliquam libero. Integer vel tortor eget orci tincidunt pulvinar interdum at erat. Integer ullamcorper consequat eros a pellentesque. Cras sagittis interdum enim in malesuada. Etiam non nunc neque. Fusce non ligula at tellus porta venenatis. Praesent tortor orci, fermentum sed tincidunt vel, varius vel dui. Duis pulvinar luctus odio, eget porta justo vulputate ac. Nulla varius feugiat lorem sed tempor. Phasellus pulvinar dapibus magna eget egestas. In malesuada lectus at justo pellentesque vitae rhoncus nulla ultrices. Proin ut sem sem. Donec eu suscipit ipsum. Cras eu arcu porttitor massa feugiat aliquet at quis nisl.

    ', 1, 27, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 2, '', 0, '*', ''), (19, 117, 'Footer Module', 'footer-module', '

    This module shows the Joomla! copyright information. Help

    {loadmodule footer,Footer}
    ', '', 1, 66, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 3, '', '', 1, 0, '', 0, '*', ''), (20, 118, 'Fruit Shop', 'fruit-shop', '

    Welcome to the Fruit Shop

    We sell fruits from around the world. Please use our website to learn more about our business. We hope you will come to our shop and buy some fruit.

    This mini site will show you how you might want to set up a site for a business, in this example one selling fruit. It shows how to use access controls to manage your site content. If you were building a real site, you might want to extend it with e-commerce, a catalog, mailing lists or other enhancements, many of which are available through the Joomla! Extensions Directory.

    To understand this site you will probably want to make one user with group set to customer and one with group set to grower. By logging in with different privileges you can see how access control works.

    ', '', 1, 29, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 10, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), -(21, 119, 'Getting Help', 'getting-help', '

    There are lots of places you can get help with Joomla!. In many places in your site administrator you will see the help icon. Click on this for more information about the options and functions of items on your screen. Other places to get help are:

    ', '', 1, 19, '2011-01-01 00:00:01', 123, 'Joomla', '2012-09-25 07:39:17', 123, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":null,"urlatext":"","targeta":"","urlb":null,"urlbtext":"","targetb":"","urlc":null,"urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","info_block_position":"0","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 2, 8, '', '', 1, 2, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(21, 119, 'Getting Help', 'getting-help', '

    There are lots of places you can get help with Joomla!. In many places in your site administrator you will see the help icon. Click on this for more information about the options and functions of items on your screen. Other places to get help are:

    ', '', 1, 19, '2011-01-01 00:00:01', 123, 'Joomla', '2012-09-25 07:39:17', 123, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":null,"urlatext":"","targeta":"","urlb":null,"urlbtext":"","targetb":"","urlc":null,"urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","info_block_position":"0","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 2, 8, '', '', 1, 2, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (22, 120, 'Getting Started', 'getting-started', '

    It''s easy to get started creating your website. Knowing some of the basics will help.

    What is a Content Management System?

    A content management system is software that allows you to create and manage webpages easily by separating the creation of your content from the mechanics required to present it on the web.

    In this site, the content is stored in a database. The look and feel are created by a template. The Joomla! software brings together the template and the content to create web pages.

    Site and Administrator

    Your site actually has two separate sites. The site (also called the front end) is what visitors to your site will see. The administrator (also called the back end) is only used by people managing your site. You can access the administrator by clicking the "Site Administrator" link on the "This Site" menu or by adding /administrator to the end of you domain name.

    Log in to the administrator using the username and password created during the installation of Joomla.

    Logging in

    To login to the front end of your site use the login form or the login menu link on the "This Site" menu. Use the user name and password that were created as part of the installation process. Once logged-in you will be able to create and edit articles.

    In managing your site, you will be able to create content that only logged-in users are able to see.

    Creating an article

    Once you are logged-in, a new menu will be visible. To create a new article, click on the "submit article" link on that menu.

    The new article interface gives you a lot of options, but all you need to do is add a title and put something in the content area. To make it easy to find, set the state to published and put it in the Joomla category.

    You can edit an existing article by clicking on the edit icon (this only displays to users who have the right to edit).

    Learn more

    There is much more to learn about how to use Joomla! to create the web site you envision. You can learn much more at the Joomla! documentation site and on the Joomla! forums.

    ', '', 1, 19, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 9, '', '', 1, 1, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (23, 121, 'Happy Orange Orchard', 'happy-orange-orchard', '

    At our orchard we grow the world''s best oranges as well as other citrus fruit such as lemons and grapefruit. Our family has been tending this orchard for generations.

    ', '', 1, 30, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 2, '', '', 1, 0, '', 0, '*', ''), (24, 122, 'Joomla!', 'joomla', '

    Congratulations! You have a Joomla site! Joomla makes it easy to build a website just the way you want it and keep it simple to update and maintain.

    Joomla is a flexible and powerful platform, whether you are building a small site for yourself or a huge site with hundreds of thousands of visitors. Joomla is open source, which means you can make it work just the way you want it to.

    The content in this installation of Joomla has been designed to give you an in depth tour of Joomla''s features.

    ', '', 1, 19, '2011-01-01 00:00:01', 123, 'Joomla', '2012-09-25 12:19:00', 123, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":null,"urlatext":"","targeta":"","urlb":null,"urlbtext":"","targetb":"","urlc":null,"urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","info_block_position":"0","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 3, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 1, '*', ''), -(25, 123, 'Koala', 'koala', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_koala_ag1.jpg","float_intro":"","image_intro_alt":"Koala Thumbnail","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_koala_ag1.jpg","float_fulltext":"","image_fulltext_alt":"Koala Climbing Tree","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Koala-ag1.jpg Author: Arnaud Gaillard License: Creative Commons Share Alike Attribution Generic 1.0"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(25, 123, 'Koala', 'koala', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_koala_ag1.jpg","float_intro":"","image_intro_alt":"Koala Thumbnail","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_koala_ag1.jpg","float_fulltext":"","image_fulltext_alt":"Koala Climbing Tree","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Koala-ag1.jpg Author: Arnaud Gaillard License: Creative Commons Share Alike Attribution Generic 1.0"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (26, 124, 'Language Switcher', 'language-switcher', '

    The language switcher module allows you to take advantage of the language tags that are available when content, modules and menu links are created.

    This module displays a list of available Content Languages for switching between them.

    When switching languages, it redirects to the Home page, or associated menu item, defined for the chosen language. Thereafter, the navigation will be the one defined for that language.

    The language filter plugin must be enabled for this module to work properly.

    Help

    To view an example of the language switch moduler module, go to the site administrator and enable the language filter plugin and the language switcher module labelled "language switcher" and visit the fruit shop or park sample sites. Then follow the instructions in this tutorial.

    ', '', 1, 67, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (27, 125, 'Latest Articles Module', 'latest-articles-module', '

    This module shows a list of the most recently published and current Articles. Some that are shown may have expired even though they are the most recent. Help

    {loadmodule articles_latest,Latest News}
    ', '', 1, 64, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, 'modules, content', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (28, 126, 'Login Module', 'login-module', '

    This module displays a username and password login form. It also displays a link to retrieve a forgotten password. If user registration is enabled (in the Global Configuration settings), another link will be shown to enable self-registration for users. Help

    {loadmodule login,login}
    ', '', 1, 65, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 2, '', '', 1, 0, '', 0, '*', ''), @@ -297,8 +297,8 @@ INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext` (30, 128, 'Most Read Content', 'most-read-content', '

    This module shows a list of the currently published Articles which have the highest number of page views. Help

    {loadmodule articles_popular,Articles Most Read}
    ', '', 1, 64, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, 'modules, content', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (31, 129, 'News Flash', 'news-flash', '

    Displays a set number of articles from a category based on date or random selection. Help

    {loadmodule articles_news,News Flash}
    ', '', 1, 64, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","page_title":"","alternative_readmore":"","layout":""}', 1, 3, 'modules, content', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (32, 130, 'Options', 'options', '

    As you make your Joomla! site you will control the details of the display using options also referred to as parameters. Options control everything from whether the author''s name is displayed to who can view what to the number of items shown on a list.

    Default options for each component are changed using the Options button on the component toolbar.

    Options can also be set on an individual item, such as an article or contact and in menu links.

    If you are happy with how your site looks, it is fine to leave all of the options set to the defaults that were created when your site was installed. As you become more experienced with Joomla you will use options more.

    ', '', 1, 19, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 10, '', '', 1, 1, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), -(33, 131, 'Phyllopteryx', 'phyllopteryx', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/200px_phyllopteryx_taeniolatus1.jpg","float_intro":"","image_intro_alt":"Phyllopteryx","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_phyllopteryx_taeniolatus1.jpg","float_fulltext":"","image_fulltext_alt":"Phyllopteryx","image_fulltext_caption":"Source: http:\\/\\/en.wikipedia.org\\/wiki\\/File:Phyllopteryx_taeniolatus1.jpg Author: Richard Ling License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), -(34, 132, 'Pinnacles', 'pinnacles', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_pinnacles_western_australia.jpg","float_intro":"","image_intro_alt":"Kings Canyon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_pinnacles_western_australia.jpg","float_fulltext":"","image_fulltext_alt":"Kings Canyon","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Pinnacles_Western_Australia.jpg Author: Martin Gloss License: GNU Free Documentation license v 1.2 or later."}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(33, 131, 'Phyllopteryx', 'phyllopteryx', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/200px_phyllopteryx_taeniolatus1.jpg","float_intro":"","image_intro_alt":"Phyllopteryx","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_phyllopteryx_taeniolatus1.jpg","float_fulltext":"","image_fulltext_alt":"Phyllopteryx","image_fulltext_caption":"Source: https:\\/\\/en.wikipedia.org\\/wiki\\/File:Phyllopteryx_taeniolatus1.jpg Author: Richard Ling License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(34, 132, 'Pinnacles', 'pinnacles', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_pinnacles_western_australia.jpg","float_intro":"","image_intro_alt":"Kings Canyon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_pinnacles_western_australia.jpg","float_fulltext":"","image_fulltext_alt":"Kings Canyon","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Pinnacles_Western_Australia.jpg Author: Martin Gloss License: GNU Free Documentation license v 1.2 or later."}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (35, 133, 'Professionals', 'professionals', '

    Joomla! 3 continues development of the Joomla Platform and CMS as a powerful and flexible way to bring your vision of the web to reality. With the new administrator interface and adoption of Twitter Bootstrap, the ability to control its look and the management of extensions is now complete.

    ', '

    Working with multiple template styles and overrides for the same views, creating the design you want is easier than it has ever been. Limiting support to PHP 5.3.10 and above makes Joomla lighter and faster than ever.

    The separation of the Joomla! Platform project from the Joomla! CMS project makes continuous development of new, powerful APIs and continuous improvement of existing APIs possible while maintaining the stability of the CMS that millions of webmasters and professionals rely upon.

    ', 1, 19, '2011-01-01 00:00:01', 123, 'Joomla', '2012-09-25 07:14:30', 123, 0, '0000-00-00 00:00:00', '2011-01-09 16:41:13', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":null,"urlatext":"","targeta":"","urlb":null,"urlbtext":"","targetb":"","urlc":null,"urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","info_block_position":"0","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 2, 5, '', '', 1, 2, '{"robots":"","author":"","rights":"","xreference":""}', 1, '*', ''), (36, 134, 'Random Image Module', 'random-image-module', '

    This module displays a random image from your chosen image directory. Help

    {loadmodule random_image,Random Image}
    ', '', 1, 66, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (37, 135, 'Related Items Module', 'related-items-module', '

    This module displays other Articles that are related to the one currently being viewed. These relations are established by the Meta Keywords. All the keywords of the current Article are searched against all the keywords of all other published articles. Help

    {loadmodule related_items,Articles Related Items}
    ', '', 1, 64, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, 'modules, content', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), @@ -307,11 +307,11 @@ INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext` (40, 138, 'Search Module', 'search-module', '

    This module will display a search box. Help

    {loadmodule search,Search}
    ', '', 1, 67, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 4, '', '', 1, 0, '', 0, '*', ''), (41, 139, 'Search ', 'search-plugin', '

    The search component uses plugins to control which parts of your Joomla! site are searched. You may choose to turn off some areas to improve performance or for other reasons. Many third party Joomla! extensions have search plugins that extend where search takes place.

    Default On:

    ', '', 1, 25, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''), (42, 140, 'Site Map', 'site-map', '

    {loadposition sitemapload}

    By putting all of your content into nested categories you can give users and search engines access to everything using a menu.

    ', '', 1, 14, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 3, '', 0, '*', ''), -(43, 141, 'Spotted Quoll', 'spotted-quoll', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/220px_spottedquoll_2005_seanmcclean.jpg","float_intro":"","image_intro_alt":"Spotted Quoll","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/789px_spottedquoll_2005_seanmcclean.jpg","float_fulltext":"","image_fulltext_alt":"Spotted Quoll","image_fulltext_caption":"Source: http:\\/\\/en.wikipedia.org\\/wiki\\/File:SpottedQuoll_2005_SeanMcClean.jpg Author: Sean McClean License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(43, 141, 'Spotted Quoll', 'spotted-quoll', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/220px_spottedquoll_2005_seanmcclean.jpg","float_intro":"","image_intro_alt":"Spotted Quoll","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/789px_spottedquoll_2005_seanmcclean.jpg","float_fulltext":"","image_fulltext_alt":"Spotted Quoll","image_fulltext_caption":"Source: https:\\/\\/en.wikipedia.org\\/wiki\\/File:SpottedQuoll_2005_SeanMcClean.jpg Author: Sean McClean License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (44, 142, 'Statistics Module', 'statistics', '

    This module shows information about your server installation together with statistics on the Web site users, number of Articles in your database and the number of Web links you provide.

    {loadmodule mod_stats,Statistics}
    ', '', 1, 67, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 5, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (45, 143, 'Syndicate Module', 'syndicate-module', '

    The syndicate module will display a link that allows users to take a feed from your site. It will only display on pages for which feeds are possible. That means it will not display on single article, contact or weblinks pages, such as this one. Help

    {loadposition syndicate,Syndicate}
    ', '', 1, 67, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 6, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (46, 144, 'System', 'system', '

    System plugins operate every time a page on your site loads. They control such things as your URLS, whether users can check a "remember me" box on the login module, and whether caching is enabled. New is the redirect plugin that together with the redirect component will assist you in managing changes in URLs.

    Default on:

    Default off:

    ', '', 1, 25, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), -(47, 145, 'The Joomla! Community', 'the-joomla-community', '

    Joomla means All Together, and it is a community of people all working and having fun together that makes Joomla possible. Thousands of people each year participate in the Joomla community, and we hope you will be one of them.

    People with all kinds of skills, of all skill levels and from around the world are welcome to join in. Participate in the Joomla.org family of websites (the forum is a great place to start). Come to a Joomla! event. Join or start a Joomla! Users Group. Whether you are a developer, site administrator, designer, end user or fan, there are ways for you to participate and contribute.

    ', '', 1, 19, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 1, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(47, 145, 'The Joomla! Community', 'the-joomla-community', '

    Joomla means All Together, and it is a community of people all working and having fun together that makes Joomla possible. Thousands of people each year participate in the Joomla community, and we hope you will be one of them.

    People with all kinds of skills, of all skill levels and from around the world are welcome to join in. Participate in the Joomla.org family of websites (the forum is a great place to start). Come to a Joomla! event. Join or start a Joomla! Users Group. Whether you are a developer, site administrator, designer, end user or fan, there are ways for you to participate and contribute.

    ', '', 1, 19, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 1, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (48, 146, 'The Joomla! Project', 'the-joomla-project', '

    The Joomla Project consists of all of the people who make and support the Joomla Web Platform and Content Management System.

    Our mission is to provide a flexible platform for digital publishing and collaboration.

    The core values are:

    • Freedom
    • Equality
    • Trust
    • Community
    • Collaboration
    • Usability

    In our vision, we see:

    • People publishing and collaborating in their communities and around the world
    • Software that is free, secure, and high-quality
    • A community that is enjoyable and rewarding to participate in
    • People around the world using their preferred languages
    • A project that acts autonomously
    • A project that is socially responsible
    • A project dedicated to maintaining the trust of its users

    There are millions of users around the world and thousands of people who contribute to the Joomla Project. They work in three main groups: the Production Working Group, responsible for everything that goes into software and documentation; the Community Working Group, responsible for creating a nurturing the community; and Open Source Matters, the non profit organization responsible for managing legal, financial and organizational issues.

    Joomla is a free and open source project, which uses the GNU General Public License version 2 or later.

    ', '', 1, 19, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 2, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (49, 147, 'Typography', 'typography', '

    H1 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H2 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H3 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H4 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H5 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz
    H6 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    P The quick brown fox ran over the lazy dog. THE QUICK BROWN FOX RAN OVER THE LAZY DOG.

    • Item
    • Item
    • Item
      • Item
      • Item
      • Item
        • Item
        • Item
        • Item
    1. tem
    2. Item
    3. Item
      1. Item
      2. Item
      3. Item
        1. Item
        2. Item
        3. Item
    ', '', 1, 23, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 8, '', 0, '*', ''), (50, 148, 'Upgraders', 'upgraders', '

    If you are an experienced Joomla! user, this Joomla site will seem very familiar but also very different. The biggest change is the new administrator interface and the adoption of responsive design. Hundreds of other improvements have been made.

    ', '', 1, 19, '2011-01-01 00:00:01', 123, 'Joomla', '2012-09-25 07:12:10', 123, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":null,"urlatext":"","targeta":"","urlb":null,"urlbtext":"","targetb":"","urlc":null,"urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","info_block_position":"0","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 3, 6, '', '', 1, 2, '{"robots":"","author":"","rights":"","xreference":""}', 1, '*', ''), @@ -319,14 +319,14 @@ INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext` (52, 150, 'Users', 'users-component', '

    The users extension lets your site visitors register, login and logout, change their passwords and other information, and recover lost passwords. In the administrator it allows you to create, block and manage users and create user groups and access levels. Help

    Please note that some of the user views will not display if you are not logged-in to the site.

    ', '', 1, 21, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}', 1, 5, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (53, 151, 'Using Joomla!', 'using-joomla', '

    With Joomla you can create anything from a simple personal website to a complex ecommerce or social site with millions of visitors.

    This section of the sample data provides you with a brief introduction to Joomla concepts and reference material to help you understand how Joomla works.

    When you no longer need the sample data, you can can simply unpublish the sample data category found within each extension in the site administrator or you may completely delete each item and all of the categories.

    ', '', 1, 19, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 7, '', '', 1, 5, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (56, 154, 'Who''s Online', 'whos-online', '

    The Who''s Online Module displays the number of Anonymous Users (e.g. Guests) and Registered Users (ones logged-in) that are currently accessing the Web site. Help

    {loadmodule whosonline,Who''s Online}
    ', '', 1, 65, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''), -(57, 155, 'Wobbegone', 'wobbegone', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_wobbegong.jpg","float_intro":"","image_intro_alt":"Wobbegon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_wobbegong.jpg","float_fulltext":"","image_fulltext_alt":"Wobbegon","image_fulltext_caption":"Source: http:\\/\\/en.wikipedia.org\\/wiki\\/File:Wobbegong.jpg Author: Richard Ling Rights: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(57, 155, 'Wobbegone', 'wobbegone', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_wobbegong.jpg","float_intro":"","image_intro_alt":"Wobbegon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_wobbegong.jpg","float_fulltext":"","image_fulltext_alt":"Wobbegon","image_fulltext_caption":"Source: https:\\/\\/en.wikipedia.org\\/wiki\\/File:Wobbegong.jpg Author: Richard Ling Rights: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (58, 156, 'Wonderful Watermelon', 'wonderful-watermelon', '

    Watermelon is a wonderful and healthy treat. We grow the world''s sweetest watermelon. We have the largest watermelon patch in our country.

    ', '', 1, 30, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''), (59, 157, 'Wrapper Module', 'wrapper-module', '

    This module shows an iFrame window to specified location. Help

    {loadmodule wrapper,Wrapper}
    ', '', 1, 67, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''), (60, 158, 'News Feeds', 'news-feeds', '

    News Feeds (com_newsfeeds) provides a way to organize and present news feeds. News feeds are a way that you present information from another site on your site. For example, the joomla.org website has numerous feeds that you can incorporate on your site. You an use menus to present a single feed, a list of feeds in a category, or a list of all feed categories. Help

    ', '', 1, 21, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (61, 159, 'Breadcrumbs Module', 'breadcrumbs-module', '

    Breadcrumbs provide a pathway for users to navigate through the site. Help

    {loadmodule breadcrumbs,breadcrumbs}
    ', '', 1, 75, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (62, 160, 'Content', 'content-plugins', '

    Content plugins run when specific kinds of pages are loaded. They do things ranging from protecting email addresses from harvesters to creating page breaks.

    Default on:

    ', '', 1, 25, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 7, '', '', 1, 0, '', 0, '*', ''), -(64, 162, 'Blue Mountain Rain Forest', 'blue-mountain-rain-forest', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_rainforest_bluemountainsnsw.jpg","float_intro":"none","image_intro_alt":"Rain Forest Blue Mountains","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/727px_rainforest_bluemountainsnsw.jpg","float_fulltext":"","image_fulltext_alt":"Rain Forest Blue Mountains","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Adam J.W.C. License: GNU Free Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), -(65, 163, 'Ormiston Pound', 'ormiston-pound', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/180px_ormiston_pound.jpg","float_intro":"none","image_intro_alt":"Ormiston Pound","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_ormiston_pound.jpg","float_fulltext":"","image_fulltext_alt":"Ormiston Pound","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Ormiston_Pound.JPG Author: License: GNU Free Public Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(64, 162, 'Blue Mountain Rain Forest', 'blue-mountain-rain-forest', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_rainforest_bluemountainsnsw.jpg","float_intro":"none","image_intro_alt":"Rain Forest Blue Mountains","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/727px_rainforest_bluemountainsnsw.jpg","float_fulltext":"","image_fulltext_alt":"Rain Forest Blue Mountains","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Adam J.W.C. License: GNU Free Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(65, 163, 'Ormiston Pound', 'ormiston-pound', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/180px_ormiston_pound.jpg","float_intro":"none","image_intro_alt":"Ormiston Pound","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_ormiston_pound.jpg","float_fulltext":"","image_fulltext_alt":"Ormiston Pound","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Ormiston_Pound.JPG Author: License: GNU Free Public Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (66, 165, 'Latest Users Module', 'latest-users-module', '

    This module displays the latest registered users. Help

    {loadmodule users_latest,Users Latest}
    ', '', 1, 65, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"1","link_titles":"","show_intro":"","show_category":"1","link_category":"1","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 3, '', '', 1, 0, '', 0, '*', ''), (67, 168, 'What''s New in 1.5?', 'whats-new-in-15', '

    This article deliberately archived as an example.

    As with previous releases, Joomla! provides a unified and easy-to-use framework for delivering content for Web sites of all kinds. To support the changing nature of the Internet and emerging Web technologies, Joomla! required substantial restructuring of its core functionality and we also used this effort to simplify many challenges within the current user interface. Joomla! 1.5 has many new features.

    In Joomla! 1.5, you''''ll notice:

    • Substantially improved usability, manageability, and scalability far beyond the original Mambo foundations
    • Expanded accessibility to support internationalisation, double-byte characters and right-to-left support for Arabic, Farsi, and Hebrew languages among others
    • Extended integration of external applications through Web services
    • Enhanced content delivery, template and presentation capabilities to support accessibility standards and content delivery to any destination
    • A more sustainable and flexible framework for Component and Extension developers
    • Backward compatibility with previous releases of Components, Templates, Modules, and other Extensions
    ', '', 2, 9, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 0, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (68, 170, 'Captcha', 'captcha', '

    The Captcha plugins are used to prevent spam submissions on your forms such as registration, contact and login. You basic installation of Joomla includes one Captcha plugin which leverages the ReCaptcha® service but you may install other plugins connecting to different Captcha systems.

    Default on:

    Note: ReCaptcha is a the trademark of Google Inc. and is an independent product not associated with or endorsed by the Joomla Project. You will need to register and agree to the Terms of Service at Recaptcha.net to use this plugin. Complete instructions are available if you edit the ReCaptcha plugin in the Plugin Manager.

    ', '', 1, 25, '2011-01-01 00:00:01', 123, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2012-01-17 03:20:45', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), @@ -359,7 +359,7 @@ INSERT IGNORE INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path` (21, 'menu', 'com_finder', 'Smart Search', '', 'Smart Search', 'index.php?option=com_finder', 'component', 0, 1, 1, 27, 0, '0000-00-00 00:00:00', 0, 0, 'class:finder', 0, '', 41, 42, 0, '*', 1), (22, 'menu', 'com_joomlaupdate', 'Joomla! Update', '', 'Joomla! Update', 'index.php?option=com_joomlaupdate', 'component', 0, 1, 1, 28, 0, '0000-00-00 00:00:00', 0, 0, 'class:joomlaupdate', 0, '', 41, 42, 0, '*', 1), (201, 'usermenu', 'Your Profile', 'your-profile', '', 'your-profile', 'index.php?option=com_users&view=profile', 'component', 1, 1, 1, 25, 0, '0000-00-00 00:00:00', 0, 2, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 231, 232, 0, '*', 0), -(207, 'top', 'Joomla.org', 'joomlaorg', '', 'joomlaorg', 'http://joomla.org', 'url', 1, 1, 1, 0, 0, '0000-00-00 00:00:00', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}', 229, 230, 0, '*', 0), +(207, 'top', 'Joomla.org', 'joomlaorg', '', 'joomlaorg', 'https://www.joomla.org/', 'url', 1, 1, 1, 0, 0, '0000-00-00 00:00:00', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}', 229, 230, 0, '*', 0), (229, 'aboutjoomla', 'Single Contact', 'single-contact', '', 'using-joomla/extensions/components/contact-component/single-contact', 'index.php?option=com_contact&view=contact&id=1', 'component', 1, 270, 5, 8, 0, '0000-00-00 00:00:00', 0, 1, '', 0, '{"show_category_crumb":"","presentation_style":"","show_contact_category":"","show_contact_list":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_links":"","linka_name":"","linkb_name":"","linkc_name":"","linkd_name":"","linke_name":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 79, 80, 0, '*', 0), (233, 'mainmenu', 'Login', 'login', '', 'login', 'index.php?option=com_users&view=login', 'component', 1, 1, 1, 25, 0, '0000-00-00 00:00:00', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 11, 12, 0, '*', 0), (234, 'parks', 'Park Blog', 'park-blog', '', 'park-blog', 'index.php?option=com_content&view=category&layout=blog&id=27', 'component', 1, 1, 1, 22, 0, '0000-00-00 00:00:00', 0, 1, '', 114, '{"maxLevel":"","show_empty_categories":"","show_description":"1","show_description_image":"1","show_category_title":"","show_cat_num_articles":"","num_leading_articles":"1","num_intro_articles":"4","num_columns":"1","num_links":"4","multi_column_order":"","orderby_pri":"","orderby_sec":"","order_date":"","show_pagination":"2","show_noauth":"","show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_readmore":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_hits":"","show_feed_link":"1","feed_summary":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 235, 236, 0, 'en-GB', 0), @@ -512,7 +512,7 @@ INSERT IGNORE INTO `#__modules` (`id`, `title`, `note`, `content`, `ordering`, ` (37, 'Syndicate Feeds', '', '', 1, 'syndicateload', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_syndicate', 1, 1, '{"text":"Feed Entries","format":"rss","layout":"","moduleclass_sfx":"","cache":"0"}', 0, '*'), (38, 'Users Latest', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_users_latest', 1, 1, '{"shownumber":"5","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"static"}', 0, '*'), (39, 'Who''s Online', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_whosonline', 1, 1, '{"showmode":"2","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 0, '*'), -(40, 'Wrapper', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_wrapper', 1, 1, '{"url":"http:\\/\\/www.youtube.com\\/embed\\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'), +(40, 'Wrapper', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_wrapper', 1, 1, '{"url":"https:\\/\\/www.youtube.com\\/embed\\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'), (41, 'Footer', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_footer', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'), (44, 'Login', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_login', 1, 1, '{"pretext":"","posttext":"","login":"280","logout":"280","greeting":"1","name":"0","usesecure":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 0, '*'), (45, 'Menu Example', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"mainmenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'), diff --git a/installation/sql/mysql/sample_testing.sql b/installation/sql/mysql/sample_testing.sql index 697d9a9ca3092..d02e79153ddee 100644 --- a/installation/sql/mysql/sample_testing.sql +++ b/installation/sql/mysql/sample_testing.sql @@ -181,9 +181,9 @@ INSERT IGNORE INTO `#__assets` (`id`, `parent_id`, `lft`, `rgt`, `level`, `name` (180, 93, 146, 147, 7, 'com_content.article.72', 'Popular Tags', '{"core.delete":{"6":1},"core.edit":{"6":1,"4":1},"core.edit.state":{"6":1,"5":1}}'); INSERT IGNORE INTO `#__banners` (`id`, `cid`, `type`, `name`, `alias`, `imptotal`, `impmade`, `clicks`, `clickurl`, `state`, `catid`, `description`, `custombannercode`, `sticky`, `ordering`, `metakey`, `params`, `own_prefix`, `metakey_prefix`, `purchase_type`, `track_clicks`, `track_impressions`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `reset`, `created`, `language`, `created_by`, `created_by_alias`, `modified`, `modified_by`, `version`) VALUES -(2, 3, 0, 'Shop 1', 'shop-1', 0, 0, 0, 'http://shop.joomla.org/amazoncom-bookstores.html', 1, 15, 'Get books about Joomla! at the Joomla! Book Shop.', '', 0, 1, '', '{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Books"}', 0, '', -1, 0, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '0000-00-00 00:00:00', 0, 1), -(3, 2, 0, 'Shop 2', 'shop-2', 0, 0, 0, 'http://shop.joomla.org', 1, 15, 'T Shirts, caps and more from the Joomla! Shop.', '', 0, 2, '', '{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Shop"}', 0, '', -1, 0, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '0000-00-00 00:00:00', 0, 1), -(4, 1, 0, 'Support Joomla!', 'support-joomla', 0, 0, 0, 'http://contribute.joomla.org', 1, 15, 'Your contributions of time, talent and money make Joomla possible.', '', 0, 3, '', '{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":""}', 0, '', -1, 0, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '0000-00-00 00:00:00', 0, 1); +(2, 3, 0, 'Shop 1', 'shop-1', 0, 0, 0, 'https://shop.joomla.org/amazoncom-bookstores.html', 1, 15, 'Get books about Joomla! at the Joomla! Book Shop.', '', 0, 1, '', '{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Books"}', 0, '', -1, 0, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '0000-00-00 00:00:00', 0, 1), +(3, 2, 0, 'Shop 2', 'shop-2', 0, 0, 0, 'https://shop.joomla.org', 1, 15, 'T Shirts, caps and more from the Joomla! Shop.', '', 0, 2, '', '{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Shop"}', 0, '', -1, 0, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '0000-00-00 00:00:00', 0, 1), +(4, 1, 0, 'Support Joomla!', 'support-joomla', 0, 0, 0, 'https://contribute.joomla.org', 1, 15, 'Your contributions of time, talent and money make Joomla possible.', '', 0, 3, '', '{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":""}', 0, '', -1, 0, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '0000-00-00 00:00:00', 0, 1); INSERT IGNORE INTO `#__banner_clients` (`id`, `name`, `contact`, `email`, `extrainfo`, `state`, `checked_out`, `checked_out_time`, `metakey`, `own_prefix`, `metakey_prefix`, `purchase_type`, `track_clicks`, `track_impressions`) VALUES (1, 'Joomla!', 'Administrator', 'banner@example.com', '', 1, 0, '0000-00-00 00:00:00', '', 0, '', -1, -1, -1), @@ -209,13 +209,13 @@ INSERT IGNORE INTO `#__categories` (`id`, `asset_id`, `parent_id`, `lft`, `rgt`, (25, 50, 20, 36, 37, 4, 'sample-data-articles/joomla/extensions/plugins', 'com_content', 'Plugins', 'plugins', '', '

    Plugin ImagePlugins are small task oriented extensions that enhance the Joomla! framework. Some are associated with particular extensions and others, such as editors, are used across all of Joomla. Most beginning users do not need to change any of the plugins that install with Joomla. Help

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (26, 51, 14, 40, 49, 2, 'sample-data-articles/park-site', 'com_content', 'Park Site', 'park-site', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, 'en-GB', 1), (27, 52, 26, 41, 42, 3, 'sample-data-articles/park-site/park-blog', 'com_content', 'Park Blog', 'park-blog', '', '

    Here is where I will blog all about the parks of Australia.

    You can make a blog on your website by creating a category to write your blog posts in (this one is called Park Blog). Each blog post will be an article in that category. If you make a category blog menu link with 1 column it will look like this page, if you display the category description then this part is displayed.

    To enhance your blog you may want to add extensions for comments, interacting with social network sites, tagging, and keeping in contact with your readers. You can also enable the syndication that is included in Joomla (in the Integration Options set Show Feed Link to Show and make sure to display the syndication module on the page).

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"category_layout":"","image":"images\\/sampledata\\/parks\\/banner_cradle.jpg"}', '', '', '{"author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, 'en-GB', 1), -(28, 53, 26, 43, 48, 3, 'sample-data-articles/park-site/photo-gallery', 'com_content', 'Photo Gallery', 'photo-gallery', '', '

    These are my photos from parks I have visited (I didn''t take them, they are all from Wikimedia Commons).

    This shows you how to make a simple image gallery using articles in com_content.

    In each article put a thumbnail image before a "readmore" and the full size image after it. Set the article to Show Intro Text: Hide.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, 'en-GB', 1), +(28, 53, 26, 43, 48, 3, 'sample-data-articles/park-site/photo-gallery', 'com_content', 'Photo Gallery', 'photo-gallery', '', '

    These are my photos from parks I have visited (I didn''t take them, they are all from Wikimedia Commons).

    This shows you how to make a simple image gallery using articles in com_content.

    In each article put a thumbnail image before a "readmore" and the full size image after it. Set the article to Show Intro Text: Hide.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, 'en-GB', 1), (29, 54, 14, 50, 55, 2, 'sample-data-articles/fruit-shop-site', 'com_content', 'Fruit Shop Site', 'fruit-shop-site', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (30, 55, 29, 51, 52, 3, 'sample-data-articles/fruit-shop-site/growers', 'com_content', 'Growers', 'growers', '', '

    We search the whole countryside for the best fruit growers.

    You can let each supplier have a page that he or she can edit. To see this in action you will need to create a user who is in the suppliers group.

    Create one page in the growers category for that user and make that supplier the author of the page. That user will be able to edit his or her page.

    This illustrates the use of the Edit Own permission.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (34, 59, 16, 64, 65, 2, 'sample-data-contact/park-site', 'com_contact', 'Park Site', 'park-site', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, 'en-GB', 1), (35, 60, 16, 66, 123, 2, 'sample-data-contact/shop-site', 'com_contact', 'Shop Site', 'shop-site', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (36, 61, 35, 67, 68, 3, 'sample-data-contact/shop-site/staff', 'com_contact', 'Staff', 'staff', '', '

    Please feel free to contact our staff at any time should you need assistance.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), -(37, 62, 35, 69, 122, 3, 'sample-data-contact/shop-site/fruit-encyclopedia', 'com_contact', 'Fruit Encyclopedia', 'fruit-encyclopedia', '', '

    Our directory of information about different kinds of fruit.

    We love fruit and want the world to know more about all of its many varieties.

    Although it is small now, we work on it whenever we have a chance.

    All of the images can be found in Wikimedia Commons.

    Apples

    This encyclopedia is implemented using the contact component, each fruit a separate contact and a category for each letter. A CSS style is used to create the horizontal layout of the alphabet headings.

    If you wanted to, you could allow some users (such as your growers) to have access to just this category in the contact component and let them help you to create new content for the encyclopedia.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), +(37, 62, 35, 69, 122, 3, 'sample-data-contact/shop-site/fruit-encyclopedia', 'com_contact', 'Fruit Encyclopedia', 'fruit-encyclopedia', '', '

    Our directory of information about different kinds of fruit.

    We love fruit and want the world to know more about all of its many varieties.

    Although it is small now, we work on it whenever we have a chance.

    All of the images can be found in Wikimedia Commons.

    Apples

    This encyclopedia is implemented using the contact component, each fruit a separate contact and a category for each letter. A CSS style is used to create the horizontal layout of the alphabet headings.

    If you wanted to, you could allow some users (such as your growers) to have access to just this category in the contact component and let them help you to create new content for the encyclopedia.

    ', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (38, 63, 37, 70, 71, 4, 'sample-data-contact/shop-site/fruit-encyclopedia/a', 'com_contact', 'A', 'a', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (39, 64, 37, 72, 73, 4, 'sample-data-contact/shop-site/fruit-encyclopedia/b', 'com_contact', 'B', 'b', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), (40, 65, 37, 74, 75, 4, 'sample-data-contact/shop-site/fruit-encyclopedia/c', 'com_contact', 'C', 'c', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1), @@ -256,13 +256,13 @@ INSERT IGNORE INTO `#__categories` (`id`, `asset_id`, `parent_id`, `lft`, `rgt`, (77, 169, 1, 133, 134, 1, 'uncategorised', 'com_users', 'Uncategorised', 'uncategorised', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 42, '2011-01-01 00:00:01', 0, '0000-00-00 00:00:00', 0, '*', 1); INSERT IGNORE INTO `#__contact_details` (`id`, `name`, `alias`, `con_position`, `address`, `suburb`, `state`, `country`, `postcode`, `telephone`, `fax`, `misc`, `image`, `email_to`, `default_con`, `published`, `checked_out`, `checked_out_time`, `ordering`, `params`, `user_id`, `catid`, `access`, `mobile`, `webpage`, `sortname1`, `sortname2`, `sortname3`, `language`, `created`, `created_by`, `created_by_alias`, `modified`, `modified_by`, `metakey`, `metadesc`, `metadata`, `featured`, `xreference`, `publish_up`, `publish_down`, `version`, `hits`) VALUES -(1, 'Contact Name Here', 'name', 'Position', 'Street Address', 'Suburb', 'State', 'Country', 'Zip Code', 'Telephone', 'Fax', '

    Information about or by the contact.

    ', 'images/powered_by.png', 'email@example.com', 1, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"http:\\/\\/twitter.com\\/joomla","linkb_name":"YouTube","linkb":"http:\\/\\/www.youtube.com\\/user\\/joomla","linkc_name":"Facebook","linkc":"http:\\/\\/www.facebook.com\\/joomla","linkd_name":"FriendFeed","linkd":"http:\\/\\/friendfeed.com\\/joomla","linke_name":"Scribd","linke":"http:\\/\\/www.scribd.com\\/people\\/view\\/504592-joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 16, 1, '', '', 'last', 'first', 'middle', 'en-GB', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), +(1, 'Contact Name Here', 'name', 'Position', 'Street Address', 'Suburb', 'State', 'Country', 'Zip Code', 'Telephone', 'Fax', '

    Information about or by the contact.

    ', 'images/powered_by.png', 'email@example.com', 1, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"https:\\/\\/twitter.com\\/joomla","linkb_name":"YouTube","linkb":"https:\\/\\/www.youtube.com\\/user\\/joomla","linkc_name":"Facebook","linkc":"https:\\/\\/www.facebook.com\\/joomla","linkd_name":"FriendFeed","linkd":"http:\\/\\/friendfeed.com\\/joomla","linke_name":"Scribd","linke":"https:\\/\\/www.scribd.com\\/user\\/504592\\/Joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 16, 1, '', '', 'last', 'first', 'middle', 'en-GB', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), (2, 'Webmaster', 'webmaster', '', '', '', '', '', '', '', '', '', '', 'webmaster@example.com', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"1","show_email_copy":"1","banned_email":"","banned_subject":"","banned_text":"","validate_session":"1","custom_reply":"","redirect":""}', 0, 34, 1, '', '', '', '', '', 'en-GB', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), (3, 'Owner', 'owner', '', '', '', '', '', '', '', '', '

    I''m the owner of this store.

    ', '', '', 0, 1, 0, '0000-00-00 00:00:00', 2, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 36, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), (4, 'Buyer', 'buyer', '', '', '', '', '', '', '', '', '

    I am in charge of buying fruit. If you sell good fruit, contact me.

    ', '', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"0","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 36, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), -(5, 'Bananas', 'bananas', 'Scientific Name: Musa', 'Image Credit: EnzikRights: Creative Commons Share Alike Unported 3.0Source: http://commons.wikimedia.org/wiki/File:Bananas_-_Morocco.jpg', '', 'Type: Herbaceous', 'Large Producers: India, China, Brasil', '', '', '', '

    Bananas are a great source of potassium.

    ', 'images/sampledata/fruitshop/bananas_2.jpg', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"show_with_link","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"1","show_email":"","show_street_address":"","show_suburb":"","show_state":"1","show_postcode":"","show_country":"1","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Banana English","linka":"http:\\/\\/en.wikipedia.org\\/wiki\\/Banana","linkb_name":"Wikipedia: \\u0939\\u093f\\u0928\\u094d\\u0926\\u0940 \\u0915\\u0947\\u0932\\u093e","linkb":"http:\\/\\/hi.wikipedia.org\\/wiki\\/%E0%A4%95%E0%A5%87%E0%A4%B2%E0%A4%BE","linkc_name":"Wikipedia:Banana Portugu\\u00eas","linkc":"http:\\/\\/pt.wikipedia.org\\/wiki\\/Banana","linkd_name":"Wikipedia: \\u0411\\u0430\\u043d\\u0430\\u043d \\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439","linkd":"http:\\/\\/ru.wikipedia.org\\/\\u0411\\u0430\\u043d\\u0430\\u043d","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 39, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), -(6, 'Apples', 'apples', 'Scientific Name: Malus domestica', 'Image Credit: FievetRights: Public DomainSource: http://commons.wikimedia.org/wiki/File:Pommes_vertes.JPG', '', 'Family: Rosaceae', 'Large: Producers: China, United States', '', '', '', '

    Apples are a versatile fruit, used for eating, cooking, and preserving.

    There are more that 7500 different kinds of apples grown around the world.

    ', 'images/sampledata/fruitshop/apple.jpg', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Apples English","linka":"http:\\/\\/en.wikipedia.org\\/wiki\\/Apple","linkb_name":"Wikipedia: Manzana Espa\\u00f1ol ","linkb":"http:\\/\\/es.wikipedia.org\\/wiki\\/Manzana","linkc_name":"Wikipedia: \\u82f9\\u679c \\u4e2d\\u6587","linkc":"http:\\/\\/zh.wikipedia.org\\/zh\\/\\u82f9\\u679c","linkd_name":"Wikipedia: Tofaa Kiswahili","linkd":"http:\\/\\/sw.wikipedia.org\\/wiki\\/Tofaa","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 38, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), -(7, 'Tamarind', 'tamarind', 'Scientific Name: Tamarindus indica', 'Image Credit: Franz Eugen Köhler, Köhler''s Medizinal-Pflanzen Rights: Public DomainSource:http://commons.wikimedia.org/wiki/File:Koeh-134.jpg', '', 'Family: Fabaceae', 'Large Producers: India, United States', '', '', '', '

    Tamarinds are a versatile fruit used around the world. In its young form it is used in hot sauces; ripened it is the basis for many refreshing drinks.

    ', 'images/sampledata/fruitshop/tamarind.jpg', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Tamarind English","linka":"http:\\/\\/en.wikipedia.org\\/wiki\\/Tamarind","linkb_name":"Wikipedia: \\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 \\u09ac\\u09be\\u0982\\u09b2\\u09be ","linkb":"http:\\/\\/bn.wikipedia.org\\/wiki\\/\\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 ","linkc_name":"Wikipedia: Tamarinier Fran\\u00e7ais","linkc":"http:\\/\\/fr.wikipedia.org\\/wiki\\/Tamarinier","linkd_name":"Wikipedia:Tamaline lea faka-Tonga","linkd":"http:\\/\\/to.wikipedia.org\\/wiki\\/Tamaline","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 57, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), +(5, 'Bananas', 'bananas', 'Scientific Name: Musa', 'Image Credit: EnzikRights: Creative Commons Share Alike Unported 3.0Source: https://commons.wikimedia.org/wiki/File:Bananas_-_Morocco.jpg', '', 'Type: Herbaceous', 'Large Producers: India, China, Brasil', '', '', '', '

    Bananas are a great source of potassium.

    ', 'images/sampledata/fruitshop/bananas_2.jpg', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"show_with_link","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"1","show_email":"","show_street_address":"","show_suburb":"","show_state":"1","show_postcode":"","show_country":"1","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Banana English","linka":"https:\\/\\/en.wikipedia.org\\/wiki\\/Banana","linkb_name":"Wikipedia: \\u0939\\u093f\\u0928\\u094d\\u0926\\u0940 \\u0915\\u0947\\u0932\\u093e","linkb":"https:\\/\\/hi.wikipedia.org\\/wiki\\/%E0%A4%95%E0%A5%87%E0%A4%B2%E0%A4%BE","linkc_name":"Wikipedia:Banana Portugu\\u00eas","linkc":"https:\\/\\/pt.wikipedia.org\\/wiki\\/Banana","linkd_name":"Wikipedia: \\u0411\\u0430\\u043d\\u0430\\u043d \\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439","linkd":"https:\\/\\/ru.wikipedia.org\\/\\u0411\\u0430\\u043d\\u0430\\u043d","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 39, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), +(6, 'Apples', 'apples', 'Scientific Name: Malus domestica', 'Image Credit: FievetRights: Public DomainSource: https://commons.wikimedia.org/wiki/File:Pommes_vertes.JPG', '', 'Family: Rosaceae', 'Large: Producers: China, United States', '', '', '', '

    Apples are a versatile fruit, used for eating, cooking, and preserving.

    There are more that 7500 different kinds of apples grown around the world.

    ', 'images/sampledata/fruitshop/apple.jpg', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Apples English","linka":"https:\\/\\/en.wikipedia.org\\/wiki\\/Apple","linkb_name":"Wikipedia: Manzana Espa\\u00f1ol ","linkb":"https:\\/\\/es.wikipedia.org\\/wiki\\/Manzana","linkc_name":"Wikipedia: \\u82f9\\u679c \\u4e2d\\u6587","linkc":"https:\\/\\/zh.wikipedia.org\\/zh\\/\\u82f9\\u679c","linkd_name":"Wikipedia: Tofaa Kiswahili","linkd":"https:\\/\\/sw.wikipedia.org\\/wiki\\/Tofaa","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 38, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), +(7, 'Tamarind', 'tamarind', 'Scientific Name: Tamarindus indica', 'Image Credit: Franz Eugen Köhler, Köhler''s Medizinal-Pflanzen Rights: Public DomainSource:https://commons.wikimedia.org/wiki/File:Koeh-134.jpg', '', 'Family: Fabaceae', 'Large Producers: India, United States', '', '', '', '

    Tamarinds are a versatile fruit used around the world. In its young form it is used in hot sauces; ripened it is the basis for many refreshing drinks.

    ', 'images/sampledata/fruitshop/tamarind.jpg', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Tamarind English","linka":"https:\\/\\/en.wikipedia.org\\/wiki\\/Tamarind","linkb_name":"Wikipedia: \\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 \\u09ac\\u09be\\u0982\\u09b2\\u09be ","linkb":"https:\\/\\/bn.wikipedia.org\\/wiki\\/\\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 ","linkc_name":"Wikipedia: Tamarinier Fran\\u00e7ais","linkc":"https:\\/\\/fr.wikipedia.org\\/wiki\\/Tamarinier","linkd_name":"Wikipedia:Tamaline lea faka-Tonga","linkd":"https:\\/\\/to.wikipedia.org\\/wiki\\/Tamaline","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 57, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0), (8, 'Shop Address', 'shop-address', '', '', 'Our City', 'Our Province', 'Our Country', '', '555-555-5555', '', '

    Here are directions for how to get to our shop.

    ', '', '', 0, 1, 0, '0000-00-00 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 35, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 0); INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext`, `fulltext`, `state`, `catid`, `created`, `created_by`, `created_by_alias`, `modified`, `modified_by`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `images`, `urls`, `attribs`, `version`, `ordering`, `metakey`, `metadesc`, `access`, `hits`, `metadata`, `featured`, `language`, `xreference`) VALUES @@ -276,7 +276,7 @@ INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext` (8, 104, 'Beginners', 'beginners', '

    If this is your first Joomla! site or your first web site, you have come to the right place. Joomla will help you get your website up and running quickly and easily.

    Start off using your site by logging in using the administrator account you created when you installed Joomla.

    ', '

    Explore the articles and other resources right here on your site data to learn more about how Joomla works. (When you''re done reading, you can delete or archive all of this.) You will also probably want to visit the Beginners'' Areas of the Joomla documentation and support forums.

    You''ll also want to sign up for the Joomla Security Mailing list and the Announcements mailing list. For inspiration visit the Joomla! Site Showcase to see an amazing array of ways people use Joomla to tell their stories on the web.

    The basic Joomla installation will let you get a great site up and running, but when you are ready for more features the power of Joomla is in the creative ways that developers have extended it to do all kinds of things. Visit the Joomla! Extensions Directory to see thousands of extensions that can do almost anything you could want on a website. Can''t find what you need? You may want to find a Joomla professional in the Joomla! Resource Directory.

    Want to learn more? Consider attending a Joomla! Day or other event or joining a local Joomla! Users Group. Can''t find one near you? Start one yourself.

    ', 1, 19, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 1, '*', ''), (9, 105, 'Contacts', 'contact', '

    The contact component provides a way to provide contact forms and information for your site or to create a complex directory that can be used for many different purposes. Help

    ', '', 1, 21, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (10, 106, 'Content', 'content', '

    The content component (com_content) is what you use to write articles. It is extremely flexible and has the largest number of built in views. Articles can be created and edited from the front end, making content the easiest component to use to create your site content. Help

    ', '', 1, 21, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), -(11, 107, 'Cradle Mountain', 'cradle-mountain', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/250px_cradle_mountain_seen_from_barn_bluff.jpg","float_intro":"","image_intro_alt":"Cradle Mountain","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_cradle_mountain_seen_from_barn_bluff.jpg","float_fulltext":"none","image_fulltext_alt":"Cradle Mountain","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Alan J.W.C. License: GNU Free Documentation License v . 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(11, 107, 'Cradle Mountain', 'cradle-mountain', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/250px_cradle_mountain_seen_from_barn_bluff.jpg","float_intro":"","image_intro_alt":"Cradle Mountain","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_cradle_mountain_seen_from_barn_bluff.jpg","float_fulltext":"none","image_fulltext_alt":"Cradle Mountain","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Alan J.W.C. License: GNU Free Documentation License v . 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (12, 110, 'Custom Module', 'custom-module', '

    This module allows you to create your own Module using a WYSIWYG editor. Help

    {loadmodule custom,Custom}
    ', '', 1, 66, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (13, 111, 'Directions', 'directions', '

    Here''s how to find our shop.

    By car

    Drive along Main Street to the intersection with First Avenue. Look for our sign.

    By foot

    From the center of town, walk north on Main Street until you see our sign.

    By bus

    Take the #73 Bus to the last stop. We are on the north east corner.

    ', '', 1, 29, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 2, '', '', 1, 0, '', 0, '*', ''), (14, 112, 'Editors', 'editors', '

    Editors are used thoughout Joomla! where content is created. TinyMCE is the default choice in most locations although CodeMirror is used in the template manager. No Editor provides a text box for html content.

    Default on:

    Default off:

    • None
    ', '', 1, 25, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 5, '', '', 1, 0, '', 0, '*', ''), @@ -286,11 +286,11 @@ INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext` (18, 116, 'Second Blog Post', 'second-blog-post', '

    Lorem Ipsum is text that is traditionally used by designers when working on a site before the content is ready.

    Pellentesque bibendum metus ut dolor fermentum ut pulvinar tortor hendrerit. Nam vel odio vel diam tempus iaculis in non urna. Curabitur scelerisque, nunc id interdum vestibulum, felis elit luctus dui, ac dapibus tellus mauris tempus augue. Duis congue facilisis lobortis. Phasellus neque erat, tincidunt non lacinia sit amet, rutrum vitae nunc. Sed placerat lacinia fermentum. Integer justo sem, cursus id tristique eget, accumsan vel sapien. Curabitur ipsum neque, elementum vel vestibulum ut, lobortis a nisl. Fusce malesuada mollis purus consectetur auctor. Morbi tellus nunc, dapibus sit amet rutrum vel, laoreet quis mauris. Aenean nec sem nec purus bibendum venenatis. Mauris auctor commodo libero, in adipiscing dui adipiscing eu. Praesent eget orci ac nunc sodales varius.

    ', '

    Nam eget venenatis lorem. Vestibulum a interdum sapien. Suspendisse potenti. Quisque auctor purus nec sapien venenatis vehicula malesuada velit vehicula. Fusce vel diam dolor, quis facilisis tortor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque libero nisi, pellentesque quis cursus sit amet, vehicula vitae nisl. Curabitur nec nunc ac sem tincidunt auctor. Phasellus in mattis magna. Donec consequat orci eget tortor ultricies rutrum. Mauris luctus vulputate molestie. Proin tincidunt vehicula euismod. Nam congue leo non erat cursus a adipiscing ipsum congue. Nulla iaculis purus sit amet turpis aliquam sit amet dapibus odio tincidunt. Ut augue diam, congue ut commodo pellentesque, fermentum mattis leo. Sed iaculis urna id enim dignissim sodales at a ipsum. Quisque varius lobortis mollis. Nunc purus magna, pellentesque pellentesque convallis sed, varius id ipsum. Etiam commodo mi mollis erat scelerisque fringilla. Nullam bibendum massa sagittis diam ornare rutrum.

    Praesent convallis metus ut elit faucibus tempus in quis dui. Donec fringilla imperdiet nibh, sit amet fringilla velit congue et. Quisque commodo luctus ligula, vitae porttitor eros venenatis in. Praesent aliquet commodo orci id varius. Nulla nulla nibh, varius id volutpat nec, sagittis nec eros. Cras et dui justo. Curabitur malesuada facilisis neque, sed tempus massa tincidunt ut. Sed suscipit odio in lacus auctor vehicula non ut lacus. In hac habitasse platea dictumst. Sed nulla nisi, lacinia in viverra at, blandit vel tellus. Nulla metus erat, ultrices non pretium vel, varius nec sem. Morbi sollicitudin mattis lacus quis pharetra. Donec tincidunt mollis pretium. Proin non libero justo, vitae mattis diam. Integer vel elit in enim varius posuere sed vitae magna. Duis blandit tempor elementum. Vestibulum molestie dui nisi.

    Curabitur volutpat interdum lorem sed tempus. Sed placerat quam non ligula lacinia sodales. Cras ultrices justo at nisi luctus hendrerit. Quisque sit amet placerat justo. In id sapien eu neque varius pharetra sed in sapien. Etiam nisl nunc, suscipit sed gravida sed, scelerisque ut nisl. Mauris quis massa nisl, aliquet posuere ligula. Etiam eget tortor mauris. Sed pellentesque vestibulum commodo. Mauris vitae est a libero dapibus dictum fringilla vitae magna.

    Nulla facilisi. Praesent eget elit et mauris gravida lobortis ac nec risus. Ut vulputate ullamcorper est, volutpat feugiat lacus convallis non. Maecenas quis sem odio, et aliquam libero. Integer vel tortor eget orci tincidunt pulvinar interdum at erat. Integer ullamcorper consequat eros a pellentesque. Cras sagittis interdum enim in malesuada. Etiam non nunc neque. Fusce non ligula at tellus porta venenatis. Praesent tortor orci, fermentum sed tincidunt vel, varius vel dui. Duis pulvinar luctus odio, eget porta justo vulputate ac. Nulla varius feugiat lorem sed tempor. Phasellus pulvinar dapibus magna eget egestas. In malesuada lectus at justo pellentesque vitae rhoncus nulla ultrices. Proin ut sem sem. Donec eu suscipit ipsum. Cras eu arcu porttitor massa feugiat aliquet at quis nisl.

    ', 1, 27, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''), (19, 117, 'Footer Module', 'footer-module', '

    This module shows the Joomla! copyright information. Help

    {loadmodule footer,Footer}
    ', '', 1, 66, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 3, '', '', 1, 0, '', 0, '*', ''), (20, 118, 'Fruit Shop', 'fruit-shop', '

    Welcome to the Fruit Shop

    We sell fruits from around the world. Please use our website to learn more about our business. We hope you will come to our shop and buy some fruit.

    This mini site will show you how you might want to set up a site for a business, in this example one selling fruit. It shows how to use access controls to manage your site content. If you were building a real site, you might want to extend it with e-commerce, a catalog, mailing lists or other enhancements, many of which are available through the Joomla! Extensions Directory.

    To understand this site you will probably want to make one user with group set to customer and one with group set to grower. By logging in with different privileges you can see how access control works.

    ', '', 1, 29, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), -(21, 119, 'Getting Help', 'getting-help', '

    There are lots of places you can get help with Joomla!. In many places in your site administrator you will see the help icon. Click on this for more information about the options and functions of items on your screen. Other places to get help are:

    ', '', 1, 19, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 8, '', '', 1, 0, '', 0, '*', ''), +(21, 119, 'Getting Help', 'getting-help', '

    There are lots of places you can get help with Joomla!. In many places in your site administrator you will see the help icon. Click on this for more information about the options and functions of items on your screen. Other places to get help are:

    ', '', 1, 19, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 8, '', '', 1, 0, '', 0, '*', ''), (22, 120, 'Getting Started', 'getting-started', '

    It''s easy to get started creating your website. Knowing some of the basics will help.

    What is a Content Management System?

    A content management system is software that allows you to create and manage webpages easily by separating the creation of your content from the mechanics required to present it on the web.

    In this site, the content is stored in a database. The look and feel are created by a template. The Joomla! software brings together the template and the content to create web pages.

    Site and Administrator

    Your site actually has two separate sites. The site (also called the front end) is what visitors to your site will see. The administrator (also called the back end) is only used by people managing your site. You can access the administrator by clicking the "Site Administrator" link on the "This Site" menu or by adding /administrator to the end of you domain name.

    Log in to the administrator using the username and password created during the installation of Joomla.

    Logging in

    To login to the front end of your site use the login form or the login menu link on the "This Site" menu. Use the user name and password that were created as part of the installation process. Once logged-in you will be able to create and edit articles.

    In managing your site, you will be able to create content that only logged-in users are able to see.

    Creating an article

    Once you are logged-in, a new menu will be visible. To create a new article, click on the "submit article" link on that menu.

    The new article interface gives you a lot of options, but all you need to do is add a title and put something in the content area. To make it easy to find, set the state to published and put it in the Joomla category.

    You can edit an existing article by clicking on the edit icon (this only displays to users who have the right to edit).

    Learn more

    There is much more to learn about how to use Joomla! to create the web site you envision. You can learn much more at the Joomla! documentation site and on the Joomla! forums.

    ', '', 1, 19, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 9, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (23, 121, 'Happy Orange Orchard', 'happy-orange-orchard', '

    At our orchard we grow the world''s best oranges as well as other citrus fruit such as lemons and grapefruit. Our family has been tending this orchard for generations.

    ', '', 1, 30, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 2, '', '', 1, 0, '', 0, '*', ''), -(24, 122, 'Joomla! Testing', 'joomla', '

    Thanks for helping us to test Joomla!

    We''re getting ready for the release of Joomla and we appreciate you helping us find and fix problems as we work.

    If you haven''t done testing before here are some tips.

    • Don''t delete the installation folder when you finish installing! While we''re working we turn that security feature off to make it easier to test.
    • Go to global configuration and set Error Reporting to Development (that''s on the server tab) and enable both debugging and language debugging (those are on the system tab). Don''t worry when you see ** around words --that means Joomla translation is doing its job.

    How to test

    • First, do the things you normally do and see if you spot any problems.
    • Look at all of the front end views and record any problems
    • Look at all the back end views and report any problems
    • See more ideas below

    What to look for

    • Any error messages that say things like Fatal Error or Strict or similar things that indicate that something is not working correctly.
    • Untranslated strings. You will know these because they look like this: ?STRING_HERE?
    • Problems of rendering--items not aligned correctly, missing or wrong images, pages that just don''t look right.
    • Unexpected behavior--anything that is working differently than it did in 2.5.

    Report problems

    If you find a problem please report it to the CMS Issue Tracker. You will need to register for a github.com account if you don''t have one.

    More Testing Ideas

    • Pick one module or view and test all of the parameters.
    • Install an extension and see if anything breaks (report to the developer unless you are positive it is a core bug).
    • Turn on caching with different options
    • Try different session options
    • Install a language and test all the layouts.
    • Try different environments (like different servers which may have different version of PHP) or try you have IIS with MySQLi or SqlSrv. With millions of users Joomla needs to be ready for unusual environments.
    • Try with SEF URLS on or off and also with Apache rewrite on or off (if you are on Apache).
    • Try different combinations of browsers (Chrome, IE, FireFox, Opera to start) and operating systems (Mac, Windows, Linux).
    • Yes grammar and spelling errors are bugs too -- just keep in mind that we use British spelling.
    • Visit the Feature Tracker and test a new feature.

    Testing changes

    You can also help Joomla by testing bug fixes and new features. A useful tool is the patchtester component which helps to simplify and automate the process. Report your feedback on the CMS Issue Tracker. If you enjoy helping Joomla this way, you may want to join the Joomla Bug Squad.

    ', '', 1, 19, '2011-01-01 00:00:01', 716, 'Joomla', '2013-10-15 14:57:20', 716, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":""}', 4, 2, '', '', 1, 73, '{"robots":"","author":"","rights":"","xreference":""}', 1, '*', ''), -(25, 123, 'Koala', 'koala', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_koala_ag1.jpg","float_intro":"","image_intro_alt":"Koala Thumbnail","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_koala_ag1.jpg","float_fulltext":"","image_fulltext_alt":"Koala Climbing Tree","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Koala-ag1.jpg Author: Arnaud Gaillard License: Creative Commons Share Alike Attribution Generic 1.0"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +(24, 122, 'Joomla! Testing', 'joomla', '

    Thanks for helping us to test Joomla!

    We''re getting ready for the release of Joomla and we appreciate you helping us find and fix problems as we work.

    If you haven''t done testing before here are some tips.

    • Don''t delete the installation folder when you finish installing! While we''re working we turn that security feature off to make it easier to test.
    • Go to global configuration and set Error Reporting to Development (that''s on the server tab) and enable both debugging and language debugging (those are on the system tab). Don''t worry when you see ** around words --that means Joomla translation is doing its job.

    How to test

    • First, do the things you normally do and see if you spot any problems.
    • Look at all of the front end views and record any problems
    • Look at all the back end views and report any problems
    • See more ideas below

    What to look for

    • Any error messages that say things like Fatal Error or Strict or similar things that indicate that something is not working correctly.
    • Untranslated strings. You will know these because they look like this: ?STRING_HERE?
    • Problems of rendering--items not aligned correctly, missing or wrong images, pages that just don''t look right.
    • Unexpected behavior--anything that is working differently than it did in 2.5.

    Report problems

    If you find a problem please report it to the CMS Issue Tracker. You will need to register for a github.com account if you don''t have one.

    More Testing Ideas

    • Pick one module or view and test all of the parameters.
    • Install an extension and see if anything breaks (report to the developer unless you are positive it is a core bug).
    • Turn on caching with different options
    • Try different session options
    • Install a language and test all the layouts.
    • Try different environments (like different servers which may have different version of PHP) or try you have IIS with MySQLi or SqlSrv. With millions of users Joomla needs to be ready for unusual environments.
    • Try with SEF URLS on or off and also with Apache rewrite on or off (if you are on Apache).
    • Try different combinations of browsers (Chrome, IE, FireFox, Opera to start) and operating systems (Mac, Windows, Linux).
    • Yes grammar and spelling errors are bugs too -- just keep in mind that we use British spelling.
    • Visit the Feature Tracker and test a new feature.

    Testing changes

    You can also help Joomla by testing bug fixes and new features. A useful tool is the patchtester component which helps to simplify and automate the process. Report your feedback on the CMS Issue Tracker. If you enjoy helping Joomla this way, you may want to join the Joomla Bug Squad.

    ', '', 1, 19, '2011-01-01 00:00:01', 716, 'Joomla', '2013-10-15 14:57:20', 716, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":""}', 4, 2, '', '', 1, 73, '{"robots":"","author":"","rights":"","xreference":""}', 1, '*', ''), +(25, 123, 'Koala', 'koala', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_koala_ag1.jpg","float_intro":"","image_intro_alt":"Koala Thumbnail","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_koala_ag1.jpg","float_fulltext":"","image_fulltext_alt":"Koala Climbing Tree","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Koala-ag1.jpg Author: Arnaud Gaillard License: Creative Commons Share Alike Attribution Generic 1.0"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext`, `fulltext`, `state`, `catid`, `created`, `created_by`, `created_by_alias`, `modified`, `modified_by`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `images`, `urls`, `attribs`, `version`, `ordering`, `metakey`, `metadesc`, `access`, `hits`, `metadata`, `featured`, `language`, `xreference`) VALUES (26, 124, 'Language Switcher', 'language-switcher', '

    The language switcher module allows you to take advantage of the language tags that are available when content, modules and menu links are created.

    This module displays a list of available Content Languages for switching between them.

    When switching languages, it redirects to the Home page, or associated menu item, defined for the chosen language. Thereafter, the navigation will be the one defined for that language.

    The language filter plugin must be enabled for this module to work properly.

    Help

    To view an example of the language switch moduler module, go to the site administrator and enable the language filter plugin and the language switcher module labelled "language switcher" and visit the fruit shop or park sample sites. Then follow the instructions in this tutorial.

    ', '', 1, 67, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (27, 125, 'Latest Articles Module', 'latest-articles-module', '

    This module shows a list of the most recently published and current Articles. Some that are shown may have expired even though they are the most recent. Help

    {loadmodule articles_latest,Latest News}
    ', '', 1, 64, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, 'modules, content', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), @@ -299,8 +299,8 @@ INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext` (30, 128, 'Most Read Content', 'most-read-content', '

    This module shows a list of the currently published Articles which have the highest number of page views. Help

    {loadmodule articles_popular,Articles Most Read}
    ', '', 1, 64, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, 'modules, content', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (31, 129, 'News Flash', 'news-flash', '

    Displays a set number of articles from a category based on date or random selection. Help

    {loadmodule articles_news,News Flash}
    ', '', 1, 64, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","page_title":"","alternative_readmore":"","layout":""}', 1, 3, 'modules, content', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (32, 130, 'Options', 'options', '

    As you make your Joomla! site you will control the details of the display using options also referred to as parameters. Options control everything from whether the author''s name is displayed to who can view what to the number of items shown on a list.

    Default options for each component are changed using the Options button on the component toolbar.

    Options can also be set on an individual item, such as an article or contact and in menu links.

    If you are happy with how your site looks, it is fine to leave all of the options set to the defaults that were created when your site was installed. As you become more experienced with Joomla you will use options more.

    ', '', 1, 19, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 10, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), -(33, 131, 'Phyllopteryx', 'phyllopteryx', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/200px_phyllopteryx_taeniolatus1.jpg","float_intro":"","image_intro_alt":"Phyllopteryx","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_phyllopteryx_taeniolatus1.jpg","float_fulltext":"","image_fulltext_alt":"Phyllopteryx","image_fulltext_caption":"Source: http:\\/\\/en.wikipedia.org\\/wiki\\/File:Phyllopteryx_taeniolatus1.jpg Author: Richard Ling License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), -(34, 132, 'Pinnacles', 'pinnacles', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_pinnacles_western_australia.jpg","float_intro":"","image_intro_alt":"Kings Canyon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_pinnacles_western_australia.jpg","float_fulltext":"","image_fulltext_alt":"Kings Canyon","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Pinnacles_Western_Australia.jpg Author: Martin Gloss License: GNU Free Documentation license v 1.2 or later."}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(33, 131, 'Phyllopteryx', 'phyllopteryx', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/200px_phyllopteryx_taeniolatus1.jpg","float_intro":"","image_intro_alt":"Phyllopteryx","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_phyllopteryx_taeniolatus1.jpg","float_fulltext":"","image_fulltext_alt":"Phyllopteryx","image_fulltext_caption":"Source: https:\\/\\/en.wikipedia.org\\/wiki\\/File:Phyllopteryx_taeniolatus1.jpg Author: Richard Ling License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(34, 132, 'Pinnacles', 'pinnacles', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_pinnacles_western_australia.jpg","float_intro":"","image_intro_alt":"Kings Canyon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_pinnacles_western_australia.jpg","float_fulltext":"","image_fulltext_alt":"Kings Canyon","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Pinnacles_Western_Australia.jpg Author: Martin Gloss License: GNU Free Documentation license v 1.2 or later."}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (35, 133, 'Professionals', 'professionals', '

    Joomla! 2.5 continues development of the Joomla Framework and CMS as a powerful and flexible way to bring your vision of the web to reality. With the administrator now fully MVC, the ability to control its look and the management of extensions is now complete.

    ', '

    Working with multiple template styles and overrides for the same views, creating the design you want is easier than it has ever been. Limiting support to PHP 5.2.4 and above makes Joomla lighter and faster than ever. Languages files can now be overridden without having your changes lost during an upgrade. With the proper xml your users update extensions with a single click.

    Access control lists are now incorporated using a new system developed for Joomla. The ACL system is designed with developers in mind, so it is easy to incorporate into your extensions. The new nested sets libraries allow you to incorporate infinitely deep categories but also to use nested sets in a variety of other ways.

    A new forms library makes creating all kinds of user interaction simple. MooTools 1.3 provides a highly flexible javascript framework that is a major advance over MooTools 1.0.

    New events throughout the core make integration of your plugins where you want them a snap.

    The separation of the Joomla! Platform project from the Joomla! CMS project makes continuous development of new, powerful APIs and continuous improvement of existing APIs possible while maintaining the stability of the CMS that millions of webmasters and professionals rely upon.

    Learn about:

    ', 1, 19, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-09 16:41:13', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 5, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 1, '*', ''), (36, 134, 'Random Image Module', 'random-image-module', '

    This module displays a random image from your chosen image directory. Help

    {loadmodule random_image,Random Image}
    ', '', 1, 66, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (37, 135, 'Related Items Module', 'related-items-module', '

    This module displays other Articles that are related to the one currently being viewed. These relations are established by the Meta Keywords. All the keywords of the current Article are searched against all the keywords of all other published articles. Help

    {loadmodule related_items,Articles Related Items}
    ', '', 1, 64, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, 'modules, content', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), @@ -309,11 +309,11 @@ INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext` (40, 138, 'Search Module', 'search-module', '

    This module will display a search box. Help

    {loadmodule search,Search}
    ', '', 1, 67, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 4, '', '', 1, 0, '', 0, '*', ''), (41, 139, 'Search ', 'search-plugin', '

    The search component uses plugins to control which parts of your Joomla! site are searched. You may choose to turn off some areas to improve performance or for other reasons. Many third party Joomla! extensions have search plugins that extend where search takes place.

    Default On:

    ', '', 1, 25, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''), (42, 140, 'Site Map', 'site-map', '

    {loadposition sitemapload}

    By putting all of your content into nested categories you can give users and search engines access to everything using a menu.

    ', '', 1, 14, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''), -(43, 141, 'Spotted Quoll', 'spotted-quoll', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/220px_spottedquoll_2005_seanmcclean.jpg","float_intro":"","image_intro_alt":"Spotted Quoll","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/789px_spottedquoll_2005_seanmcclean.jpg","float_fulltext":"","image_fulltext_alt":"Spotted Quoll","image_fulltext_caption":"Source: http:\\/\\/en.wikipedia.org\\/wiki\\/File:SpottedQuoll_2005_SeanMcClean.jpg Author: Sean McClean License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(43, 141, 'Spotted Quoll', 'spotted-quoll', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/220px_spottedquoll_2005_seanmcclean.jpg","float_intro":"","image_intro_alt":"Spotted Quoll","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/789px_spottedquoll_2005_seanmcclean.jpg","float_fulltext":"","image_fulltext_alt":"Spotted Quoll","image_fulltext_caption":"Source: https:\\/\\/en.wikipedia.org\\/wiki\\/File:SpottedQuoll_2005_SeanMcClean.jpg Author: Sean McClean License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (44, 142, 'Statistics Module', 'statistics', '

    This module shows information about your server installation together with statistics on the Web site users, number of Articles in your database and the number of Web links you provide.

    {loadmodule mod_stats,Statistics}
    ', '', 1, 67, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 5, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (45, 143, 'Syndicate Module', 'syndicate-module', '

    The syndicate module will display a link that allows users to take a feed from your site. It will only display on pages for which feeds are possible. That means it will not display on single article, contact or weblinks pages, such as this one. Help

    {loadposition syndicate,Syndicate}
    ', '', 1, 67, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 6, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (46, 144, 'System', 'system', '

    System plugins operate every time a page on your site loads. They control such things as your URLS, whether users can check a "remember me" box on the login module, and whether caching is enabled. New is the redirect plugin that together with the redirect component will assist you in managing changes in URLs.

    Default on:

    Default off:

    ', '', 1, 25, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), -(47, 145, 'The Joomla! Community', 'the-joomla-community', '

    Joomla means All Together, and it is a community of people all working and having fun together that makes Joomla possible. Thousands of people each year participate in the Joomla community, and we hope you will be one of them.

    People with all kinds of skills, of all skill levels and from around the world are welcome to join in. Participate in the Joomla.org family of websites (the forum is a great place to start). Come to a Joomla! event. Join or start a Joomla! Users Group. Whether you are a developer, site administrator, designer, end user or fan, there are ways for you to participate and contribute.

    ', '', 1, 19, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(47, 145, 'The Joomla! Community', 'the-joomla-community', '

    Joomla means All Together, and it is a community of people all working and having fun together that makes Joomla possible. Thousands of people each year participate in the Joomla community, and we hope you will be one of them.

    People with all kinds of skills, of all skill levels and from around the world are welcome to join in. Participate in the Joomla.org family of websites (the forum is a great place to start). Come to a Joomla! event. Join or start a Joomla! Users Group. Whether you are a developer, site administrator, designer, end user or fan, there are ways for you to participate and contribute.

    ', '', 1, 19, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (48, 146, 'The Joomla! Project', 'the-joomla-project', '

    The Joomla Project consists of all of the people who make and support the Joomla Web Platform and Content Management System.

    Our mission is to provide a flexible platform for digital publishing and collaboration.

    The core values are:

    • Freedom
    • Equality
    • Trust
    • Community
    • Collaboration
    • Usability

    In our vision, we see:

    • People publishing and collaborating in their communities and around the world
    • Software that is free, secure, and high-quality
    • A community that is enjoyable and rewarding to participate in
    • People around the world using their preferred languages
    • A project that acts autonomously
    • A project that is socially responsible
    • A project dedicated to maintaining the trust of its users

    There are millions of users around the world and thousands of people who contribute to the Joomla Project. They work in three main groups: the Production Working Group, responsible for everything that goes into software and documentation; the Community Working Group, responsible for creating a nurturing the community; and Open Source Matters, the non profit organization responsible for managing legal, financial and organizational issues.

    Joomla is a free and open source project, which uses the GNU General Public License version 2 or later.

    ', '', 1, 19, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (49, 147, 'Typography', 'typography', '

    H1 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H2 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H3 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H4 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H5 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz
    H6 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    P The quick brown fox ran over the lazy dog. THE QUICK BROWN FOX RAN OVER THE LAZY DOG.

    • Item
    • Item
    • Item
      • Item
      • Item
      • Item
        • Item
        • Item
        • Item
    1. tem
    2. Item
    3. Item
      1. Item
      2. Item
      3. Item
        1. Item
        2. Item
        3. Item
    ', '', 1, 23, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''), (50, 148, 'Upgraders', 'upgraders', '

    If you are an experienced Joomla! 1.5 user, this Joomla site will seem very familiar. There are new templates and improved user interfaces, but most functionality is the same. The biggest changes are improved access control (ACL) and nested categories. This release of Joomla has strong continuity with Joomla! 1.7 while adding enhancements.

    ', '

    The new user manager will let you manage who has access to what in your site. You can leave access groups exactly the way you had them in Joomla 1.5 or make them as complicated as you want. You can learn more about how access control works in on the Joomla! Documentation site

    In Joomla 1.5 and 1.0 content was organized into sections and categories. From 1.6 forward sections are gone, and you can create categories within categories, going as deep as you want. The sample data provides many examples of the use of nested categories.

    All layouts have been redesigned to improve accessibility and flexibility.

    Updating your site and extensions when needed is easier than ever thanks to installer improvements.

    ', 1, 19, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 6, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 1, '*', ''), @@ -322,14 +322,14 @@ INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext` (53, 151, 'Using Joomla!', 'using-joomla', '

    With Joomla you can create anything from a simple personal website to a complex ecommerce or social site with millions of visitors.

    This section of the sample data provides you with a brief introduction to Joomla concepts and reference material to help you understand how Joomla works.

    When you no longer need the sample data, you can can simply unpublish the sample data category found within each extension in the site administrator or you may completely delete each item and all of the categories.

    ', '', 1, 19, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 7, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT IGNORE INTO `#__content` (`id`, `asset_id`, `title`, `alias`, `introtext`, `fulltext`, `state`, `catid`, `created`, `created_by`, `created_by_alias`, `modified`, `modified_by`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `images`, `urls`, `attribs`, `version`, `ordering`, `metakey`, `metadesc`, `access`, `hits`, `metadata`, `featured`, `language`, `xreference`) VALUES (56, 154, 'Who''s Online', 'whos-online', '

    The Who''s Online Module displays the number of Anonymous Users (e.g. Guests) and Registered Users (ones logged-in) that are currently accessing the Web site. Help

    {loadmodule whosonline,Who''s Online}
    ', '', 1, 65, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''), -(57, 155, 'Wobbegone', 'wobbegone', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_wobbegong.jpg","float_intro":"","image_intro_alt":"Wobbegon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_wobbegong.jpg","float_fulltext":"","image_fulltext_alt":"Wobbegon","image_fulltext_caption":"Source: http:\\/\\/en.wikipedia.org\\/wiki\\/File:Wobbegong.jpg Author: Richard Ling Rights: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(57, 155, 'Wobbegone', 'wobbegone', '

    ', '

    ', 1, 72, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_wobbegong.jpg","float_intro":"","image_intro_alt":"Wobbegon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_wobbegong.jpg","float_fulltext":"","image_fulltext_alt":"Wobbegon","image_fulltext_caption":"Source: https:\\/\\/en.wikipedia.org\\/wiki\\/File:Wobbegong.jpg Author: Richard Ling Rights: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (58, 156, 'Wonderful Watermelon', 'wonderful-watermelon', '

    Watermelon is a wonderful and healthy treat. We grow the world''s sweetest watermelon. We have the largest watermelon patch in our country.

    ', '', 1, 30, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''), (59, 157, 'Wrapper Module', 'wrapper-module', '

    This module shows an iFrame window to specified location. Help

    {loadmodule wrapper,Wrapper}
    ', '', 1, 67, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''), (60, 158, 'News Feeds', 'news-feeds', '

    News Feeds (com_newsfeeds) provides a way to organize and present news feeds. News feeds are a way that you present information from another site on your site. For example, the joomla.org website has numerous feeds that you can incorporate on your site. You an use menus to present a single feed, a list of feeds in a category, or a list of all feed categories. Help

    ', '', 1, 21, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (61, 159, 'Breadcrumbs Module', 'breadcrumbs-module', '

    Breadcrumbs provide a pathway for users to navigate through the site. Help

    {loadmodule breadcrumbs,breadcrumbs}
    ', '', 1, 75, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (62, 160, 'Content', 'content-plugins', '

    Content plugins run when specific kinds of pages are loaded. They do things ranging from protecting email addresses from harvesters to creating page breaks.

    Default on:

    ', '', 1, 25, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 7, '', '', 1, 0, '', 0, '*', ''), -(64, 162, 'Blue Mountain Rain Forest', 'blue-mountain-rain-forest', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_rainforest_bluemountainsnsw.jpg","float_intro":"none","image_intro_alt":"Rain Forest Blue Mountains","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/727px_rainforest_bluemountainsnsw.jpg","float_fulltext":"","image_fulltext_alt":"Rain Forest Blue Mountains","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Adam J.W.C. License: GNU Free Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), -(65, 163, 'Ormiston Pound', 'ormiston-pound', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/180px_ormiston_pound.jpg","float_intro":"none","image_intro_alt":"Ormiston Pound","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_ormiston_pound.jpg","float_fulltext":"","image_fulltext_alt":"Ormiston Pound","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Ormiston_Pound.JPG Author: License: GNU Free Public Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(64, 162, 'Blue Mountain Rain Forest', 'blue-mountain-rain-forest', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_rainforest_bluemountainsnsw.jpg","float_intro":"none","image_intro_alt":"Rain Forest Blue Mountains","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/727px_rainforest_bluemountainsnsw.jpg","float_fulltext":"","image_fulltext_alt":"Rain Forest Blue Mountains","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Adam J.W.C. License: GNU Free Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), +(65, 163, 'Ormiston Pound', 'ormiston-pound', '

    ', '

    ', 1, 73, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/180px_ormiston_pound.jpg","float_intro":"none","image_intro_alt":"Ormiston Pound","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_ormiston_pound.jpg","float_fulltext":"","image_fulltext_alt":"Ormiston Pound","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Ormiston_Pound.JPG Author: License: GNU Free Public Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (66, 165, 'Latest Users Module', 'latest-users-module', '

    This module displays the latest registered users. Help

    {loadmodule users_latest,Users Latest}
    ', '', 1, 65, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"1","link_titles":"","show_intro":"","show_category":"1","link_category":"1","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 3, '', '', 1, 0, '', 0, '*', ''), (67, 168, 'What''s New in 1.5?', 'whats-new-in-15', '

    This article deliberately archived as an example.

    As with previous releases, Joomla! provides a unified and easy-to-use framework for delivering content for Web sites of all kinds. To support the changing nature of the Internet and emerging Web technologies, Joomla! required substantial restructuring of its core functionality and we also used this effort to simplify many challenges within the current user interface. Joomla! 1.5 has many new features.

    In Joomla! 1.5, you''''ll notice:

    • Substantially improved usability, manageability, and scalability far beyond the original Mambo foundations
    • Expanded accessibility to support internationalisation, double-byte characters and right-to-left support for Arabic, Farsi, and Hebrew languages among others
    • Extended integration of external applications through Web services
    • Enhanced content delivery, template and presentation capabilities to support accessibility standards and content delivery to any destination
    • A more sustainable and flexible framework for Component and Extension developers
    • Backward compatibility with previous releases of Components, Templates, Modules, and other Extensions
    ', '', 2, 9, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2011-01-01 00:00:01', '0000-00-00 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 0, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), (68, 170, 'Captcha', 'captcha', '

    The Captcha plugins are used to prevent spam submissions on your forms such as registration, contact and login. You basic installation of Joomla includes one Captcha plugin which leverages the ReCaptcha® service but you may install other plugins connecting to different Captcha systems.

    Default on:

    Note: ReCaptcha is a the trademark of Google Inc. and is an independent product not associated with or endorsed by the Joomla Project. You will need to register and agree to the Terms of Service at Recaptcha.net to use this plugin. Complete instructions are available if you edit the ReCaptcha plugin in the Plugin Manager.

    ', '', 1, 25, '2011-01-01 00:00:01', 42, 'Joomla', '0000-00-00 00:00:00', 0, 0, '0000-00-00 00:00:00', '2012-01-17 03:20:45', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''), @@ -375,7 +375,7 @@ INSERT IGNORE INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path` (21, 'menu', 'com_finder', 'Smart Search', '', 'Smart Search', 'index.php?option=com_finder', 'component', 0, 1, 1, 27, 0, '0000-00-00 00:00:00', 0, 0, 'class:finder', 0, '', 33, 34, 0, '*', 1), (22, 'menu', 'com_joomlaupdate', 'Joomla! Update', '', 'Joomla! Update', 'index.php?option=com_joomlaupdate', 'component', 0, 1, 1, 28, 0, '0000-00-00 00:00:00', 0, 0, 'class:joomlaupdate', 0, '', 33, 34, 0, '*', 1), (201, 'usermenu', 'Your Profile', 'your-profile', '', 'your-profile', 'index.php?option=com_users&view=profile', 'component', 1, 1, 1, 25, 0, '0000-00-00 00:00:00', 0, 2, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 95, 96, 0, '*', 0), -(207, 'top', 'Joomla.org', 'joomlaorg', '', 'joomlaorg', 'http://joomla.org', 'url', 1, 1, 1, 0, 0, '0000-00-00 00:00:00', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}', 93, 94, 0, '*', 0), +(207, 'top', 'Joomla.org', 'joomlaorg', '', 'joomlaorg', 'https://www.joomla.org/', 'url', 1, 1, 1, 0, 0, '0000-00-00 00:00:00', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}', 93, 94, 0, '*', 0), (229, 'frontendviews', 'Single Contact', 'single-contact', '', 'single-contact', 'index.php?option=com_contact&view=contact&id=1', 'component', 1, 1, 1, 8, 0, '0000-00-00 00:00:00', 0, 1, '', 0, '{"show_category_crumb":"","presentation_style":"","show_contact_category":"","show_contact_list":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_links":"","linka_name":"","linkb_name":"","linkc_name":"","linkd_name":"","linke_name":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 161, 162, 0, '*', 0), (233, 'mainmenu', 'Login', 'login', '', 'login', 'index.php?option=com_users&view=login', 'component', 1, 1, 1, 25, 0, '0000-00-00 00:00:00', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 3, 4, 0, '*', 0), (234, 'parks', 'Park Blog', 'park-blog', '', 'park-blog', 'index.php?option=com_content&view=category&layout=blog&id=27', 'component', 1, 1, 1, 22, 0, '0000-00-00 00:00:00', 0, 1, '', 114, '{"maxLevel":"","show_empty_categories":"","show_description":"1","show_description_image":"1","show_category_title":"","show_cat_num_articles":"","num_leading_articles":"1","num_intro_articles":"4","num_columns":"1","num_links":"4","multi_column_order":"","orderby_pri":"","orderby_sec":"","order_date":"","show_pagination":"2","show_noauth":"","show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_readmore":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_hits":"","show_feed_link":"1","feed_summary":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 99, 100, 0, 'en-GB', 0), @@ -530,7 +530,7 @@ INSERT IGNORE INTO `#__modules` (`id`, `title`, `note`, `content`, `ordering`, ` (37, 'Syndicate Feeds', '', '', 1, 'syndicateload', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_syndicate', 1, 1, '{"text":"Feed Entries","format":"rss","layout":"","moduleclass_sfx":"","cache":"0"}', 0, '*'), (38, 'Users Latest', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_users_latest', 1, 1, '{"shownumber":"5","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"static"}', 0, '*'), (39, 'Who''s Online', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_whosonline', 1, 1, '{"showmode":"2","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 0, '*'), -(40, 'Wrapper', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_wrapper', 1, 1, '{"url":"http:\\/\\/www.youtube.com\\/embed\\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'), +(40, 'Wrapper', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_wrapper', 1, 1, '{"url":"https:\\/\\/www.youtube.com\\/embed\\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'), (41, 'Footer', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_footer', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'), (44, 'Login', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_login', 1, 1, '{"pretext":"","posttext":"","login":"280","logout":"280","greeting":"1","name":"0","usesecure":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 0, '*'), (45, 'Menu Example', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"mainmenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'), @@ -787,7 +787,7 @@ INSERT INTO `#__ucm_base` (`ucm_id`, `ucm_item_id`, `ucm_type_id`, `ucm_language (3, 71, 1, 0); INSERT INTO `#__ucm_content` (`core_content_id`, `core_type_alias`, `core_title`, `core_alias`, `core_body`, `core_state`, `core_checked_out_time`, `core_checked_out_user_id`, `core_access`, `core_params`, `core_featured`, `core_metadata`, `core_created_user_id`, `core_created_by_alias`, `core_created_time`, `core_modified_user_id`, `core_modified_time`, `core_language`, `core_publish_up`, `core_publish_down`, `core_content_item_id`, `asset_id`, `core_images`, `core_urls`, `core_hits`, `core_version`, `core_ordering`, `core_metakey`, `core_metadesc`, `core_catid`, `core_xreference`, `core_type_id`) VALUES -(1, 'com_content.article', 'Joomla! Testing', 'joomla', '

    Thanks for helping us to test Joomla!

    We''re getting ready for the release of Joomla and we appreciate you helping us find and fix problems as we work.

    If you haven''t done testing before here are some tips.

    • Don''t delete the installation folder when you finish installing! While we''re working we turn that security feature off to make it easier to test.
    • Go to global configuration and set Error Reporting to Development (that''s on the server tab) and enable both debugging and language debugging (those are on the system tab). Don''t worry when you see ** around words --that means Joomla translation is doing its job.

    How to test

    • First, do the things you normally do and see if you spot any problems.
    • Look at all of the front end views and record any problems
    • Look at all the back end views and report any problems
    • See more ideas below

    What to look for

    • Any error messages that say things like Fatal Error or Strict or similar things that indicate that something is not working correctly.
    • Untranslated strings. You will know these because they look like this: ?STRING_HERE?
    • Problems of rendering--items not aligned correctly, missing or wrong images, pages that just don''t look right.
    • Unexpected behavior--anything that is working differently than it did in 2.5.

    Report problems

    If you find a problem please report it to the CMS Issue Tracker. You will need to register for a github.com account if you don''t have one.

    More Testing Ideas

    • Pick one module or view and test all of the parameters.
    • Install an extension and see if anything breaks (report to the developer unless you are positive it is a core bug).
    • Turn on caching with different options
    • Try different session options
    • Install a language and test all the layouts.
    • Try different environments (like different servers which may have different version of PHP) or try you have IIS with MySQLi or SqlSrv. With millions of users Joomla needs to be ready for unusual environments.
    • Try with SEF URLS on or off and also with Apache rewrite on or off (if you are on Apache).
    • Try different combinations of browsers (Chrome, IE, FireFox, Opera to start) and operating systems (Mac, Windows, Linux).
    • Yes grammar and spelling errors are bugs too -- just keep in mind that we use British spelling.
    • Visit the Feature Tracker and test a new feature.

    Testing changes

    You can also help Joomla by testing bug fixes and new features. A useful tool is the patchtester component which helps to simplify and automate the process. Report your feedback on the CMS Issue Tracker. If you enjoy helping Joomla this way, you may want to join the Joomla Bug Squad.

    ', 1, '', 0, 1, '{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":""}', 1, '{"robots":"","author":"","rights":"","xreference":""}', 716, '', '2011-01-01 00:00:01', 0, '2013-10-15 14:57:20', '*', '2011-01-01 00:00:01', '0000-00-00 00:00:00', 24, 180, '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}', 59, 3, 2, '', '', 19, '', 1), +(1, 'com_content.article', 'Joomla! Testing', 'joomla', '

    Thanks for helping us to test Joomla!

    We''re getting ready for the release of Joomla and we appreciate you helping us find and fix problems as we work.

    If you haven''t done testing before here are some tips.

    • Don''t delete the installation folder when you finish installing! While we''re working we turn that security feature off to make it easier to test.
    • Go to global configuration and set Error Reporting to Development (that''s on the server tab) and enable both debugging and language debugging (those are on the system tab). Don''t worry when you see ** around words --that means Joomla translation is doing its job.

    How to test

    • First, do the things you normally do and see if you spot any problems.
    • Look at all of the front end views and record any problems
    • Look at all the back end views and report any problems
    • See more ideas below

    What to look for

    • Any error messages that say things like Fatal Error or Strict or similar things that indicate that something is not working correctly.
    • Untranslated strings. You will know these because they look like this: ?STRING_HERE?
    • Problems of rendering--items not aligned correctly, missing or wrong images, pages that just don''t look right.
    • Unexpected behavior--anything that is working differently than it did in 2.5.

    Report problems

    If you find a problem please report it to the CMS Issue Tracker. You will need to register for a github.com account if you don''t have one.

    More Testing Ideas

    • Pick one module or view and test all of the parameters.
    • Install an extension and see if anything breaks (report to the developer unless you are positive it is a core bug).
    • Turn on caching with different options
    • Try different session options
    • Install a language and test all the layouts.
    • Try different environments (like different servers which may have different version of PHP) or try you have IIS with MySQLi or SqlSrv. With millions of users Joomla needs to be ready for unusual environments.
    • Try with SEF URLS on or off and also with Apache rewrite on or off (if you are on Apache).
    • Try different combinations of browsers (Chrome, IE, FireFox, Opera to start) and operating systems (Mac, Windows, Linux).
    • Yes grammar and spelling errors are bugs too -- just keep in mind that we use British spelling.
    • Visit the Feature Tracker and test a new feature.

    Testing changes

    You can also help Joomla by testing bug fixes and new features. A useful tool is the patchtester component which helps to simplify and automate the process. Report your feedback on the CMS Issue Tracker. If you enjoy helping Joomla this way, you may want to join the Joomla Bug Squad.

    ', 1, '', 0, 1, '{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":""}', 1, '{"robots":"","author":"","rights":"","xreference":""}', 716, '', '2011-01-01 00:00:01', 0, '2013-10-15 14:57:20', '*', '2011-01-01 00:00:01', '0000-00-00 00:00:00', 24, 180, '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}', 59, 3, 2, '', '', 19, '', 1), (3, 'com_content.article', 'Similar Tags', 'similar-tags', '

    The similar tags modules shows a list of items which have the same or a similar set of tags.

    {loadmodule tags_similar,Similar Tags}

    ', 1, '', 0, 1, '{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 0, '{"robots":"","author":"","rights":"","xreference":""}', 371, '', '2013-10-31 00:14:17', 371, '2013-10-31 00:39:09', '*', '2013-10-31 00:14:17', '0000-00-00 00:00:00', 71, 179, '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}', 3, 4, 0, '', '', 64, '', 1); UPDATE `#__extensions` SET `params`='{"allowUserRegistration":"0","new_usertype":"2","guest_usergroup":"13","sendpassword":"1","useractivation":"1","mail_to_admin":"0","captcha":"","frontend_userparams":"1","site_language":"0","change_login_name":"0","reset_count":"10","reset_time":"1","mailSubjectPrefix":"","mailBodySuffix":"","save_history":"1","history_limit":5}' WHERE extension_id=25; diff --git a/installation/sql/postgresql/sample_data.sql b/installation/sql/postgresql/sample_data.sql index c5dbe9557f605..6f9000a73fe2f 100644 --- a/installation/sql/postgresql/sample_data.sql +++ b/installation/sql/postgresql/sample_data.sql @@ -81,7 +81,7 @@ INSERT INTO "#__menu" VALUES (23,'menu','com_tags','com-tags','','com-tags','index.php?option=com_tags','component',0,1,1,29,0,'1970-01-01 00:00:00',0,1,'class:tags',0,'',221,222,0,'',1), (24,'main','com_postinstall','Post-installation messages','','Post-installation messages','index.php?option=com_postinstall','component',0,1,1,32,0,'1970-01-01 00:00:00',0,1,'class:postinstall',0,'',223,224,0,'*',1), (201,'usermenu','Your Profile','your-profile','','your-profile','index.php?option=com_users&view=profile','component',1,1,1,25,0,'1970-01-01 00:00:00',0,2,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}',213,214,0,'*',0), -(207,'top','Joomla.org','joomlaorg','','joomlaorg','http://joomla.org','url',1,1,1,0,0,'1970-01-01 00:00:00',0,1,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}',211,212,0,'*',0), +(207,'top','Joomla.org','joomlaorg','','joomlaorg','https://www.joomla.org/','url',1,1,1,0,0,'1970-01-01 00:00:00',0,1,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}',211,212,0,'*',0), (435,'mainmenu','Home','homepage','','homepage','index.php?option=com_content&view=article&id=1','component',1,1,1,22,0,'1970-01-01 00:00:00',0,1,'',0,'{"show_title":"1","link_titles":"","show_intro":"","info_block_position":"0","show_category":"0","link_category":"0","show_parent_category":"0","link_parent_category":"0","show_author":"0","link_author":"0","show_create_date":"0","show_modify_date":"0","show_publish_date":"0","show_item_navigation":"0","show_vote":"","show_icons":"0","show_print_icon":"0","show_email_icon":"0","show_hits":"0","show_noauth":"","urls_position":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}',1,2,1,'*',0), (448,'usermenu','Site Administrator','site-administrator','','site-administrator','administrator','url',1,1,1,0,0,'1970-01-01 00:00:00',1,6,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1}',219,220,0,'*',0), (449,'usermenu','Submit an Article','submit-an-article','','submit-an-article','index.php?option=com_content&view=form&layout=edit','component',1,1,1,22,0,'1970-01-01 00:00:00',0,3,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}',215,216,0,'*',0), @@ -130,7 +130,7 @@ INSERT INTO "#__modules" VALUES (37,0,'Syndicate Feeds','','',1,'syndicateload',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_syndicate',1,1,'{"text":"Feed Entries","format":"rss","layout":"","moduleclass_sfx":"","cache":"0"}',0,'*'), (38,0,'Users Latest','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_users_latest',1,1,'{"shownumber":"5","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"static"}',0,'*'), (39,0,'Who\'s Online','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_whosonline',1,1,'{"showmode":"2","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}',0,'*'), -(40,0,'Wrapper','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_wrapper',1,1,'{"url":"http:\\/\\/www.youtube.com\\/embed\\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), +(40,0,'Wrapper','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_wrapper',1,1,'{"url":"https:\\/\\/www.youtube.com\\/embed\\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), (41,0,'Footer','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_footer',1,1,'{"layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), (48,0,'Image Module','','

    Blue Flower

    ',1,'position-3',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_custom',1,0,'{"prepare_content":"1","backgroundimage":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}',0,'*'), (52,0,'Breadcrumbs','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_breadcrumbs',1,1,'{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}',0,'*'), diff --git a/installation/sql/postgresql/sample_learn.sql b/installation/sql/postgresql/sample_learn.sql index b525b014e902e..cdf25025c5965 100644 --- a/installation/sql/postgresql/sample_learn.sql +++ b/installation/sql/postgresql/sample_learn.sql @@ -179,9 +179,9 @@ SELECT setval('#__assets_id_seq', max(id)) FROM #__assets; -- Dumping data for table #__banners -- INSERT INTO "#__banners" VALUES -(2,3,0,'Shop 1','shop-1',0,0,0,'http://shop.joomla.org/amazoncom-bookstores.html',1,15,'Get books about Joomla! at the Joomla! Book Shop.','',0,1,'','{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Books"}',0,'',-1,0,0,0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','2011-01-01 00:00:01','en-GB',42,'Joomla','1970-01-01 00:00:00',0,1), -(3,2,0,'Shop 2','shop-2',0,0,0,'http://shop.joomla.org',1,15,'T Shirts, caps and more from the Joomla! Shop.','',0,2,'','{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Shop"}',0,'',-1,0,0,0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','2011-01-01 00:00:01','en-GB',42,'Joomla','1970-01-01 00:00:00',0,1), -(4,1,0,'Support Joomla!','support-joomla',0,0,0,'http://contribute.joomla.org',1,15,'Your contributions of time, talent and money make Joomla possible.','',0,3,'','{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":""}',0,'',-1,0,0,0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','2011-01-01 00:00:01','en-GB',42,'Joomla','1970-01-01 00:00:00',0,1); +(2,3,0,'Shop 1','shop-1',0,0,0,'https://shop.joomla.org/amazoncom-bookstores.html',1,15,'Get books about Joomla! at the Joomla! Book Shop.','',0,1,'','{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Books"}',0,'',-1,0,0,0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','2011-01-01 00:00:01','en-GB',42,'Joomla','1970-01-01 00:00:00',0,1), +(3,2,0,'Shop 2','shop-2',0,0,0,'https://shop.joomla.org',1,15,'T Shirts, caps and more from the Joomla! Shop.','',0,2,'','{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Shop"}',0,'',-1,0,0,0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','2011-01-01 00:00:01','en-GB',42,'Joomla','1970-01-01 00:00:00',0,1), +(4,1,0,'Support Joomla!','support-joomla',0,0,0,'https://contribute.joomla.org',1,15,'Your contributions of time, talent and money make Joomla possible.','',0,3,'','{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":""}',0,'',-1,0,0,0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','2011-01-01 00:00:01','en-GB',42,'Joomla','1970-01-01 00:00:00',0,1); SELECT setval('#__banners_id_seq', max(id)) FROM #__banners; @@ -217,13 +217,13 @@ INSERT INTO "#__categories" VALUES (25,50,20,34,35,4,'sample-data-articles/joomla/extensions/plugins','com_content','Plugins','plugins','','

    Plugins are small task oriented extensions that enhance the Joomla! framework. Some are associated with particular extensions and others, such as editors, are used across all of Joomla. Most beginning users do not need to change any of the plugins that install with Joomla. Help

    ',1,0,'1970-01-01 00:00:00',1,'{"category_layout":"","image":""}','','','{"author":"","robots":""}',910,'2011-01-01 00:00:01',123,'2012-09-25 06:36:50',0,'*',1), (26,51,14,38,47,2,'sample-data-articles/park-site','com_content','Park Site','park-site','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',910,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'en-GB',1), (27,52,26,39,40,3,'sample-data-articles/park-site/park-blog','com_content','Park Blog','park-blog','','

    Here is where I will blog all about the parks of Australia.

    You can make a blog on your website by creating a category to write your blog posts in (this one is called Park Blog). Each blog post will be an article in that category. If you make a category blog menu link with 1 column it will look like this page, if you display the category description then this part is displayed.

    To enhance your blog you may want to add extensions for comments, interacting with social network sites, tagging, and keeping in contact with your readers. You can also enable the syndication that is included in Joomla (in the Integration Options set Show Feed Link to Show and make sure to display the syndication module on the page).

    ',1,0,'1970-01-01 00:00:00',1,'{"category_layout":"","image":"images\\/sampledata\\/parks\\/banner_cradle.jpg"}','','','{"author":"","robots":""}',910,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'en-GB',1), -(28,53,26,41,46,3,'sample-data-articles/park-site/photo-gallery','com_content','Photo Gallery','photo-gallery','','

    These are my photos from parks I have visited (I didn\'t take them, they are all from Wikimedia Commons).

    This shows you how to make a simple image gallery using articles in com_content.

    In each article put a thumbnail image before a "readmore" and the full size image after it. Set the article to Show Intro Text: Hide.

    ',1,0,'1970-01-01 00:00:00',1,'{"category_layout":"","image":""}','','','{"author":"","robots":""}',910,'2011-01-01 00:00:01',123,'2012-09-25 11:05:37',0,'en-GB',1), +(28,53,26,41,46,3,'sample-data-articles/park-site/photo-gallery','com_content','Photo Gallery','photo-gallery','','

    These are my photos from parks I have visited (I didn\'t take them, they are all from Wikimedia Commons).

    This shows you how to make a simple image gallery using articles in com_content.

    In each article put a thumbnail image before a "readmore" and the full size image after it. Set the article to Show Intro Text: Hide.

    ',1,0,'1970-01-01 00:00:00',1,'{"category_layout":"","image":""}','','','{"author":"","robots":""}',910,'2011-01-01 00:00:01',123,'2012-09-25 11:05:37',0,'en-GB',1), (29,54,14,48,53,2,'sample-data-articles/fruit-shop-site','com_content','Fruit Shop Site','fruit-shop-site','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',910,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (30,55,29,49,50,3,'sample-data-articles/fruit-shop-site/growers','com_content','Growers','growers','','

    We search the whole countryside for the best fruit growers.

    You can let each supplier have a page that he or she can edit. To see this in action you will need to create a user who is in the suppliers group.

    Create one page in the growers category for that user and make that supplier the author of the page. That user will be able to edit his or her page.

    This illustrates the use of the Edit Own permission.

    ',1,0,'1970-01-01 00:00:00',1,'{"category_layout":"","image":""}','','','{"author":"","robots":""}',910,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (34,59,16,62,63,2,'sample-data-contact/park-site','com_contact','Park Site','park-site','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',910,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'en-GB',1), (35,60,16,64,121,2,'sample-data-contact/shop-site','com_contact','Shop Site','shop-site','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',910,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (36,61,35,65,66,3,'sample-data-contact/shop-site/staff','com_contact','Staff','staff','','

    Please feel free to contact our staff at any time should you need assistance.

    ',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',910,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), -(37,62,35,67,120,3,'sample-data-contact/shop-site/fruit-encyclopedia','com_contact','Fruit Encyclopedia','fruit-encyclopedia','','

    Our directory of information about different kinds of fruit.

    We love fruit and want the world to know more about all of its many varieties.

    Although it is small now, we work on it whenever we have a chance.

    All of the images can be found in Wikimedia Commons.

    Apples

    This encyclopedia is implemented using the contact component, each fruit a separate contact and a category for each letter. A CSS style is used to create the horizontal layout of the alphabet headings.

    If you wanted to, you could allow some users (such as your growers) to have access to just this category in the contact component and let them help you to create new content for the encyclopedia.

    ',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',910,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), +(37,62,35,67,120,3,'sample-data-contact/shop-site/fruit-encyclopedia','com_contact','Fruit Encyclopedia','fruit-encyclopedia','','

    Our directory of information about different kinds of fruit.

    We love fruit and want the world to know more about all of its many varieties.

    Although it is small now, we work on it whenever we have a chance.

    All of the images can be found in Wikimedia Commons.

    Apples

    This encyclopedia is implemented using the contact component, each fruit a separate contact and a category for each letter. A CSS style is used to create the horizontal layout of the alphabet headings.

    If you wanted to, you could allow some users (such as your growers) to have access to just this category in the contact component and let them help you to create new content for the encyclopedia.

    ',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',910,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (38,63,37,68,69,4,'sample-data-contact/shop-site/fruit-encyclopedia/a','com_contact','A','a','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',910,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (39,64,37,70,71,4,'sample-data-contact/shop-site/fruit-encyclopedia/b','com_contact','B','b','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',910,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (40,65,37,72,73,4,'sample-data-contact/shop-site/fruit-encyclopedia/c','com_contact','C','c','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',910,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), @@ -268,13 +268,13 @@ SELECT setval('#__categories_id_seq', max(id)) FROM #__categories; -- Dumping data for table #__contact_details -- INSERT INTO "#__contact_details" VALUES -(1,'Contact Name Here','name','Position','Street Address','Suburb','State','Country','Zip Code','Telephone','Fax','

    Information about or by the contact.

    ','images/powered_by.png','email@example.com',1,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"http:\\/\\/twitter.com\\/joomla","linkb_name":"YouTube","linkb":"http:\\/\\/www.youtube.com\\/user\\/joomla","linkc_name":"Facebook","linkc":"http:\\/\\/www.facebook.com\\/joomla","linkd_name":"FriendFeed","linkd":"http:\\/\\/friendfeed.com\\/joomla","linke_name":"Scribd","linke":"http:\\/\\/www.scribd.com\\/people\\/view\\/504592-joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}',0,16,1,'','','last','first','middle','en-GB','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',1,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), +(1,'Contact Name Here','name','Position','Street Address','Suburb','State','Country','Zip Code','Telephone','Fax','

    Information about or by the contact.

    ','images/powered_by.png','email@example.com',1,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"https:\\/\\/twitter.com\\/joomla","linkb_name":"YouTube","linkb":"https:\\/\\/www.youtube.com\\/user\\/joomla","linkc_name":"Facebook","linkc":"https:\\/\\/www.facebook.com\\/joomla","linkd_name":"FriendFeed","linkd":"http:\\/\\/friendfeed.com\\/joomla","linke_name":"Scribd","linke":"https:\\/\\/www.scribd.com\\/user\\/504592\\/Joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}',0,16,1,'','','last','first','middle','en-GB','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',1,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), (2,'Webmaster','webmaster','','','','','','','','','','','webmaster@example.com',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"1","show_email_copy":"1","banned_email":"","banned_subject":"","banned_text":"","validate_session":"1","custom_reply":"","redirect":""}',0,34,1,'','','','','','en-GB','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',1,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), (3,'Owner','owner','','','','','','','','','

    I\'m the owner of this store.

    ','','',0,1,0,'1970-01-01 00:00:00',2,'{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}',0,36,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',1,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), (4,'Buyer','buyer','','','','','','','','','

    I am in charge of buying fruit. If you sell good fruit, contact me.

    ','','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"0","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}',0,36,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',1,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), -(5,'Bananas','bananas','Scientific Name: Musa','Image Credit: EnzikRights: Creative Commons Share Alike Unported 3.0Source: http://commons.wikimedia.org/wiki/File:Bananas_-_Morocco.jpg','','Type: Herbaceous','Large Producers: India, China, Brasil','','','','

    Bananas are a great source of potassium.

    ','images/sampledata/fruitshop/bananas_2.jpg','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"show_with_link","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"1","show_email":"","show_street_address":"","show_suburb":"","show_state":"1","show_postcode":"","show_country":"1","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Banana English","linka":"http:\\/\\/en.wikipedia.org\\/wiki\\/Banana","linkb_name":"Wikipedia: \\u0939\\u093f\\u0928\\u094d\\u0926\\u0940 \\u0915\\u0947\\u0932\\u093e","linkb":"http:\\/\\/hi.wikipedia.org\\/wiki\\/%E0%A4%95%E0%A5%87%E0%A4%B2%E0%A4%BE","linkc_name":"Wikipedia:Banana Portugu\\u00eas","linkc":"http:\\/\\/pt.wikipedia.org\\/wiki\\/Banana","linkd_name":"Wikipedia: \\u0411\\u0430\\u043d\\u0430\\u043d \\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439","linkd":"http:\\/\\/ru.wikipedia.org\\/\\u0411\\u0430\\u043d\\u0430\\u043d","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}',0,39,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',0,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), -(6,'Apples','apples','Scientific Name: Malus domestica','Image Credit: FievetRights: Public DomainSource: http://commons.wikimedia.org/wiki/File:Pommes_vertes.JPG','','Family: Rosaceae','Large: Producers: China, United States','','','','

    Apples are a versatile fruit, used for eating, cooking, and preserving.

    There are more that 7500 different kinds of apples grown around the world.

    ','images/sampledata/fruitshop/apple.jpg','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Apples English","linka":"http:\\/\\/en.wikipedia.org\\/wiki\\/Apple","linkb_name":"Wikipedia: Manzana Espa\\u00f1ol ","linkb":"http:\\/\\/es.wikipedia.org\\/wiki\\/Manzana","linkc_name":"Wikipedia: \\u82f9\\u679c \\u4e2d\\u6587","linkc":"http:\\/\\/zh.wikipedia.org\\/zh\\/\\u82f9\\u679c","linkd_name":"Wikipedia: Tofaa Kiswahili","linkd":"http:\\/\\/sw.wikipedia.org\\/wiki\\/Tofaa","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}',0,38,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',0,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), -(7,'Tamarind','tamarind','Scientific Name: Tamarindus indica','Image Credit: Franz Eugen Köhler, Köhler\'s Medizinal-Pflanzen Rights: Public DomainSource:http://commons.wikimedia.org/wiki/File:Koeh-134.jpg','','Family: Fabaceae','Large Producers: India, United States','','','','

    Tamarinds are a versatile fruit used around the world. In its young form it is used in hot sauces; ripened it is the basis for many refreshing drinks.

    ','images/sampledata/fruitshop/tamarind.jpg','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Tamarind English","linka":"http:\\/\\/en.wikipedia.org\\/wiki\\/Tamarind","linkb_name":"Wikipedia: \\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 \\u09ac\\u09be\\u0982\\u09b2\\u09be ","linkb":"http:\\/\\/bn.wikipedia.org\\/wiki\\/\\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 ","linkc_name":"Wikipedia: Tamarinier Fran\\u00e7ais","linkc":"http:\\/\\/fr.wikipedia.org\\/wiki\\/Tamarinier","linkd_name":"Wikipedia:Tamaline lea faka-Tonga","linkd":"http:\\/\\/to.wikipedia.org\\/wiki\\/Tamaline","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}',0,57,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',0,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), +(5,'Bananas','bananas','Scientific Name: Musa','Image Credit: EnzikRights: Creative Commons Share Alike Unported 3.0Source: https://commons.wikimedia.org/wiki/File:Bananas_-_Morocco.jpg','','Type: Herbaceous','Large Producers: India, China, Brasil','','','','

    Bananas are a great source of potassium.

    ','images/sampledata/fruitshop/bananas_2.jpg','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"show_with_link","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"1","show_email":"","show_street_address":"","show_suburb":"","show_state":"1","show_postcode":"","show_country":"1","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Banana English","linka":"https:\\/\\/en.wikipedia.org\\/wiki\\/Banana","linkb_name":"Wikipedia: \\u0939\\u093f\\u0928\\u094d\\u0926\\u0940 \\u0915\\u0947\\u0932\\u093e","linkb":"https:\\/\\/hi.wikipedia.org\\/wiki\\/%E0%A4%95%E0%A5%87%E0%A4%B2%E0%A4%BE","linkc_name":"Wikipedia:Banana Portugu\\u00eas","linkc":"https:\\/\\/pt.wikipedia.org\\/wiki\\/Banana","linkd_name":"Wikipedia: \\u0411\\u0430\\u043d\\u0430\\u043d \\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439","linkd":"https:\\/\\/ru.wikipedia.org\\/\\u0411\\u0430\\u043d\\u0430\\u043d","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}',0,39,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',0,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), +(6,'Apples','apples','Scientific Name: Malus domestica','Image Credit: FievetRights: Public DomainSource: https://commons.wikimedia.org/wiki/File:Pommes_vertes.JPG','','Family: Rosaceae','Large: Producers: China, United States','','','','

    Apples are a versatile fruit, used for eating, cooking, and preserving.

    There are more that 7500 different kinds of apples grown around the world.

    ','images/sampledata/fruitshop/apple.jpg','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Apples English","linka":"https:\\/\\/en.wikipedia.org\\/wiki\\/Apple","linkb_name":"Wikipedia: Manzana Espa\\u00f1ol ","linkb":"https:\\/\\/es.wikipedia.org\\/wiki\\/Manzana","linkc_name":"Wikipedia: \\u82f9\\u679c \\u4e2d\\u6587","linkc":"https:\\/\\/zh.wikipedia.org\\/zh\\/\\u82f9\\u679c","linkd_name":"Wikipedia: Tofaa Kiswahili","linkd":"https:\\/\\/sw.wikipedia.org\\/wiki\\/Tofaa","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}',0,38,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',0,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), +(7,'Tamarind','tamarind','Scientific Name: Tamarindus indica','Image Credit: Franz Eugen Köhler, Köhler\'s Medizinal-Pflanzen Rights: Public DomainSource:https://commons.wikimedia.org/wiki/File:Koeh-134.jpg','','Family: Fabaceae','Large Producers: India, United States','','','','

    Tamarinds are a versatile fruit used around the world. In its young form it is used in hot sauces; ripened it is the basis for many refreshing drinks.

    ','images/sampledata/fruitshop/tamarind.jpg','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Tamarind English","linka":"https:\\/\\/en.wikipedia.org\\/wiki\\/Tamarind","linkb_name":"Wikipedia: \\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 \\u09ac\\u09be\\u0982\\u09b2\\u09be ","linkb":"https:\\/\\/bn.wikipedia.org\\/wiki\\/\\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 ","linkc_name":"Wikipedia: Tamarinier Fran\\u00e7ais","linkc":"https:\\/\\/fr.wikipedia.org\\/wiki\\/Tamarinier","linkd_name":"Wikipedia:Tamaline lea faka-Tonga","linkd":"https:\\/\\/to.wikipedia.org\\/wiki\\/Tamaline","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}',0,57,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',0,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), (8,'Shop Address','shop-address','','','Our City','Our Province','Our Country','','555-555-5555','','

    Here are directions for how to get to our shop.

    ','','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}',0,35,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',1,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0); SELECT setval('#__contact_details_id_seq', max(id)) FROM #__contact_details; @@ -293,7 +293,7 @@ INSERT INTO "#__content" VALUES (8,104,'Beginners','beginners','

    If this is your first Joomla! site or your first web site, you have come to the right place. Joomla will help you get your website up and running quickly and easily.

    Start off using your site by logging in using the administrator account you created when you installed Joomla.

    ','

    Explore the articles and other resources right here on your site data to learn more about how Joomla works. (When you\'re done reading, you can delete or archive all of this.) You will also probably want to visit the Beginners\' Areas of the Joomla documentation and support forums.

    You\'ll also want to sign up for the Joomla Security Mailing list and the Announcements mailing list. For inspiration visit the Joomla! Site Showcase to see an amazing array of ways people use Joomla to tell their stories on the web.

    The basic Joomla installation will let you get a great site up and running, but when you are ready for more features the power of Joomla is in the creative ways that developers have extended it to do all kinds of things. Visit the Joomla! Extensions Directory to see thousands of extensions that can do almost anything you could want on a website. Can\'t find what you need? You may want to find a Joomla professional in the Joomla! Resource Directory.

    Want to learn more? Consider attending a Joomla! Day or other event or joining a local Joomla! Users Group. Can\'t find one near you? Start one yourself.

    ',1,19,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,1,'{"robots":"","author":"","rights":"","xreference":""}',1,'*',''), (9,105,'Contacts','contact','

    The contact component provides a way to provide contact forms and information for your site or to create a complex directory that can be used for many different purposes. Help

    ','',1,21,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (10,106,'Content','content','

    The content component (com_content) is what you use to write articles. It is extremely flexible and has the largest number of built in views. Articles can be created and edited from the front end, making content the easiest component to use to create your site content. Help

    ','',1,21,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}',1,1,'','',1,2,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), -(11,107,'Cradle Mountain','cradle-mountain','

    ','

    ',1,73,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/250px_cradle_mountain_seen_from_barn_bluff.jpg","float_intro":"","image_intro_alt":"Cradle Mountain","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_cradle_mountain_seen_from_barn_bluff.jpg","float_fulltext":"none","image_fulltext_alt":"Cradle Mountain","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Alan J.W.C. License: GNU Free Documentation License v . 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(11,107,'Cradle Mountain','cradle-mountain','

    ','

    ',1,73,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/250px_cradle_mountain_seen_from_barn_bluff.jpg","float_intro":"","image_intro_alt":"Cradle Mountain","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_cradle_mountain_seen_from_barn_bluff.jpg","float_fulltext":"none","image_fulltext_alt":"Cradle Mountain","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Alan J.W.C. License: GNU Free Documentation License v . 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (12,110,'Custom Module','custom','

    This module allows you to create your own Module using a WYSIWYG editor. Help

    {loadmodule custom,Custom}
    ','',1,66,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (13,111,'Directions','directions','

    Here\'s how to find our shop.

    By car

    Drive along Main Street to the intersection with First Avenue. Look for our sign.

    By foot

    From the center of town, walk north on Main Street until you see our sign.

    By bus

    Take the #73 Bus to the last stop. We are on the north east corner.

    ','',1,29,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,2,'','',1,3,'',0,'*',''), (14,112,'Editors','editors','

    Editors are used thoughout Joomla! where content is created. TinyMCE is the default choice in most locations although CodeMirror is used in the template manager. No Editor provides a text box for html content.

    Default on:

    Default off:

    • None
    ','',1,25,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,5,'','',1,0,'',0,'*',''), @@ -303,11 +303,11 @@ INSERT INTO "#__content" VALUES (18,116,'Second Blog Post','second-blog-post','

    Lorem Ipsum is text that is traditionally used by designers when working on a site before the content is ready.

    Pellentesque bibendum metus ut dolor fermentum ut pulvinar tortor hendrerit. Nam vel odio vel diam tempus iaculis in non urna. Curabitur scelerisque, nunc id interdum vestibulum, felis elit luctus dui, ac dapibus tellus mauris tempus augue. Duis congue facilisis lobortis. Phasellus neque erat, tincidunt non lacinia sit amet, rutrum vitae nunc. Sed placerat lacinia fermentum. Integer justo sem, cursus id tristique eget, accumsan vel sapien. Curabitur ipsum neque, elementum vel vestibulum ut, lobortis a nisl. Fusce malesuada mollis purus consectetur auctor. Morbi tellus nunc, dapibus sit amet rutrum vel, laoreet quis mauris. Aenean nec sem nec purus bibendum venenatis. Mauris auctor commodo libero, in adipiscing dui adipiscing eu. Praesent eget orci ac nunc sodales varius.

    ','

    Nam eget venenatis lorem. Vestibulum a interdum sapien. Suspendisse potenti. Quisque auctor purus nec sapien venenatis vehicula malesuada velit vehicula. Fusce vel diam dolor, quis facilisis tortor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque libero nisi, pellentesque quis cursus sit amet, vehicula vitae nisl. Curabitur nec nunc ac sem tincidunt auctor. Phasellus in mattis magna. Donec consequat orci eget tortor ultricies rutrum. Mauris luctus vulputate molestie. Proin tincidunt vehicula euismod. Nam congue leo non erat cursus a adipiscing ipsum congue. Nulla iaculis purus sit amet turpis aliquam sit amet dapibus odio tincidunt. Ut augue diam, congue ut commodo pellentesque, fermentum mattis leo. Sed iaculis urna id enim dignissim sodales at a ipsum. Quisque varius lobortis mollis. Nunc purus magna, pellentesque pellentesque convallis sed, varius id ipsum. Etiam commodo mi mollis erat scelerisque fringilla. Nullam bibendum massa sagittis diam ornare rutrum.

    Praesent convallis metus ut elit faucibus tempus in quis dui. Donec fringilla imperdiet nibh, sit amet fringilla velit congue et. Quisque commodo luctus ligula, vitae porttitor eros venenatis in. Praesent aliquet commodo orci id varius. Nulla nulla nibh, varius id volutpat nec, sagittis nec eros. Cras et dui justo. Curabitur malesuada facilisis neque, sed tempus massa tincidunt ut. Sed suscipit odio in lacus auctor vehicula non ut lacus. In hac habitasse platea dictumst. Sed nulla nisi, lacinia in viverra at, blandit vel tellus. Nulla metus erat, ultrices non pretium vel, varius nec sem. Morbi sollicitudin mattis lacus quis pharetra. Donec tincidunt mollis pretium. Proin non libero justo, vitae mattis diam. Integer vel elit in enim varius posuere sed vitae magna. Duis blandit tempor elementum. Vestibulum molestie dui nisi.

    Curabitur volutpat interdum lorem sed tempus. Sed placerat quam non ligula lacinia sodales. Cras ultrices justo at nisi luctus hendrerit. Quisque sit amet placerat justo. In id sapien eu neque varius pharetra sed in sapien. Etiam nisl nunc, suscipit sed gravida sed, scelerisque ut nisl. Mauris quis massa nisl, aliquet posuere ligula. Etiam eget tortor mauris. Sed pellentesque vestibulum commodo. Mauris vitae est a libero dapibus dictum fringilla vitae magna.

    Nulla facilisi. Praesent eget elit et mauris gravida lobortis ac nec risus. Ut vulputate ullamcorper est, volutpat feugiat lacus convallis non. Maecenas quis sem odio, et aliquam libero. Integer vel tortor eget orci tincidunt pulvinar interdum at erat. Integer ullamcorper consequat eros a pellentesque. Cras sagittis interdum enim in malesuada. Etiam non nunc neque. Fusce non ligula at tellus porta venenatis. Praesent tortor orci, fermentum sed tincidunt vel, varius vel dui. Duis pulvinar luctus odio, eget porta justo vulputate ac. Nulla varius feugiat lorem sed tempor. Phasellus pulvinar dapibus magna eget egestas. In malesuada lectus at justo pellentesque vitae rhoncus nulla ultrices. Proin ut sem sem. Donec eu suscipit ipsum. Cras eu arcu porttitor massa feugiat aliquet at quis nisl.

    ',1,27,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,2,'',0,'*',''), (19,117,'Footer Module','footer-module','

    This module shows the Joomla! copyright information. Help

    {loadmodule footer,Footer}
    ','',1,66,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,3,'','',1,0,'',0,'*',''), (20,118,'Fruit Shop','fruit-shop','

    Welcome to the Fruit Shop

    We sell fruits from around the world. Please use our website to learn more about our business. We hope you will come to our shop and buy some fruit.

    This mini site will show you how you might want to set up a site for a business, in this example one selling fruit. It shows how to use access controls to manage your site content. If you were building a real site, you might want to extend it with e-commerce, a catalog, mailing lists or other enhancements, many of which are available through the Joomla! Extensions Directory.

    To understand this site you will probably want to make one user with group set to customer and one with group set to grower. By logging in with different privileges you can see how access control works.

    ','',1,29,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,10,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), -(21,119,'Getting Help','getting-help','

    There are lots of places you can get help with Joomla!. In many places in your site administrator you will see the help icon. Click on this for more information about the options and functions of items on your screen. Other places to get help are:

    ','',1,19,'2011-01-01 00:00:01',123,'Joomla','2012-09-25 07:39:17',123,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":null,"urlatext":"","targeta":"","urlb":null,"urlbtext":"","targetb":"","urlc":null,"urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","info_block_position":"0","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',2,8,'','',1,2,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(21,119,'Getting Help','getting-help','

    There are lots of places you can get help with Joomla!. In many places in your site administrator you will see the help icon. Click on this for more information about the options and functions of items on your screen. Other places to get help are:

    ','',1,19,'2011-01-01 00:00:01',123,'Joomla','2012-09-25 07:39:17',123,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":null,"urlatext":"","targeta":"","urlb":null,"urlbtext":"","targetb":"","urlc":null,"urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","info_block_position":"0","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',2,8,'','',1,2,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (22,120,'Getting Started','getting-started','

    It\'s easy to get started creating your website. Knowing some of the basics will help.

    What is a Content Management System?

    A content management system is software that allows you to create and manage webpages easily by separating the creation of your content from the mechanics required to present it on the web.

    In this site, the content is stored in a database. The look and feel are created by a template. The Joomla! software brings together the template and the content to create web pages.

    Site and Administrator

    Your site actually has two separate sites. The site (also called the front end) is what visitors to your site will see. The administrator (also called the back end) is only used by people managing your site. You can access the administrator by clicking the "Site Administrator" link on the "This Site" menu or by adding /administrator to the end of you domain name.

    Log in to the administrator using the username and password created during the installation of Joomla.

    Logging in

    To login to the front end of your site use the login form or the login menu link on the "This Site" menu. Use the user name and password that were created as part of the installation process. Once logged-in you will be able to create and edit articles.

    In managing your site, you will be able to create content that only logged-in users are able to see.

    Creating an article

    Once you are logged-in, a new menu will be visible. To create a new article, click on the "submit article" link on that menu.

    The new article interface gives you a lot of options, but all you need to do is add a title and put something in the content area. To make it easy to find, set the state to published and put it in the Joomla category.

    You can edit an existing article by clicking on the edit icon (this only displays to users who have the right to edit).

    Learn more

    There is much more to learn about how to use Joomla! to create the web site you envision. You can learn much more at the Joomla! documentation site and on the Joomla! forums.

    ','',1,19,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,9,'','',1,1,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (23,121,'Happy Orange Orchard','happy-orange-orchard','

    At our orchard we grow the world\'s best oranges as well as other citrus fruit such as lemons and grapefruit. Our family has been tending this orchard for generations.

    ','',1,30,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,2,'','',1,0,'',0,'*',''), (24,122,'Joomla!','joomla','

    Congratulations! You have a Joomla site! Joomla makes it easy to build a website just the way you want it and keep it simple to update and maintain.

    Joomla is a flexible and powerful platform, whether you are building a small site for yourself or a huge site with hundreds of thousands of visitors. Joomla is open source, which means you can make it work just the way you want it to.

    The content in this installation of Joomla has been designed to give you an in depth tour of Joomla\'s features.

    ','',1,19,'2011-01-01 00:00:01',123,'Joomla','2012-09-25 12:19:00',123,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":null,"urlatext":"","targeta":"","urlb":null,"urlbtext":"","targetb":"","urlc":null,"urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","info_block_position":"0","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',3,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',1,'*',''), -(25,123,'Koala','koala','

    ','

    ',1,72,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_koala_ag1.jpg","float_intro":"","image_intro_alt":"Koala Thumbnail","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_koala_ag1.jpg","float_fulltext":"","image_fulltext_alt":"Koala Climbing Tree","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Koala-ag1.jpg Author: Arnaud Gaillard License: Creative Commons Share Alike Attribution Generic 1.0"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(25,123,'Koala','koala','

    ','

    ',1,72,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_koala_ag1.jpg","float_intro":"","image_intro_alt":"Koala Thumbnail","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_koala_ag1.jpg","float_fulltext":"","image_fulltext_alt":"Koala Climbing Tree","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Koala-ag1.jpg Author: Arnaud Gaillard License: Creative Commons Share Alike Attribution Generic 1.0"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (26,124,'Language Switcher','language-switcher','

    The language switcher module allows you to take advantage of the language tags that are available when content, modules and menu links are created.

    This module displays a list of available Content Languages for switching between them.

    When switching languages, it redirects to the Home page, or associated menu item, defined for the chosen language. Thereafter, the navigation will be the one defined for that language.

    The language filter plugin must be enabled for this module to work properly.

    Help

    To view an example of the language switch moduler module, go to the site administrator and enable the language filter plugin and the language switcher module labelled "language switcher" and visit the fruit shop or park sample sites. Then follow the instructions in this tutorial.

    ','',1,67,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (27,125,'Latest Articles Module','latest-articles-module','

    This module shows a list of the most recently published and current Articles. Some that are shown may have expired even though they are the most recent. Help

    {loadmodule articles_latest,Latest News}
    ','',1,64,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'modules, content','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (28,126,'Login Module','login-module','

    This module displays a username and password login form. It also displays a link to retrieve a forgotten password. If user registration is enabled (in the Global Configuration settings), another link will be shown to enable self-registration for users. Help

    {loadmodule login,login}
    ','',1,65,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,2,'','',1,0,'',0,'*',''), @@ -315,8 +315,8 @@ INSERT INTO "#__content" VALUES (30,128,'Most Read Content','most-read-content','

    This module shows a list of the currently published Articles which have the highest number of page views. Help

    {loadmodule articles_popular,Articles Most Read}
    ','',1,64,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,2,'modules, content','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (31,129,'News Flash','news-flash','

    Displays a set number of articles from a category based on date or random selection. Help

    {loadmodule articles_news,News Flash}
    ','',1,64,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","page_title":"","alternative_readmore":"","layout":""}',1,3,'modules, content','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (32,130,'Options','options','

    As you make your Joomla! site you will control the details of the display using options also referred to as parameters. Options control everything from whether the author\'s name is displayed to who can view what to the number of items shown on a list.

    Default options for each component are changed using the Options button on the component toolbar.

    Options can also be set on an individual item, such as an article or contact and in menu links.

    If you are happy with how your site looks, it is fine to leave all of the options set to the defaults that were created when your site was installed. As you become more experienced with Joomla you will use options more.

    ','',1,19,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,10,'','',1,1,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), -(33,131,'Phyllopteryx','phyllopteryx','

    ','

    ',1,72,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/200px_phyllopteryx_taeniolatus1.jpg","float_intro":"","image_intro_alt":"Phyllopteryx","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_phyllopteryx_taeniolatus1.jpg","float_fulltext":"","image_fulltext_alt":"Phyllopteryx","image_fulltext_caption":"Source: http:\\/\\/en.wikipedia.org\\/wiki\\/File:Phyllopteryx_taeniolatus1.jpg Author: Richard Ling License: GNU Free Documentation License v 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), -(34,132,'Pinnacles','pinnacles','

    ','

    ',1,73,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_pinnacles_western_australia.jpg","float_intro":"","image_intro_alt":"Kings Canyon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_pinnacles_western_australia.jpg","float_fulltext":"","image_fulltext_alt":"Kings Canyon","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Pinnacles_Western_Australia.jpg Author: Martin Gloss License: GNU Free Documentation license v 1.2 or later."}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(33,131,'Phyllopteryx','phyllopteryx','

    ','

    ',1,72,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/200px_phyllopteryx_taeniolatus1.jpg","float_intro":"","image_intro_alt":"Phyllopteryx","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_phyllopteryx_taeniolatus1.jpg","float_fulltext":"","image_fulltext_alt":"Phyllopteryx","image_fulltext_caption":"Source: https:\\/\\/en.wikipedia.org\\/wiki\\/File:Phyllopteryx_taeniolatus1.jpg Author: Richard Ling License: GNU Free Documentation License v 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(34,132,'Pinnacles','pinnacles','

    ','

    ',1,73,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_pinnacles_western_australia.jpg","float_intro":"","image_intro_alt":"Kings Canyon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_pinnacles_western_australia.jpg","float_fulltext":"","image_fulltext_alt":"Kings Canyon","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Pinnacles_Western_Australia.jpg Author: Martin Gloss License: GNU Free Documentation license v 1.2 or later."}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (35,133,'Professionals','professionals','

    Joomla! 3 continues development of the Joomla Platform and CMS as a powerful and flexible way to bring your vision of the web to reality. With the new administrator interface and adoption of Twitter Bootstrap, the ability to control its look and the management of extensions is now complete.

    ','

    Working with multiple template styles and overrides for the same views, creating the design you want is easier than it has ever been. Limiting support to PHP 5.3.10 and above makes Joomla lighter and faster than ever.

    The separation of the Joomla! Platform project from the Joomla! CMS project makes continuous development of new, powerful APIs and continuous improvement of existing APIs possible while maintaining the stability of the CMS that millions of webmasters and professionals rely upon.

    ',1,19,'2011-01-01 00:00:01',123,'Joomla','2012-09-25 07:14:30',123,0,'1970-01-01 00:00:00','2011-01-09 16:41:13','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":null,"urlatext":"","targeta":"","urlb":null,"urlbtext":"","targetb":"","urlc":null,"urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","info_block_position":"0","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',2,5,'','',1,2,'{"robots":"","author":"","rights":"","xreference":""}',1,'*',''), (36,134,'Random Image Module','random-image-module','

    This module displays a random image from your chosen image directory. Help

    {loadmodule random_image,Random Image}
    ','',1,66,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (37,135,'Related Items Module','related-items-module','

    This module displays other Articles that are related to the one currently being viewed. These relations are established by the Meta Keywords. All the keywords of the current Article are searched against all the keywords of all other published articles. Help

    {loadmodule related_items,Articles Related Items}
    ','',1,64,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'modules, content','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), @@ -325,11 +325,11 @@ INSERT INTO "#__content" VALUES (40,138,'Search Module','search-module','

    This module will display a search box. Help

    {loadmodule search,Search}
    ','',1,67,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,4,'','',1,0,'',0,'*',''), (41,139,'Search ','search-plugin','

    The search component uses plugins to control which parts of your Joomla! site are searched. You may choose to turn off some areas to improve performance or for other reasons. Many third party Joomla! extensions have search plugins that extend where search takes place.

    Default On:

    ','',1,25,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,0,'',0,'*',''), (42,140,'Site Map','site-map','

    {loadposition sitemapload}

    By putting all of your content into nested categories you can give users and search engines access to everything using a menu.

    ','',1,14,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,3,'',0,'*',''), -(43,141,'Spotted Quoll','spotted-quoll','

    ','

    ',1,72,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/220px_spottedquoll_2005_seanmcclean.jpg","float_intro":"","image_intro_alt":"Spotted Quoll","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/789px_spottedquoll_2005_seanmcclean.jpg","float_fulltext":"","image_fulltext_alt":"Spotted Quoll","image_fulltext_caption":"Source: http:\\/\\/en.wikipedia.org\\/wiki\\/File:SpottedQuoll_2005_SeanMcClean.jpg Author: Sean McClean License: GNU Free Documentation License v 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(43,141,'Spotted Quoll','spotted-quoll','

    ','

    ',1,72,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/220px_spottedquoll_2005_seanmcclean.jpg","float_intro":"","image_intro_alt":"Spotted Quoll","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/789px_spottedquoll_2005_seanmcclean.jpg","float_fulltext":"","image_fulltext_alt":"Spotted Quoll","image_fulltext_caption":"Source: https:\\/\\/en.wikipedia.org\\/wiki\\/File:SpottedQuoll_2005_SeanMcClean.jpg Author: Sean McClean License: GNU Free Documentation License v 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (44,142,'Statistics Module','statistics','

    This module shows information about your server installation together with statistics on the Web site users, number of Articles in your database and the number of Web links you provide.

    {loadmodule mod_stats,Statistics}
    ','',1,67,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,5,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (45,143,'Syndicate Module','syndicate-module','

    The syndicate module will display a link that allows users to take a feed from your site. It will only display on pages for which feeds are possible. That means it will not display on single article, contact pages, such as this one. Help

    {loadposition syndicate,Syndicate}
    ','',1,67,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,6,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (46,144,'System','system','

    System plugins operate every time a page on your site loads. They control such things as your URLS, whether users can check a "remember me" box on the login module, and whether caching is enabled. New is the redirect plugin that together with the redirect component will assist you in managing changes in URLs.

    Default on:

    Default off:

    ','',1,25,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), -(47,145,'The Joomla! Community','the-joomla-community','

    Joomla means All Together, and it is a community of people all working and having fun together that makes Joomla possible. Thousands of people each year participate in the Joomla community, and we hope you will be one of them.

    People with all kinds of skills, of all skill levels and from around the world are welcome to join in. Participate in the Joomla.org family of websites (the forum is a great place to start). Come to a Joomla! event. Join or start a Joomla! Users Group. Whether you are a developer, site administrator, designer, end user or fan, there are ways for you to participate and contribute.

    ','',1,19,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,1,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(47,145,'The Joomla! Community','the-joomla-community','

    Joomla means All Together, and it is a community of people all working and having fun together that makes Joomla possible. Thousands of people each year participate in the Joomla community, and we hope you will be one of them.

    People with all kinds of skills, of all skill levels and from around the world are welcome to join in. Participate in the Joomla.org family of websites (the forum is a great place to start). Come to a Joomla! event. Join or start a Joomla! Users Group. Whether you are a developer, site administrator, designer, end user or fan, there are ways for you to participate and contribute.

    ','',1,19,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,1,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (48,146,'The Joomla! Project','the-joomla-project','

    The Joomla Project consists of all of the people who make and support the Joomla Web Platform and Content Management System.

    Our mission is to provide a flexible platform for digital publishing and collaboration.

    The core values are:

    • Freedom
    • Equality
    • Trust
    • Community
    • Collaboration
    • Usability

    In our vision, we see:

    • People publishing and collaborating in their communities and around the world
    • Software that is free, secure, and high-quality
    • A community that is enjoyable and rewarding to participate in
    • People around the world using their preferred languages
    • A project that acts autonomously
    • A project that is socially responsible
    • A project dedicated to maintaining the trust of its users

    There are millions of users around the world and thousands of people who contribute to the Joomla Project. They work in three main groups: the Production Working Group, responsible for everything that goes into software and documentation; the Community Working Group, responsible for creating a nurturing the community; and Open Source Matters, the non profit organization responsible for managing legal, financial and organizational issues.

    Joomla is a free and open source project, which uses the GNU General Public License version 2 or later.

    ','',1,19,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,2,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (49,147,'Typography','typography','

    H1 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H2 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H3 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H4 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H5 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz
    H6 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    P The quick brown fox ran over the lazy dog. THE QUICK BROWN FOX RAN OVER THE LAZY DOG.

    • Item
    • Item
    • Item
      • Item
      • Item
      • Item
        • Item
        • Item
        • Item
    1. tem
    2. Item
    3. Item
      1. Item
      2. Item
      3. Item
        1. Item
        2. Item
        3. Item
    ','',1,23,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,8,'',0,'*',''), (50,148,'Upgraders','upgraders','

    If you are an experienced Joomla! user, this Joomla site will seem very familiar but also very different. The biggest change is the new administrator interface and the adoption of responsive design. Hundreds of other improvements have been made.

    ','',1,19,'2011-01-01 00:00:01',123,'Joomla','2012-09-25 07:12:10',123,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":null,"urlatext":"","targeta":"","urlb":null,"urlbtext":"","targetb":"","urlc":null,"urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","info_block_position":"0","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',3,6,'','',1,2,'{"robots":"","author":"","rights":"","xreference":""}',1,'*',''), @@ -337,14 +337,14 @@ INSERT INTO "#__content" VALUES (52,150,'Users','users-component','

    The users extension lets your site visitors register, login and logout, change their passwords and other information, and recover lost passwords. In the administrator it allows you to create, block and manage users and create user groups and access levels. Help

    Please note that some of the user views will not display if you are not logged-in to the site.

    ','',1,21,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}',1,5,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (53,151,'Using Joomla!','using-joomla','

    With Joomla you can create anything from a simple personal website to a complex ecommerce or social site with millions of visitors.

    This section of the sample data provides you with a brief introduction to Joomla concepts and reference material to help you understand how Joomla works.

    When you no longer need the sample data, you can can simply unpublish the sample data category found within each extension in the site administrator or you may completely delete each item and all of the categories.

    ','',1,19,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,7,'','',1,5,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (56,154,'Who\'s Online','whos-online','

    The Who\'s Online Module displays the number of Anonymous Users (e.g. Guests) and Registered Users (ones logged-in) that are currently accessing the Web site. Help

    {loadmodule whosonline,Who\'s Online}
    ','',1,65,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,0,'',0,'*',''), -(57,155,'Wobbegone','wobbegone','

    ','

    ',1,72,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_wobbegong.jpg","float_intro":"","image_intro_alt":"Wobbegon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_wobbegong.jpg","float_fulltext":"","image_fulltext_alt":"Wobbegon","image_fulltext_caption":"Source: http:\\/\\/en.wikipedia.org\\/wiki\\/File:Wobbegong.jpg Author: Richard Ling Rights: GNU Free Documentation License v 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(57,155,'Wobbegone','wobbegone','

    ','

    ',1,72,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_wobbegong.jpg","float_intro":"","image_intro_alt":"Wobbegon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_wobbegong.jpg","float_fulltext":"","image_fulltext_alt":"Wobbegon","image_fulltext_caption":"Source: https:\\/\\/en.wikipedia.org\\/wiki\\/File:Wobbegong.jpg Author: Richard Ling Rights: GNU Free Documentation License v 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (58,156,'Wonderful Watermelon','wonderful-watermelon','

    Watermelon is a wonderful and healthy treat. We grow the world\'s sweetest watermelon. We have the largest watermelon patch in our country.

    ','',1,30,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,0,'',0,'*',''), (59,157,'Wrapper Module','wrapper-module','

    This module shows an iFrame window to specified location. Help

    {loadmodule wrapper,Wrapper}
    ','',1,67,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,0,'',0,'*',''), (60,158,'News Feeds','news-feeds','

    News Feeds (com_newsfeeds) provides a way to organize and present news feeds. News feeds are a way that you present information from another site on your site. For example, the joomla.org website has numerous feeds that you can incorporate on your site. You an use menus to present a single feed, a list of feeds in a category, or a list of all feed categories. Help

    ','',1,21,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (61,159,'Breadcrumbs Module','breadcrumbs-module','

    Breadcrumbs provide a pathway for users to navigate through the site. Help

    {loadmodule breadcrumbs,breadcrumbs}
    ','',1,75,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (62,160,'Content','content-plugins','

    Content plugins run when specific kinds of pages are loaded. They do things ranging from protecting email addresses from harvesters to creating page breaks.

    Default on:

    ','',1,25,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,7,'','',1,0,'',0,'*',''), -(64,162,'Blue Mountain Rain Forest','blue-mountain-rain-forest','

    ','

    ',1,73,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_rainforest_bluemountainsnsw.jpg","float_intro":"none","image_intro_alt":"Rain Forest Blue Mountains","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/727px_rainforest_bluemountainsnsw.jpg","float_fulltext":"","image_fulltext_alt":"Rain Forest Blue Mountains","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Adam J.W.C. License: GNU Free Documentation License"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), -(65,163,'Ormiston Pound','ormiston-pound','

    ','

    ',1,73,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/180px_ormiston_pound.jpg","float_intro":"none","image_intro_alt":"Ormiston Pound","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_ormiston_pound.jpg","float_fulltext":"","image_fulltext_alt":"Ormiston Pound","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Ormiston_Pound.JPG Author: License: GNU Free Public Documentation License"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(64,162,'Blue Mountain Rain Forest','blue-mountain-rain-forest','

    ','

    ',1,73,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_rainforest_bluemountainsnsw.jpg","float_intro":"none","image_intro_alt":"Rain Forest Blue Mountains","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/727px_rainforest_bluemountainsnsw.jpg","float_fulltext":"","image_fulltext_alt":"Rain Forest Blue Mountains","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Adam J.W.C. License: GNU Free Documentation License"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(65,163,'Ormiston Pound','ormiston-pound','

    ','

    ',1,73,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/180px_ormiston_pound.jpg","float_intro":"none","image_intro_alt":"Ormiston Pound","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_ormiston_pound.jpg","float_fulltext":"","image_fulltext_alt":"Ormiston Pound","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Ormiston_Pound.JPG Author: License: GNU Free Public Documentation License"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (66,165,'Latest Users Module','latest-users-module','

    This module displays the latest registered users. Help

    {loadmodule users_latest,Users Latest}
    ','',1,65,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"1","link_titles":"","show_intro":"","show_category":"1","link_category":"1","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,3,'','',1,0,'',0,'*',''), (67,168,'What\'s New in 1.5?','whats-new-in-15','

    This article deliberately archived as an example.

    As with previous releases, Joomla! provides a unified and easy-to-use framework for delivering content for Web sites of all kinds. To support the changing nature of the Internet and emerging Web technologies, Joomla! required substantial restructuring of its core functionality and we also used this effort to simplify many challenges within the current user interface. Joomla! 1.5 has many new features.

    In Joomla! 1.5, you\'\'ll notice:

    • Substantially improved usability, manageability, and scalability far beyond the original Mambo foundations
    • Expanded accessibility to support internationalisation, double-byte characters and right-to-left support for Arabic, Farsi, and Hebrew languages among others
    • Extended integration of external applications through Web services
    • Enhanced content delivery, template and presentation capabilities to support accessibility standards and content delivery to any destination
    • A more sustainable and flexible framework for Component and Extension developers
    • Backward compatibility with previous releases of Components, Templates, Modules, and other Extensions
    ','',2,9,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,0,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (68,170,'Captcha','captcha','

    The Captcha plugins are used to prevent spam submissions on your forms such as registration, contact and login. You basic installation of Joomla includes one Captcha plugin which leverages the ReCaptcha® service but you may install other plugins connecting to different Captcha systems.

    Default on:

    Note: ReCaptcha is a the trademark of Google Inc. and is an independent product not associated with or endorsed by the Joomla Project. You will need to register and agree to the Terms of Service at Recaptcha.net to use this plugin. Complete instructions are available if you edit the ReCaptcha plugin in the Plugin Manager.

    ','',1,25,'2011-01-01 00:00:01',123,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2012-01-17 03:20:45','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), @@ -385,7 +385,7 @@ INSERT INTO "#__menu" VALUES (21,'menu','com_finder','Smart Search','','Smart Search','index.php?option=com_finder','component',0,1,1,27,0,'1970-01-01 00:00:00',0,0,'class:finder',0,'',41,42,0,'*',1), (22,'menu','com_joomlaupdate','Joomla! Update','','Joomla! Update','index.php?option=com_joomlaupdate','component',0,1,1,28,0,'1970-01-01 00:00:00',0,0,'class:joomlaupdate',0,'',41,42,0,'*',1), (201,'usermenu','Your Profile','your-profile','','your-profile','index.php?option=com_users&view=profile','component',1,1,1,25,0,'1970-01-01 00:00:00',0,2,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}',231,232,0,'*',0), -(207,'top','Joomla.org','joomlaorg','','joomlaorg','http://joomla.org','url',1,1,1,0,0,'1970-01-01 00:00:00',0,1,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}',229,230,0,'*',0), +(207,'top','Joomla.org','joomlaorg','','joomlaorg','https://www.joomla.org/','url',1,1,1,0,0,'1970-01-01 00:00:00',0,1,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}',229,230,0,'*',0), (229,'aboutjoomla','Single Contact','single-contact','','using-joomla/extensions/components/contact-component/single-contact','index.php?option=com_contact&view=contact&id=1','component',1,270,5,8,0,'1970-01-01 00:00:00',0,1,'',0,'{"show_category_crumb":"","presentation_style":"","show_contact_category":"","show_contact_list":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_links":"","linka_name":"","linkb_name":"","linkc_name":"","linkd_name":"","linke_name":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}',79,80,0,'*',0), (233,'mainmenu','Login','login','','login','index.php?option=com_users&view=login','component',1,1,1,25,0,'1970-01-01 00:00:00',0,1,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}',11,12,0,'*',0), (234,'parks','Park Blog','park-blog','','park-blog','index.php?option=com_content&view=category&layout=blog&id=27','component',1,1,1,22,0,'1970-01-01 00:00:00',0,1,'',114,'{"maxLevel":"","show_empty_categories":"","show_description":"1","show_description_image":"1","show_category_title":"","show_cat_num_articles":"","num_leading_articles":"1","num_intro_articles":"4","num_columns":"1","num_links":"4","multi_column_order":"","orderby_pri":"","orderby_sec":"","order_date":"","show_pagination":"2","show_noauth":"","show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_readmore":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_hits":"","show_feed_link":"1","feed_summary":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}',235,236,0,'en-GB',0), @@ -548,7 +548,7 @@ INSERT INTO "#__modules" VALUES (37,0,'Syndicate Feeds','','',1,'syndicateload',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_syndicate',1,1,'{"text":"Feed Entries","format":"rss","layout":"","moduleclass_sfx":"","cache":"0"}',0,'*'), (38,0,'Users Latest','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_users_latest',1,1,'{"shownumber":"5","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"static"}',0,'*'), (39,0,'Who\'s Online','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_whosonline',1,1,'{"showmode":"2","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}',0,'*'), -(40,0,'Wrapper','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_wrapper',1,1,'{"url":"http:\\/\\/www.youtube.com\\/embed\\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), +(40,0,'Wrapper','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_wrapper',1,1,'{"url":"https:\\/\\/www.youtube.com\\/embed\\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), (41,0,'Footer','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_footer',1,1,'{"layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), (44,0,'Login','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_login',1,1,'{"pretext":"","posttext":"","login":"280","logout":"280","greeting":"1","name":"0","usesecure":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}',0,'*'), (45,0,'Menu Example','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_menu',1,1,'{"menutype":"mainmenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}',0,'*'), diff --git a/installation/sql/postgresql/sample_testing.sql b/installation/sql/postgresql/sample_testing.sql index 7ea6602ca9c02..d4eb750d3a57f 100644 --- a/installation/sql/postgresql/sample_testing.sql +++ b/installation/sql/postgresql/sample_testing.sql @@ -179,9 +179,9 @@ SELECT setval('#__assets_id_seq', max(id)) FROM #__assets; -- Dumping data for table #__banners -- INSERT INTO "#__banners" VALUES -(2,3,0,'Shop 1','shop-1',0,0,0,'http://shop.joomla.org/amazoncom-bookstores.html',1,15,'Get books about Joomla! at the Joomla! Book Shop.','',0,1,'','{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Books"}',0,'',-1,0,0,0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','2011-01-01 00:00:01','en-GB',42,'Joomla','1970-01-01 00:00:00',0,1), -(3,2,0,'Shop 2','shop-2',0,0,0,'http://shop.joomla.org',1,15,'T Shirts, caps and more from the Joomla! Shop.','',0,2,'','{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Shop"}',0,'',-1,0,0,0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','2011-01-01 00:00:01','en-GB',42,'Joomla','1970-01-01 00:00:00',0,1), -(4,1,0,'Support Joomla!','support-joomla',0,0,0,'http://contribute.joomla.org',1,15,'Your contributions of time, talent and money make Joomla possible.','',0,3,'','{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":""}',0,'',-1,0,0,0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','2011-01-01 00:00:01','en-GB',42,'Joomla','1970-01-01 00:00:00',0,1); +(2,3,0,'Shop 1','shop-1',0,0,0,'https://shop.joomla.org/amazoncom-bookstores.html',1,15,'Get books about Joomla! at the Joomla! Book Shop.','',0,1,'','{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Books"}',0,'',-1,0,0,0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','2011-01-01 00:00:01','en-GB',42,'Joomla','1970-01-01 00:00:00',0,1), +(3,2,0,'Shop 2','shop-2',0,0,0,'https://shop.joomla.org',1,15,'T Shirts, caps and more from the Joomla! Shop.','',0,2,'','{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":"Joomla! Shop"}',0,'',-1,0,0,0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','2011-01-01 00:00:01','en-GB',42,'Joomla','1970-01-01 00:00:00',0,1), +(4,1,0,'Support Joomla!','support-joomla',0,0,0,'https://contribute.joomla.org',1,15,'Your contributions of time, talent and money make Joomla possible.','',0,3,'','{"imageurl":"images\\/banners\\/white.png","width":"","height":"","alt":""}',0,'',-1,0,0,0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00','2011-01-01 00:00:01','en-GB',42,'Joomla','1970-01-01 00:00:00',0,1); SELECT setval('#__banners_id_seq', max(id)) FROM #__banners; @@ -217,13 +217,13 @@ INSERT INTO "#__categories" VALUES (25,50,20,36,37,4,'sample-data-articles/joomla/extensions/plugins','com_content','Plugins','plugins','','

    Plugin ImagePlugins are small task oriented extensions that enhance the Joomla! framework. Some are associated with particular extensions and others, such as editors, are used across all of Joomla. Most beginning users do not need to change any of the plugins that install with Joomla. Help

    ',1,0,'1970-01-01 00:00:00',1,'{"category_layout":"","image":""}','','','{"author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (26,51,14,40,49,2,'sample-data-articles/park-site','com_content','Park Site','park-site','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'en-GB',1), (27,52,26,41,42,3,'sample-data-articles/park-site/park-blog','com_content','Park Blog','park-blog','','

    Here is where I will blog all about the parks of Australia.

    You can make a blog on your website by creating a category to write your blog posts in (this one is called Park Blog). Each blog post will be an article in that category. If you make a category blog menu link with 1 column it will look like this page, if you display the category description then this part is displayed.

    To enhance your blog you may want to add extensions for comments, interacting with social network sites, tagging, and keeping in contact with your readers. You can also enable the syndication that is included in Joomla (in the Integration Options set Show Feed Link to Show and make sure to display the syndication module on the page).

    ',1,0,'1970-01-01 00:00:00',1,'{"category_layout":"","image":"images\\/sampledata\\/parks\\/banner_cradle.jpg"}','','','{"author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'en-GB',1), -(28,53,26,43,48,3,'sample-data-articles/park-site/photo-gallery','com_content','Photo Gallery','photo-gallery','','

    These are my photos from parks I have visited (I didn''t take them, they are all from Wikimedia Commons).

    This shows you how to make a simple image gallery using articles in com_content.

    In each article put a thumbnail image before a "readmore" and the full size image after it. Set the article to Show Intro Text: Hide.

    ',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'en-GB',1), +(28,53,26,43,48,3,'sample-data-articles/park-site/photo-gallery','com_content','Photo Gallery','photo-gallery','','

    These are my photos from parks I have visited (I didn''t take them, they are all from Wikimedia Commons).

    This shows you how to make a simple image gallery using articles in com_content.

    In each article put a thumbnail image before a "readmore" and the full size image after it. Set the article to Show Intro Text: Hide.

    ',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'en-GB',1), (29,54,14,50,55,2,'sample-data-articles/fruit-shop-site','com_content','Fruit Shop Site','fruit-shop-site','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (30,55,29,51,52,3,'sample-data-articles/fruit-shop-site/growers','com_content','Growers','growers','','

    We search the whole countryside for the best fruit growers.

    You can let each supplier have a page that he or she can edit. To see this in action you will need to create a user who is in the suppliers group.

    Create one page in the growers category for that user and make that supplier the author of the page. That user will be able to edit his or her page.

    This illustrates the use of the Edit Own permission.

    ',1,0,'1970-01-01 00:00:00',1,'{"category_layout":"","image":""}','','','{"author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (34,59,16,64,65,2,'sample-data-contact/park-site','com_contact','Park Site','park-site','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'en-GB',1), (35,60,16,66,123,2,'sample-data-contact/shop-site','com_contact','Shop Site','shop-site','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (36,61,35,67,68,3,'sample-data-contact/shop-site/staff','com_contact','Staff','staff','','

    Please feel free to contact our staff at any time should you need assistance.

    ',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), -(37,62,35,69,122,3,'sample-data-contact/shop-site/fruit-encyclopedia','com_contact','Fruit Encyclopedia','fruit-encyclopedia','','

    Our directory of information about different kinds of fruit.

    We love fruit and want the world to know more about all of its many varieties.

    Although it is small now, we work on it whenever we have a chance.

    All of the images can be found in Wikimedia Commons.

    Apples

    This encyclopedia is implemented using the contact component, each fruit a separate contact and a category for each letter. A CSS style is used to create the horizontal layout of the alphabet headings.

    If you wanted to, you could allow some users (such as your growers) to have access to just this category in the contact component and let them help you to create new content for the encyclopedia.

    ',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), +(37,62,35,69,122,3,'sample-data-contact/shop-site/fruit-encyclopedia','com_contact','Fruit Encyclopedia','fruit-encyclopedia','','

    Our directory of information about different kinds of fruit.

    We love fruit and want the world to know more about all of its many varieties.

    Although it is small now, we work on it whenever we have a chance.

    All of the images can be found in Wikimedia Commons.

    Apples

    This encyclopedia is implemented using the contact component, each fruit a separate contact and a category for each letter. A CSS style is used to create the horizontal layout of the alphabet headings.

    If you wanted to, you could allow some users (such as your growers) to have access to just this category in the contact component and let them help you to create new content for the encyclopedia.

    ',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (38,63,37,70,71,4,'sample-data-contact/shop-site/fruit-encyclopedia/a','com_contact','A','a','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (39,64,37,72,73,4,'sample-data-contact/shop-site/fruit-encyclopedia/b','com_contact','B','b','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), (40,65,37,74,75,4,'sample-data-contact/shop-site/fruit-encyclopedia/c','com_contact','C','c','','',1,0,'1970-01-01 00:00:00',1,'{"target":"","image":""}','','','{"page_title":"","author":"","robots":""}',42,'2011-01-01 00:00:01',0,'1970-01-01 00:00:00',0,'*',1), @@ -269,13 +269,13 @@ SELECT setval('#__categories_id_seq', max(id)) FROM #__categories; -- Dumping data for table #__contact_details -- INSERT INTO "#__contact_details" VALUES -(1,'Contact Name Here','name','Position','Street Address','Suburb','State','Country','Zip Code','Telephone','Fax','

    Information about or by the contact.

    ','images/powered_by.png','email@example.com',1,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"http:\\/\\/twitter.com\\/joomla","linkb_name":"YouTube","linkb":"http:\\/\\/www.youtube.com\\/user\\/joomla","linkc_name":"Facebook","linkc":"http:\\/\\/www.facebook.com\\/joomla","linkd_name":"FriendFeed","linkd":"http:\\/\\/friendfeed.com\\/joomla","linke_name":"Scribd","linke":"http:\\/\\/www.scribd.com\\/people\\/view\\/504592-joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}',0,16,1,'','','last','first','middle','en-GB','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',1,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), +(1,'Contact Name Here','name','Position','Street Address','Suburb','State','Country','Zip Code','Telephone','Fax','

    Information about or by the contact.

    ','images/powered_by.png','email@example.com',1,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"https:\\/\\/twitter.com\\/joomla","linkb_name":"YouTube","linkb":"https:\\/\\/www.youtube.com\\/user\\/joomla","linkc_name":"Facebook","linkc":"https:\\/\\/www.facebook.com\\/joomla","linkd_name":"FriendFeed","linkd":"http:\\/\\/friendfeed.com\\/joomla","linke_name":"Scribd","linke":"http:\\/\\/www.scribd.com\\/people\\/view\\/504592-joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}',0,16,1,'','','last','first','middle','en-GB','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',1,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), (2,'Webmaster','webmaster','','','','','','','','','','','webmaster@example.com',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"1","show_email_copy":"1","banned_email":"","banned_subject":"","banned_text":"","validate_session":"1","custom_reply":"","redirect":""}',0,34,1,'','','','','','en-GB','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',1,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), (3,'Owner','owner','','','','','','','','','

    I''m the owner of this store.

    ','','',0,1,0,'1970-01-01 00:00:00',2,'{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}',0,36,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',1,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), (4,'Buyer','buyer','','','','','','','','','

    I am in charge of buying fruit. If you sell good fruit, contact me.

    ','','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"0","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}',0,36,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',1,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), -(5,'Bananas','bananas','Scientific Name: Musa','Image Credit: EnzikRights: Creative Commons Share Alike Unported 3.0Source: http://commons.wikimedia.org/wiki/File:Bananas_-_Morocco.jpg','','Type: Herbaceous','Large Producers: India, China, Brasil','','','','

    Bananas are a great source of potassium.

    ','images/sampledata/fruitshop/bananas_2.jpg','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"show_with_link","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"1","show_email":"","show_street_address":"","show_suburb":"","show_state":"1","show_postcode":"","show_country":"1","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Banana English","linka":"http:\\/\\/en.wikipedia.org\\/wiki\\/Banana","linkb_name":"Wikipedia: \\u0939\\u093f\\u0928\\u094d\\u0926\\u0940 \\u0915\\u0947\\u0932\\u093e","linkb":"http:\\/\\/hi.wikipedia.org\\/wiki\\/%E0%A4%95%E0%A5%87%E0%A4%B2%E0%A4%BE","linkc_name":"Wikipedia:Banana Portugu\\u00eas","linkc":"http:\\/\\/pt.wikipedia.org\\/wiki\\/Banana","linkd_name":"Wikipedia: \\u0411\\u0430\\u043d\\u0430\\u043d \\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439","linkd":"http:\\/\\/ru.wikipedia.org\\/\\u0411\\u0430\\u043d\\u0430\\u043d","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}',0,39,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',0,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), -(6,'Apples','apples','Scientific Name: Malus domestica','Image Credit: FievetRights: Public DomainSource: http://commons.wikimedia.org/wiki/File:Pommes_vertes.JPG','','Family: Rosaceae','Large: Producers: China, United States','','','','

    Apples are a versatile fruit, used for eating, cooking, and preserving.

    There are more that 7500 different kinds of apples grown around the world.

    ','images/sampledata/fruitshop/apple.jpg','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Apples English","linka":"http:\\/\\/en.wikipedia.org\\/wiki\\/Apple","linkb_name":"Wikipedia: Manzana Espa\\u00f1ol ","linkb":"http:\\/\\/es.wikipedia.org\\/wiki\\/Manzana","linkc_name":"Wikipedia: \\u82f9\\u679c \\u4e2d\\u6587","linkc":"http:\\/\\/zh.wikipedia.org\\/zh\\/\\u82f9\\u679c","linkd_name":"Wikipedia: Tofaa Kiswahili","linkd":"http:\\/\\/sw.wikipedia.org\\/wiki\\/Tofaa","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}',0,38,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',0,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), -(7,'Tamarind','tamarind','Scientific Name: Tamarindus indica','Image Credit: Franz Eugen Köhler, Köhler''s Medizinal-Pflanzen Rights: Public DomainSource:http://commons.wikimedia.org/wiki/File:Koeh-134.jpg','','Family: Fabaceae','Large Producers: India, United States','','','','

    Tamarinds are a versatile fruit used around the world. In its young form it is used in hot sauces; ripened it is the basis for many refreshing drinks.

    ','images/sampledata/fruitshop/tamarind.jpg','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Tamarind English","linka":"http:\\/\\/en.wikipedia.org\\/wiki\\/Tamarind","linkb_name":"Wikipedia: \\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 \\u09ac\\u09be\\u0982\\u09b2\\u09be ","linkb":"http:\\/\\/bn.wikipedia.org\\/wiki\\/\\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 ","linkc_name":"Wikipedia: Tamarinier Fran\\u00e7ais","linkc":"http:\\/\\/fr.wikipedia.org\\/wiki\\/Tamarinier","linkd_name":"Wikipedia:Tamaline lea faka-Tonga","linkd":"http:\\/\\/to.wikipedia.org\\/wiki\\/Tamaline","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}',0,57,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',0,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), +(5,'Bananas','bananas','Scientific Name: Musa','Image Credit: EnzikRights: Creative Commons Share Alike Unported 3.0Source: https://commons.wikimedia.org/wiki/File:Bananas_-_Morocco.jpg','','Type: Herbaceous','Large Producers: India, China, Brasil','','','','

    Bananas are a great source of potassium.

    ','images/sampledata/fruitshop/bananas_2.jpg','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"show_with_link","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"1","show_email":"","show_street_address":"","show_suburb":"","show_state":"1","show_postcode":"","show_country":"1","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Banana English","linka":"https:\\/\\/en.wikipedia.org\\/wiki\\/Banana","linkb_name":"Wikipedia: \\u0939\\u093f\\u0928\\u094d\\u0926\\u0940 \\u0915\\u0947\\u0932\\u093e","linkb":"https:\\/\\/hi.wikipedia.org\\/wiki\\/%E0%A4%95%E0%A5%87%E0%A4%B2%E0%A4%BE","linkc_name":"Wikipedia:Banana Portugu\\u00eas","linkc":"https:\\/\\/pt.wikipedia.org\\/wiki\\/Banana","linkd_name":"Wikipedia: \\u0411\\u0430\\u043d\\u0430\\u043d \\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439","linkd":"https:\\/\\/ru.wikipedia.org\\/\\u0411\\u0430\\u043d\\u0430\\u043d","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}',0,39,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',0,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), +(6,'Apples','apples','Scientific Name: Malus domestica','Image Credit: FievetRights: Public DomainSource: https://commons.wikimedia.org/wiki/File:Pommes_vertes.JPG','','Family: Rosaceae','Large: Producers: China, United States','','','','

    Apples are a versatile fruit, used for eating, cooking, and preserving.

    There are more that 7500 different kinds of apples grown around the world.

    ','images/sampledata/fruitshop/apple.jpg','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Apples English","linka":"https:\\/\\/en.wikipedia.org\\/wiki\\/Apple","linkb_name":"Wikipedia: Manzana Espa\\u00f1ol ","linkb":"https:\\/\\/es.wikipedia.org\\/wiki\\/Manzana","linkc_name":"Wikipedia: \\u82f9\\u679c \\u4e2d\\u6587","linkc":"https:\\/\\/zh.wikipedia.org\\/zh\\/\\u82f9\\u679c","linkd_name":"Wikipedia: Tofaa Kiswahili","linkd":"https:\\/\\/sw.wikipedia.org\\/wiki\\/Tofaa","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}',0,38,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',0,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), +(7,'Tamarind','tamarind','Scientific Name: Tamarindus indica','Image Credit: Franz Eugen Köhler, Köhler''s Medizinal-Pflanzen Rights: Public DomainSource:https://commons.wikimedia.org/wiki/File:Koeh-134.jpg','','Family: Fabaceae','Large Producers: India, United States','','','','

    Tamarinds are a versatile fruit used around the world. In its young form it is used in hot sauces; ripened it is the basis for many refreshing drinks.

    ','images/sampledata/fruitshop/tamarind.jpg','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Tamarind English","linka":"https:\\/\\/en.wikipedia.org\\/wiki\\/Tamarind","linkb_name":"Wikipedia: \\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 \\u09ac\\u09be\\u0982\\u09b2\\u09be ","linkb":"https:\\/\\/bn.wikipedia.org\\/wiki\\/\\u09a4\\u09c7\\u0981\\u09a4\\u09c1\\u09b2 ","linkc_name":"Wikipedia: Tamarinier Fran\\u00e7ais","linkc":"https:\\/\\/fr.wikipedia.org\\/wiki\\/Tamarinier","linkd_name":"Wikipedia:Tamaline lea faka-Tonga","linkd":"https:\\/\\/to.wikipedia.org\\/wiki\\/Tamaline","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}',0,57,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',0,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0), (8,'Shop Address','shop-address','','','Our City','Our Province','Our Country','','555-555-5555','','

    Here are directions for how to get to our shop.

    ','','',0,1,0,'1970-01-01 00:00:00',1,'{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}',0,35,1,'','','','','','*','2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,'','','{"robots":"","rights":""}',1,'','1970-01-01 00:00:00','1970-01-01 00:00:00',1,0); SELECT setval('#__contact_details_id_seq', max(id)) FROM #__contact_details; @@ -294,7 +294,7 @@ INSERT INTO "#__content" VALUES (8,104,'Beginners','beginners','

    If this is your first Joomla! site or your first web site, you have come to the right place. Joomla will help you get your website up and running quickly and easily.

    Start off using your site by logging in using the administrator account you created when you installed Joomla.

    ','

    Explore the articles and other resources right here on your site data to learn more about how Joomla works. (When you''re done reading, you can delete or archive all of this.) You will also probably want to visit the Beginners'' Areas of the Joomla documentation and support forums.

    You''ll also want to sign up for the Joomla Security Mailing list and the Announcements mailing list. For inspiration visit the Joomla! Site Showcase to see an amazing array of ways people use Joomla to tell their stories on the web.

    The basic Joomla installation will let you get a great site up and running, but when you are ready for more features the power of Joomla is in the creative ways that developers have extended it to do all kinds of things. Visit the Joomla! Extensions Directory to see thousands of extensions that can do almost anything you could want on a website. Can''t find what you need? You may want to find a Joomla professional in the Joomla! Resource Directory.

    Want to learn more? Consider attending a Joomla! Day or other event or joining a local Joomla! Users Group. Can''t find one near you? Start one yourself.

    ',1,19,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',1,'*',''), (9,105,'Contacts','contact','

    The contact component provides a way to provide contact forms and information for your site or to create a complex directory that can be used for many different purposes. Help

    ','',1,21,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (10,106,'Content','content','

    The content component (com_content) is what you use to write articles. It is extremely flexible and has the largest number of built in views. Articles can be created and edited from the front end, making content the easiest component to use to create your site content. Help

    ','',1,21,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), -(11,107,'Cradle Mountain','cradle-mountain','

    ','

    ',1,73,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/250px_cradle_mountain_seen_from_barn_bluff.jpg","float_intro":"","image_intro_alt":"Cradle Mountain","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_cradle_mountain_seen_from_barn_bluff.jpg","float_fulltext":"none","image_fulltext_alt":"Cradle Mountain","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Alan J.W.C. License: GNU Free Documentation License v . 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(11,107,'Cradle Mountain','cradle-mountain','

    ','

    ',1,73,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/250px_cradle_mountain_seen_from_barn_bluff.jpg","float_intro":"","image_intro_alt":"Cradle Mountain","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_cradle_mountain_seen_from_barn_bluff.jpg","float_fulltext":"none","image_fulltext_alt":"Cradle Mountain","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Alan J.W.C. License: GNU Free Documentation License v . 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (12,110,'Custom Module','custom-module','

    This module allows you to create your own Module using a WYSIWYG editor. Help

    {loadmodule custom,Custom}
    ','',1,66,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (13,111,'Directions','directions','

    Here''s how to find our shop.

    By car

    Drive along Main Street to the intersection with First Avenue. Look for our sign.

    By foot

    From the center of town, walk north on Main Street until you see our sign.

    By bus

    Take the #73 Bus to the last stop. We are on the north east corner.

    ','',1,29,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,2,'','',1,0,'',0,'*',''), (14,112,'Editors','editors','

    Editors are used thoughout Joomla! where content is created. TinyMCE is the default choice in most locations although CodeMirror is used in the template manager. No Editor provides a text box for html content.

    Default on:

    Default off:

    • None
    ','',1,25,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,5,'','',1,0,'',0,'*',''), @@ -304,11 +304,11 @@ INSERT INTO "#__content" VALUES (18,116,'Second Blog Post','second-blog-post','

    Lorem Ipsum is text that is traditionally used by designers when working on a site before the content is ready.

    Pellentesque bibendum metus ut dolor fermentum ut pulvinar tortor hendrerit. Nam vel odio vel diam tempus iaculis in non urna. Curabitur scelerisque, nunc id interdum vestibulum, felis elit luctus dui, ac dapibus tellus mauris tempus augue. Duis congue facilisis lobortis. Phasellus neque erat, tincidunt non lacinia sit amet, rutrum vitae nunc. Sed placerat lacinia fermentum. Integer justo sem, cursus id tristique eget, accumsan vel sapien. Curabitur ipsum neque, elementum vel vestibulum ut, lobortis a nisl. Fusce malesuada mollis purus consectetur auctor. Morbi tellus nunc, dapibus sit amet rutrum vel, laoreet quis mauris. Aenean nec sem nec purus bibendum venenatis. Mauris auctor commodo libero, in adipiscing dui adipiscing eu. Praesent eget orci ac nunc sodales varius.

    ','

    Nam eget venenatis lorem. Vestibulum a interdum sapien. Suspendisse potenti. Quisque auctor purus nec sapien venenatis vehicula malesuada velit vehicula. Fusce vel diam dolor, quis facilisis tortor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque libero nisi, pellentesque quis cursus sit amet, vehicula vitae nisl. Curabitur nec nunc ac sem tincidunt auctor. Phasellus in mattis magna. Donec consequat orci eget tortor ultricies rutrum. Mauris luctus vulputate molestie. Proin tincidunt vehicula euismod. Nam congue leo non erat cursus a adipiscing ipsum congue. Nulla iaculis purus sit amet turpis aliquam sit amet dapibus odio tincidunt. Ut augue diam, congue ut commodo pellentesque, fermentum mattis leo. Sed iaculis urna id enim dignissim sodales at a ipsum. Quisque varius lobortis mollis. Nunc purus magna, pellentesque pellentesque convallis sed, varius id ipsum. Etiam commodo mi mollis erat scelerisque fringilla. Nullam bibendum massa sagittis diam ornare rutrum.

    Praesent convallis metus ut elit faucibus tempus in quis dui. Donec fringilla imperdiet nibh, sit amet fringilla velit congue et. Quisque commodo luctus ligula, vitae porttitor eros venenatis in. Praesent aliquet commodo orci id varius. Nulla nulla nibh, varius id volutpat nec, sagittis nec eros. Cras et dui justo. Curabitur malesuada facilisis neque, sed tempus massa tincidunt ut. Sed suscipit odio in lacus auctor vehicula non ut lacus. In hac habitasse platea dictumst. Sed nulla nisi, lacinia in viverra at, blandit vel tellus. Nulla metus erat, ultrices non pretium vel, varius nec sem. Morbi sollicitudin mattis lacus quis pharetra. Donec tincidunt mollis pretium. Proin non libero justo, vitae mattis diam. Integer vel elit in enim varius posuere sed vitae magna. Duis blandit tempor elementum. Vestibulum molestie dui nisi.

    Curabitur volutpat interdum lorem sed tempus. Sed placerat quam non ligula lacinia sodales. Cras ultrices justo at nisi luctus hendrerit. Quisque sit amet placerat justo. In id sapien eu neque varius pharetra sed in sapien. Etiam nisl nunc, suscipit sed gravida sed, scelerisque ut nisl. Mauris quis massa nisl, aliquet posuere ligula. Etiam eget tortor mauris. Sed pellentesque vestibulum commodo. Mauris vitae est a libero dapibus dictum fringilla vitae magna.

    Nulla facilisi. Praesent eget elit et mauris gravida lobortis ac nec risus. Ut vulputate ullamcorper est, volutpat feugiat lacus convallis non. Maecenas quis sem odio, et aliquam libero. Integer vel tortor eget orci tincidunt pulvinar interdum at erat. Integer ullamcorper consequat eros a pellentesque. Cras sagittis interdum enim in malesuada. Etiam non nunc neque. Fusce non ligula at tellus porta venenatis. Praesent tortor orci, fermentum sed tincidunt vel, varius vel dui. Duis pulvinar luctus odio, eget porta justo vulputate ac. Nulla varius feugiat lorem sed tempor. Phasellus pulvinar dapibus magna eget egestas. In malesuada lectus at justo pellentesque vitae rhoncus nulla ultrices. Proin ut sem sem. Donec eu suscipit ipsum. Cras eu arcu porttitor massa feugiat aliquet at quis nisl.

    ',1,27,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,0,'',0,'*',''), (19,117,'Footer Module','footer-module','

    This module shows the Joomla! copyright information. Help

    {loadmodule footer,Footer}
    ','',1,66,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,3,'','',1,0,'',0,'*',''), (20,118,'Fruit Shop','fruit-shop','

    Welcome to the Fruit Shop

    We sell fruits from around the world. Please use our website to learn more about our business. We hope you will come to our shop and buy some fruit.

    This mini site will show you how you might want to set up a site for a business, in this example one selling fruit. It shows how to use access controls to manage your site content. If you were building a real site, you might want to extend it with e-commerce, a catalog, mailing lists or other enhancements, many of which are available through the Joomla! Extensions Directory.

    To understand this site you will probably want to make one user with group set to customer and one with group set to grower. By logging in with different privileges you can see how access control works.

    ','',1,29,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), -(21,119,'Getting Help','getting-help','

    There are lots of places you can get help with Joomla!. In many places in your site administrator you will see the help icon. Click on this for more information about the options and functions of items on your screen. Other places to get help are:

    ','',1,19,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,8,'','',1,0,'',0,'*',''), +(21,119,'Getting Help','getting-help','

    There are lots of places you can get help with Joomla!. In many places in your site administrator you will see the help icon. Click on this for more information about the options and functions of items on your screen. Other places to get help are:

    ','',1,19,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,8,'','',1,0,'',0,'*',''), (22,120,'Getting Started','getting-started','

    It''s easy to get started creating your website. Knowing some of the basics will help.

    What is a Content Management System?

    A content management system is software that allows you to create and manage webpages easily by separating the creation of your content from the mechanics required to present it on the web.

    In this site, the content is stored in a database. The look and feel are created by a template. The Joomla! software brings together the template and the content to create web pages.

    Site and Administrator

    Your site actually has two separate sites. The site (also called the front end) is what visitors to your site will see. The administrator (also called the back end) is only used by people managing your site. You can access the administrator by clicking the "Site Administrator" link on the "This Site" menu or by adding /administrator to the end of you domain name.

    Log in to the administrator using the username and password created during the installation of Joomla.

    Logging in

    To login to the front end of your site use the login form or the login menu link on the "This Site" menu. Use the user name and password that were created as part of the installation process. Once logged-in you will be able to create and edit articles.

    In managing your site, you will be able to create content that only logged-in users are able to see.

    Creating an article

    Once you are logged-in, a new menu will be visible. To create a new article, click on the "submit article" link on that menu.

    The new article interface gives you a lot of options, but all you need to do is add a title and put something in the content area. To make it easy to find, set the state to published and put it in the Joomla category.

    You can edit an existing article by clicking on the edit icon (this only displays to users who have the right to edit).

    Learn more

    There is much more to learn about how to use Joomla! to create the web site you envision. You can learn much more at the Joomla! documentation site and on the Joomla! forums.

    ','',1,19,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,9,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (23,121,'Happy Orange Orchard','happy-orange-orchard','

    At our orchard we grow the world''s best oranges as well as other citrus fruit such as lemons and grapefruit. Our family has been tending this orchard for generations.

    ','',1,30,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,2,'','',1,0,'',0,'*',''), -(24,122,'Joomla! Testing','joomla','

    Thanks for helping us to test Joomla!

    We''re getting ready for the release of Joomla and we appreciate you helping us find and fix problems as we work.

    If you haven''t done testing before here are some tips.

    • Don''t delete the installation folder when you finish installing! While we''re working we turn that security feature off to make it easier to test.
    • Go to global configuration and set Error Reporting to Development (that''s on the server tab) and enable both debugging and language debugging (those are on the system tab). Don''t worry when you see ** around words --that means Joomla translation is doing its job.

    How to test

    • First, do the things you normally do and see if you spot any problems.
    • Look at all of the front end views and record any problems
    • Look at all the back end views and report any problems
    • See more ideas below

    What to look for

    • Any error messages that say things like Fatal Error or Strict or similar things that indicate that something is not working correctly.
    • Untranslated strings. You will know these because they look like this: ?STRING_HERE?
    • Problems of rendering--items not aligned correctly, missing or wrong images, pages that just don''t look right.
    • Unexpected behavior anything that is working differently than it did in 2.5.

    Report problems

    If you find a problem please report it to the CMS Issue Tracker. You will need to register for a github.com account if you don''t have one.

    More Testing Ideas

    • Pick one module or view and test all of the parameters.
    • Install an extension and see if anything breaks (report to the developer unless you are positive it is a core bug).
    • Turn on caching with different options
    • Try different session options
    • Install a language and test all the layouts.
    • Try different environments (like different servers which may have different version of PHP) or try you have IIS with MySQLi or SqlSrv. With millions of users Joomla needs to be ready for unusual environments.
    • Try with SEF URLS on or off and also with Apache rewrite on or off (if you are on Apache).
    • Try different combinations of browsers (Chrome, IE, FireFox, Opera to start) and operating systems (Mac, Windows, Linux).
    • Yes grammar and spelling errors are bugs too -- just keep in mind that we use British spelling.
    • Visit the Feature Tracker and test a new feature.

    Testing changes

    You can also help Joomla by testing bug fixes and new features. A useful tool is the patchtester component which helps to simplify and automate the process. Report your feedback on theCMS Issue Tracker. If you enjoy helping Joomla this way, you may want to join the Joomla Bug Squad.

    ','',1,19,'2011-01-01 00:00:01',716,'Joomla','2013-10-15 14:57:20',716,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":""}',4,2,'','',1,73,'{"robots":"","author":"","rights":"","xreference":""}',1,'*',''), -(25,123,'Koala','koala','

    ','

    ',1,72,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_koala_ag1.jpg","float_intro":"","image_intro_alt":"Koala Thumbnail","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_koala_ag1.jpg","float_fulltext":"","image_fulltext_alt":"Koala Climbing Tree","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Koala-ag1.jpg Author: Arnaud Gaillard License: Creative Commons Share Alike Attribution Generic 1.0"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(24,122,'Joomla! Testing','joomla','

    Thanks for helping us to test Joomla!

    We''re getting ready for the release of Joomla and we appreciate you helping us find and fix problems as we work.

    If you haven''t done testing before here are some tips.

    • Don''t delete the installation folder when you finish installing! While we''re working we turn that security feature off to make it easier to test.
    • Go to global configuration and set Error Reporting to Development (that''s on the server tab) and enable both debugging and language debugging (those are on the system tab). Don''t worry when you see ** around words --that means Joomla translation is doing its job.

    How to test

    • First, do the things you normally do and see if you spot any problems.
    • Look at all of the front end views and record any problems
    • Look at all the back end views and report any problems
    • See more ideas below

    What to look for

    • Any error messages that say things like Fatal Error or Strict or similar things that indicate that something is not working correctly.
    • Untranslated strings. You will know these because they look like this: ?STRING_HERE?
    • Problems of rendering--items not aligned correctly, missing or wrong images, pages that just don''t look right.
    • Unexpected behavior anything that is working differently than it did in 2.5.

    Report problems

    If you find a problem please report it to the CMS Issue Tracker. You will need to register for a github.com account if you don''t have one.

    More Testing Ideas

    • Pick one module or view and test all of the parameters.
    • Install an extension and see if anything breaks (report to the developer unless you are positive it is a core bug).
    • Turn on caching with different options
    • Try different session options
    • Install a language and test all the layouts.
    • Try different environments (like different servers which may have different version of PHP) or try you have IIS with MySQLi or SqlSrv. With millions of users Joomla needs to be ready for unusual environments.
    • Try with SEF URLS on or off and also with Apache rewrite on or off (if you are on Apache).
    • Try different combinations of browsers (Chrome, IE, FireFox, Opera to start) and operating systems (Mac, Windows, Linux).
    • Yes grammar and spelling errors are bugs too -- just keep in mind that we use British spelling.
    • Visit the Feature Tracker and test a new feature.

    Testing changes

    You can also help Joomla by testing bug fixes and new features. A useful tool is the patchtester component which helps to simplify and automate the process. Report your feedback on theCMS Issue Tracker. If you enjoy helping Joomla this way, you may want to join the Joomla Bug Squad.

    ','',1,19,'2011-01-01 00:00:01',716,'Joomla','2013-10-15 14:57:20',716,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":""}',4,2,'','',1,73,'{"robots":"","author":"","rights":"","xreference":""}',1,'*',''), +(25,123,'Koala','koala','

    ','

    ',1,72,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_koala_ag1.jpg","float_intro":"","image_intro_alt":"Koala Thumbnail","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_koala_ag1.jpg","float_fulltext":"","image_fulltext_alt":"Koala Climbing Tree","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Koala-ag1.jpg Author: Arnaud Gaillard License: Creative Commons Share Alike Attribution Generic 1.0"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (26,124,'Language Switcher','language-switcher','

    The language switcher module allows you to take advantage of the language tags that are available when content, modules and menu links are created.

    This module displays a list of available Content Languages for switching between them.

    When switching languages, it redirects to the Home page, or associated menu item, defined for the chosen language. Thereafter, the navigation will be the one defined for that language.

    The language filter plugin must be enabled for this module to work properly.

    Help

    To view an example of the language switch moduler module, go to the site administrator and enable the language filter plugin and the language switcher module labelled "language switcher" and visit the fruit shop or park sample sites. Then follow the instructions in this tutorial.

    ','',1,67,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (27,125,'Latest Articles Module','latest-articles-module','

    This module shows a list of the most recently published and current Articles. Some that are shown may have expired even though they are the most recent. Help

    {loadmodule articles_latest,Latest News}
    ','',1,64,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'modules, content','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (28,126,'Login Module','login-module','

    This module displays a username and password login form. It also displays a link to retrieve a forgotten password. If user registration is enabled (in the Global Configuration settings), another link will be shown to enable self-registration for users. Help

    {loadmodule login,login}
    ','',1,65,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,2,'','',1,0,'',0,'*',''), @@ -316,8 +316,8 @@ INSERT INTO "#__content" VALUES (30,128,'Most Read Content','most-read-content','

    This module shows a list of the currently published Articles which have the highest number of page views. Help

    {loadmodule articles_popular,Articles Most Read}
    ','',1,64,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,2,'modules, content','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (31,129,'News Flash','news-flash','

    Displays a set number of articles from a category based on date or random selection. Help

    {loadmodule articles_news,News Flash}
    ','',1,64,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","page_title":"","alternative_readmore":"","layout":""}',1,3,'modules, content','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (32,130,'Options','options','

    As you make your Joomla! site you will control the details of the display using options also referred to as parameters. Options control everything from whether the author''s name is displayed to who can view what to the number of items shown on a list.

    Default options for each component are changed using the Options button on the component toolbar.

    Options can also be set on an individual item, such as an article or contact and in menu links.

    If you are happy with how your site looks, it is fine to leave all of the options set to the defaults that were created when your site was installed. As you become more experienced with Joomla you will use options more.

    ','',1,19,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,10,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), -(33,131,'Phyllopteryx','phyllopteryx','

    ','

    ',1,72,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/200px_phyllopteryx_taeniolatus1.jpg","float_intro":"","image_intro_alt":"Phyllopteryx","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_phyllopteryx_taeniolatus1.jpg","float_fulltext":"","image_fulltext_alt":"Phyllopteryx","image_fulltext_caption":"Source: http:\\/\\/en.wikipedia.org\\/wiki\\/File:Phyllopteryx_taeniolatus1.jpg Author: Richard Ling License: GNU Free Documentation License v 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), -(34,132,'Pinnacles','pinnacles','

    ','

    ',1,73,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_pinnacles_western_australia.jpg","float_intro":"","image_intro_alt":"Kings Canyon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_pinnacles_western_australia.jpg","float_fulltext":"","image_fulltext_alt":"Kings Canyon","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Pinnacles_Western_Australia.jpg Author: Martin Gloss License: GNU Free Documentation license v 1.2 or later."}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(33,131,'Phyllopteryx','phyllopteryx','

    ','

    ',1,72,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/200px_phyllopteryx_taeniolatus1.jpg","float_intro":"","image_intro_alt":"Phyllopteryx","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_phyllopteryx_taeniolatus1.jpg","float_fulltext":"","image_fulltext_alt":"Phyllopteryx","image_fulltext_caption":"Source: https:\\/\\/en.wikipedia.org\\/wiki\\/File:Phyllopteryx_taeniolatus1.jpg Author: Richard Ling License: GNU Free Documentation License v 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(34,132,'Pinnacles','pinnacles','

    ','

    ',1,73,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_pinnacles_western_australia.jpg","float_intro":"","image_intro_alt":"Kings Canyon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_pinnacles_western_australia.jpg","float_fulltext":"","image_fulltext_alt":"Kings Canyon","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Pinnacles_Western_Australia.jpg Author: Martin Gloss License: GNU Free Documentation license v 1.2 or later."}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (35,133,'Professionals','professionals','

    Joomla! 2.5 continues development of the Joomla Framework and CMS as a powerful and flexible way to bring your vision of the web to reality. With the administrator now fully MVC, the ability to control its look and the management of extensions is now complete.

    ','

    Working with multiple template styles and overrides for the same views, creating the design you want is easier than it has ever been. Limiting support to PHP 5.2.4 and above makes Joomla lighter and faster than ever. Languages files can now be overridden without having your changes lost during an upgrade. With the proper xml your users update extensions with a single click.

    Access control lists are now incorporated using a new system developed for Joomla. The ACL system is designed with developers in mind, so it is easy to incorporate into your extensions. The new nested sets libraries allow you to incorporate infinitely deep categories but also to use nested sets in a variety of other ways.

    A new forms library makes creating all kinds of user interaction simple. MooTools 1.3 provides a highly flexible javascript framework that is a major advance over MooTools 1.0.

    New events throughout the core make integration of your plugins where you want them a snap.

    The separation of the Joomla! Platform project from the Joomla! CMS project makes continuous development of new, powerful APIs and continuous improvement of existing APIs possible while maintaining the stability of the CMS that millions of webmasters and professionals rely upon.

    Learn about:

    ',1,19,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-09 16:41:13','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,5,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',1,'*',''), (36,134,'Random Image Module','random-image-module','

    This module displays a random image from your chosen image directory. Help

    {loadmodule random_image,Random Image}
    ','',1,66,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (37,135,'Related Items Module','related-items-module','

    This module displays other Articles that are related to the one currently being viewed. These relations are established by the Meta Keywords. All the keywords of the current Article are searched against all the keywords of all other published articles. Help

    {loadmodule related_items,Articles Related Items}
    ','',1,64,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'modules, content','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), @@ -326,11 +326,11 @@ INSERT INTO "#__content" VALUES (40,138,'Search Module','search-module','

    This module will display a search box. Help

    {loadmodule search,Search}
    ','',1,67,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,4,'','',1,0,'',0,'*',''), (41,139,'Search ','search-plugin','

    The search component uses plugins to control which parts of your Joomla! site are searched. You may choose to turn off some areas to improve performance or for other reasons. Many third party Joomla! extensions have search plugins that extend where search takes place.

    Default On:

    ','',1,25,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,0,'',0,'*',''), (42,140,'Site Map','site-map','

    {loadposition sitemapload}

    By putting all of your content into nested categories you can give users and search engines access to everything using a menu.

    ','',1,14,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,0,'',0,'*',''), -(43,141,'Spotted Quoll','spotted-quoll','

    ','

    ',1,72,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/220px_spottedquoll_2005_seanmcclean.jpg","float_intro":"","image_intro_alt":"Spotted Quoll","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/789px_spottedquoll_2005_seanmcclean.jpg","float_fulltext":"","image_fulltext_alt":"Spotted Quoll","image_fulltext_caption":"Source: http:\\/\\/en.wikipedia.org\\/wiki\\/File:SpottedQuoll_2005_SeanMcClean.jpg Author: Sean McClean License: GNU Free Documentation License v 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(43,141,'Spotted Quoll','spotted-quoll','

    ','

    ',1,72,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/220px_spottedquoll_2005_seanmcclean.jpg","float_intro":"","image_intro_alt":"Spotted Quoll","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/789px_spottedquoll_2005_seanmcclean.jpg","float_fulltext":"","image_fulltext_alt":"Spotted Quoll","image_fulltext_caption":"Source: https:\\/\\/en.wikipedia.org\\/wiki\\/File:SpottedQuoll_2005_SeanMcClean.jpg Author: Sean McClean License: GNU Free Documentation License v 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (44,142,'Statistics Module','statistics','

    This module shows information about your server installation together with statistics on the Web site users, number of Articles in your database and the number of Web links you provide.

    {loadmodule mod_stats,Statistics}
    ','',1,67,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,5,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (45,143,'Syndicate Module','syndicate-module','

    The syndicate module will display a link that allows users to take a feed from your site. It will only display on pages for which feeds are possible. That means it will not display on single article, or contact pages, such as this one. Help

    {loadposition syndicate,Syndicate}
    ','',1,67,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,6,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (46,144,'System','system','

    System plugins operate every time a page on your site loads. They control such things as your URLS, whether users can check a "remember me" box on the login module, and whether caching is enabled. New is the redirect plugin that together with the redirect component will assist you in managing changes in URLs.

    Default on:

    Default off:

    ','',1,25,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), -(47,145,'The Joomla! Community','the-joomla-community','

    Joomla means All Together, and it is a community of people all working and having fun together that makes Joomla possible. Thousands of people each year participate in the Joomla community, and we hope you will be one of them.

    People with all kinds of skills, of all skill levels and from around the world are welcome to join in. Participate in the Joomla.org family of websites (the forum is a great place to start). Come to a Joomla! event. Join or start a Joomla! Users Group. Whether you are a developer, site administrator, designer, end user or fan, there are ways for you to participate and contribute.

    ','',1,19,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(47,145,'The Joomla! Community','the-joomla-community','

    Joomla means All Together, and it is a community of people all working and having fun together that makes Joomla possible. Thousands of people each year participate in the Joomla community, and we hope you will be one of them.

    People with all kinds of skills, of all skill levels and from around the world are welcome to join in. Participate in the Joomla.org family of websites (the forum is a great place to start). Come to a Joomla! event. Join or start a Joomla! Users Group. Whether you are a developer, site administrator, designer, end user or fan, there are ways for you to participate and contribute.

    ','',1,19,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (48,146,'The Joomla! Project','the-joomla-project','

    The Joomla Project consists of all of the people who make and support the Joomla Web Platform and Content Management System.

    Our mission is to provide a flexible platform for digital publishing and collaboration.

    The core values are:

    • Freedom
    • Equality
    • Trust
    • Community
    • Collaboration
    • Usability

    In our vision, we see:

    • People publishing and collaborating in their communities and around the world
    • Software that is free, secure, and high-quality
    • A community that is enjoyable and rewarding to participate in
    • People around the world using their preferred languages
    • A project that acts autonomously
    • A project that is socially responsible
    • A project dedicated to maintaining the trust of its users

    There are millions of users around the world and thousands of people who contribute to the Joomla Project. They work in three main groups: the Production Working Group, responsible for everything that goes into software and documentation; the Community Working Group, responsible for creating a nurturing the community; and Open Source Matters, the non profit organization responsible for managing legal, financial and organizational issues.

    Joomla is a free and open source project, which uses the GNU General Public License version 2 or later.

    ','',1,19,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (49,147,'Typography','typography','

    H1 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H2 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H3 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H4 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    H5 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz
    H6 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmonpqrstuvwzyz

    P The quick brown fox ran over the lazy dog. THE QUICK BROWN FOX RAN OVER THE LAZY DOG.

    • Item
    • Item
    • Item
      • Item
      • Item
      • Item
        • Item
        • Item
        • Item
    1. tem
    2. Item
    3. Item
      1. Item
      2. Item
      3. Item
        1. Item
        2. Item
        3. Item
    ','',1,23,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,0,'',0,'*',''), (50,148,'Upgraders','upgraders','

    If you are an experienced Joomla! 1.5 user, this Joomla site will seem very familiar. There are new templates and improved user interfaces, but most functionality is the same. The biggest changes are improved access control (ACL) and nested categories. This release of Joomla has strong continuity with Joomla! 1.7 while adding enhancements.

    ','

    The new user manager will let you manage who has access to what in your site. You can leave access groups exactly the way you had them in Joomla 1.5 or make them as complicated as you want. You can learn more about how access control works in on the Joomla! Documentation site

    In Joomla 1.5 and 1.0 content was organized into sections and categories. From 1.6 forward sections are gone, and you can create categories within categories, going as deep as you want. The sample data provides many examples of the use of nested categories.

    All layouts have been redesigned to improve accessibility and flexibility.

    Updating your site and extensions when needed is easier than ever thanks to installer improvements.

    ',1,19,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,6,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',1,'*',''), @@ -338,14 +338,14 @@ INSERT INTO "#__content" VALUES (52,150,'Users','users-component','

    The users extension lets your site visitors register, login and logout, change their passwords and other information, and recover lost passwords. In the administrator it allows you to create, block and manage users and create user groups and access levels. Help

    Please note that some of the user views will not display if you are not logged-in to the site.

    ','',1,21,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}',1,5,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (53,151,'Using Joomla!','using-joomla','

    With Joomla you can create anything from a simple personal website to a complex ecommerce or social site with millions of visitors.

    This section of the sample data provides you with a brief introduction to Joomla concepts and reference material to help you understand how Joomla works.

    When you no longer need the sample data, you can can simply unpublish the sample data category found within each extension in the site administrator or you may completely delete each item and all of the categories.

    ','',1,19,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,7,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (56,154,'Who''s Online','whos-online','

    The Who''s Online Module displays the number of Anonymous Users (e.g. Guests) and Registered Users (ones logged-in) that are currently accessing the Web site. Help

    {loadmodule whosonline,Who''s Online}
    ','',1,65,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,0,'',0,'*',''), -(57,155,'Wobbegone','wobbegone','

    ','

    ',1,72,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_wobbegong.jpg","float_intro":"","image_intro_alt":"Wobbegon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_wobbegong.jpg","float_fulltext":"","image_fulltext_alt":"Wobbegon","image_fulltext_caption":"Source: http:\\/\\/en.wikipedia.org\\/wiki\\/File:Wobbegong.jpg Author: Richard Ling Rights: GNU Free Documentation License v 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(57,155,'Wobbegone','wobbegone','

    ','

    ',1,72,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/animals\\/180px_wobbegong.jpg","float_intro":"","image_intro_alt":"Wobbegon","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/animals\\/800px_wobbegong.jpg","float_fulltext":"","image_fulltext_alt":"Wobbegon","image_fulltext_caption":"Source: https:\\/\\/en.wikipedia.org\\/wiki\\/File:Wobbegong.jpg Author: Richard Ling Rights: GNU Free Documentation License v 1.2 or later"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (58,156,'Wonderful Watermelon','wonderful-watermelon','

    Watermelon is a wonderful and healthy treat. We grow the world''s sweetest watermelon. We have the largest watermelon patch in our country.

    ','',1,30,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,0,'',0,'*',''), (59,157,'Wrapper Module','wrapper-module','

    This module shows an iFrame window to specified location. Help

    {loadmodule wrapper,Wrapper}
    ','',1,67,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,1,'','',1,0,'',0,'*',''), (60,158,'News Feeds','news-feeds','

    News Feeds (com_newsfeeds) provides a way to organize and present news feeds. News feeds are a way that you present information from another site on your site. For example, the joomla.org website has numerous feeds that you can incorporate on your site. You an use menus to present a single feed, a list of feeds in a category, or a list of all feed categories. Help

    ','',1,21,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,4,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (61,159,'Breadcrumbs Module','breadcrumbs-module','

    Breadcrumbs provide a pathway for users to navigate through the site. Help

    {loadmodule breadcrumbs,breadcrumbs}
    ','',1,75,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (62,160,'Content','content-plugins','

    Content plugins run when specific kinds of pages are loaded. They do things ranging from protecting email addresses from harvesters to creating page breaks.

    Default on:

    ','',1,25,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,7,'','',1,0,'',0,'*',''), -(64,162,'Blue Mountain Rain Forest','blue-mountain-rain-forest','

    ','

    ',1,73,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_rainforest_bluemountainsnsw.jpg","float_intro":"none","image_intro_alt":"Rain Forest Blue Mountains","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/727px_rainforest_bluemountainsnsw.jpg","float_fulltext":"","image_fulltext_alt":"Rain Forest Blue Mountains","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Adam J.W.C. License: GNU Free Documentation License"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), -(65,163,'Ormiston Pound','ormiston-pound','

    ','

    ',1,73,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/180px_ormiston_pound.jpg","float_intro":"none","image_intro_alt":"Ormiston Pound","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_ormiston_pound.jpg","float_fulltext":"","image_fulltext_alt":"Ormiston Pound","image_fulltext_caption":"Source: http:\\/\\/commons.wikimedia.org\\/wiki\\/File:Ormiston_Pound.JPG Author: License: GNU Free Public Documentation License"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(64,162,'Blue Mountain Rain Forest','blue-mountain-rain-forest','

    ','

    ',1,73,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/120px_rainforest_bluemountainsnsw.jpg","float_intro":"none","image_intro_alt":"Rain Forest Blue Mountains","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/727px_rainforest_bluemountainsnsw.jpg","float_fulltext":"","image_fulltext_alt":"Rain Forest Blue Mountains","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Rainforest,bluemountainsNSW.jpg Author: Adam J.W.C. License: GNU Free Documentation License"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,2,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), +(65,163,'Ormiston Pound','ormiston-pound','

    ','

    ',1,73,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','{"image_intro":"images\\/sampledata\\/parks\\/landscape\\/180px_ormiston_pound.jpg","float_intro":"none","image_intro_alt":"Ormiston Pound","image_intro_caption":"","image_fulltext":"images\\/sampledata\\/parks\\/landscape\\/800px_ormiston_pound.jpg","float_fulltext":"","image_fulltext_alt":"Ormiston Pound","image_fulltext_caption":"Source: https:\\/\\/commons.wikimedia.org\\/wiki\\/File:Ormiston_Pound.JPG Author: License: GNU Free Public Documentation License"}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,3,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (66,165,'Latest Users Module','latest-users-module','

    This module displays the latest registered users. Help

    {loadmodule users_latest,Users Latest}
    ','',1,65,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"1","link_titles":"","show_intro":"","show_category":"1","link_category":"1","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,3,'','',1,0,'',0,'*',''), (67,168,'What''s New in 1.5?','whats-new-in-15','

    This article deliberately archived as an example.

    As with previous releases, Joomla! provides a unified and easy-to-use framework for delivering content for Web sites of all kinds. To support the changing nature of the Internet and emerging Web technologies, Joomla! required substantial restructuring of its core functionality and we also used this effort to simplify many challenges within the current user interface. Joomla! 1.5 has many new features.

    In Joomla! 1.5, you''''ll notice:

    • Substantially improved usability, manageability, and scalability far beyond the original Mambo foundations
    • Expanded accessibility to support internationalisation, double-byte characters and right-to-left support for Arabic, Farsi, and Hebrew languages among others
    • Extended integration of external applications through Web services
    • Enhanced content delivery, template and presentation capabilities to support accessibility standards and content delivery to any destination
    • A more sustainable and flexible framework for Component and Extension developers
    • Backward compatibility with previous releases of Components, Templates, Modules, and other Extensions
    ','',2,9,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2011-01-01 00:00:01','1970-01-01 00:00:00','','','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}',1,0,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), (68,170,'Captcha','captcha','

    The Captcha plugins are used to prevent spam submissions on your forms such as registration, contact and login. You basic installation of Joomla includes one Captcha plugin which leverages the ReCaptcha® service but you may install other plugins connecting to different Captcha systems.

    Default on:

    Note: ReCaptcha is a the trademark of Google Inc. and is an independent product not associated with or endorsed by the Joomla Project. You will need to register and agree to the Terms of Service at Recaptcha.net to use this plugin. Complete instructions are available if you edit the ReCaptcha plugin in the Plugin Manager.

    ','',1,25,'2011-01-01 00:00:01',42,'Joomla','1970-01-01 00:00:00',0,0,'1970-01-01 00:00:00','2012-01-17 03:20:45','1970-01-01 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}',1,1,'','',1,0,'{"robots":"","author":"","rights":"","xreference":""}',0,'*',''), @@ -398,7 +398,7 @@ INSERT INTO "#__menu" VALUES (21,'menu','com_finder','Smart Search','','Smart Search','index.php?option=com_finder','component',0,1,1,27,0,'1970-01-01 00:00:00',0,0,'class:finder',0,'',33,34,0,'*',1), (22,'menu','com_joomlaupdate','Joomla! Update','','Joomla! Update','index.php?option=com_joomlaupdate','component',0,1,1,28,0,'1970-01-01 00:00:00',0,0,'class:joomlaupdate',0,'',33,34,0,'*',1), (201,'usermenu','Your Profile','your-profile','','your-profile','index.php?option=com_users&view=profile','component',1,1,1,25,0,'1970-01-01 00:00:00',0,2,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}',95,96,0,'*',0), -(207,'top','Joomla.org','joomlaorg','','joomlaorg','http://joomla.org','url',1,1,1,0,0,'1970-01-01 00:00:00',0,1,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}',93,94,0,'*',0), +(207,'top','Joomla.org','joomlaorg','','joomlaorg','https://www.joomla.org/','url',1,1,1,0,0,'1970-01-01 00:00:00',0,1,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}',93,94,0,'*',0), (229,'frontendviews','Single Contact','single-contact','','single-contact','index.php?option=com_contact&view=contact&id=1','component',1,1,1,8,0,'1970-01-01 00:00:00',0,1,'',0,'{"show_category_crumb":"","presentation_style":"","show_contact_category":"","show_contact_list":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_links":"","linka_name":"","linkb_name":"","linkc_name":"","linkd_name":"","linke_name":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}',161,162,0,'*',0), (233,'mainmenu','Login','login','','login','index.php?option=com_users&view=login','component',1,1,1,25,0,'1970-01-01 00:00:00',0,1,'',0,'{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}',3,4,0,'*',0), (234,'parks','Park Blog','park-blog','','park-blog','index.php?option=com_content&view=category&layout=blog&id=27','component',1,1,1,22,0,'1970-01-01 00:00:00',0,1,'',114,'{"maxLevel":"","show_empty_categories":"","show_description":"1","show_description_image":"1","show_category_title":"","show_cat_num_articles":"","num_leading_articles":"1","num_intro_articles":"4","num_columns":"1","num_links":"4","multi_column_order":"","orderby_pri":"","orderby_sec":"","order_date":"","show_pagination":"2","show_noauth":"","show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_readmore":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_hits":"","show_feed_link":"1","feed_summary":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}',99,100,0,'en-GB',0), @@ -561,7 +561,7 @@ INSERT INTO "#__modules" VALUES (37,0,'Syndicate Feeds','','',1,'syndicateload',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_syndicate',1,1,'{"text":"Feed Entries","format":"rss","layout":"","moduleclass_sfx":"","cache":"0"}',0,'*'), (38,0,'Users Latest','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_users_latest',1,1,'{"shownumber":"5","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"static"}',0,'*'), (39,0,'Who''s Online','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_whosonline',1,1,'{"showmode":"2","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}',0,'*'), -(40,0,'Wrapper','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_wrapper',1,1,'{"url":"http:\\/\\/www.youtube.com\\/embed\\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), +(40,0,'Wrapper','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_wrapper',1,1,'{"url":"https:\\/\\/www.youtube.com\\/embed\\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), (41,0,'Footer','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_footer',1,1,'{"layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), (44,0,'Login','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_login',1,1,'{"pretext":"","posttext":"","login":"280","logout":"280","greeting":"1","name":"0","usesecure":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}',0,'*'), (45,0,'Menu Example','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_menu',1,1,'{"menutype":"mainmenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}',0,'*'), @@ -824,7 +824,7 @@ INSERT INTO "#__ucm_base" VALUES -- Dumping data for table #__ucm_content -- INSERT INTO "#__ucm_content" VALUES -(1,'com_content.article','Joomla! Testing','joomla','

    Thanks for helping us to test Joomla!

    We''re getting ready for the release of Joomla and we appreciate you helping us find and fix problems as we work.

    If you haven''t done testing before here are some tips.

    • Don''t delete the installation folder when you finish installing! While we''re working we turn that security feature off to make it easier to test.
    • Go to global configuration and set Error Reporting to Development (that''s on the server tab) and enable both debugging and language debugging (those are on the system tab). Don''t worry when you see ** around words --that means Joomla translation is doing its job.

    How to test

    • First, do the things you normally do and see if you spot any problems.
    • Look at all of the front end views and record any problems
    • Look at all the back end views and report any problems
    • See more ideas below

    What to look for

    • Any error messages that say things like Fatal Error or Strict or similar things that indicate that something is not working correctly.
    • Untranslated strings. You will know these because they look like this: ?STRING_HERE?
    • Problems of rendering--items not aligned correctly, missing or wrong images, pages that just don''t look right.
    • Unexpected behavior--anything that is working differently than it did in 2.5.

    Report problems

    If you find a problem please report it to the CMS Issue Tracker. You will need to register for a github.com account if you don''t have one.

    More Testing Ideas

    • Pick one module or view and test all of the parameters.
    • Install an extension and see if anything breaks (report to the developer unless you are positive it is a core bug).
    • Turn on caching with different options
    • Try different session options
    • Install a language and test all the layouts.
    • Try different environments (like different servers which may have different version of PHP) or try you have IIS with MySQLi or SqlSrv. With millions of users Joomla needs to be ready for unusual environments.
    • Try with SEF URLS on or off and also with Apache rewrite on or off (if you are on Apache).
    • Try different combinations of browsers (Chrome, IE, FireFox, Opera to start) and operating systems (Mac, Windows, Linux).
    • Yes grammar and spelling errors are bugs too -- just keep in mind that we use British spelling.
    • Visit the Feature Tracker and test a new feature.

    Testing changes

    You can also help Joomla by testing bug fixes and new features. A useful tool is the patchtester component which helps to simplify and automate the process. Report your feedback on theCMS Issue Tracker. If you enjoy helping Joomla this way, you may want to join the Joomla Bug Squad.

    ',1,'1970-01-01 00:00:00',0,1,'{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":""}',1,'{"robots":"","author":"","rights":"","xreference":""}',716,'','2011-01-01 00:00:01',0,'2013-10-15 14:57:20','*','2011-01-01 00:00:01','1970-01-01 00:00:00',24,180,'{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}',59,3,2,'','',19,'',1), +(1,'com_content.article','Joomla! Testing','joomla','

    Thanks for helping us to test Joomla!

    We''re getting ready for the release of Joomla and we appreciate you helping us find and fix problems as we work.

    If you haven''t done testing before here are some tips.

    • Don''t delete the installation folder when you finish installing! While we''re working we turn that security feature off to make it easier to test.
    • Go to global configuration and set Error Reporting to Development (that''s on the server tab) and enable both debugging and language debugging (those are on the system tab). Don''t worry when you see ** around words --that means Joomla translation is doing its job.

    How to test

    • First, do the things you normally do and see if you spot any problems.
    • Look at all of the front end views and record any problems
    • Look at all the back end views and report any problems
    • See more ideas below

    What to look for

    • Any error messages that say things like Fatal Error or Strict or similar things that indicate that something is not working correctly.
    • Untranslated strings. You will know these because they look like this: ?STRING_HERE?
    • Problems of rendering--items not aligned correctly, missing or wrong images, pages that just don''t look right.
    • Unexpected behavior--anything that is working differently than it did in 2.5.

    Report problems

    If you find a problem please report it to the CMS Issue Tracker. You will need to register for a github.com account if you don''t have one.

    More Testing Ideas

    • Pick one module or view and test all of the parameters.
    • Install an extension and see if anything breaks (report to the developer unless you are positive it is a core bug).
    • Turn on caching with different options
    • Try different session options
    • Install a language and test all the layouts.
    • Try different environments (like different servers which may have different version of PHP) or try you have IIS with MySQLi or SqlSrv. With millions of users Joomla needs to be ready for unusual environments.
    • Try with SEF URLS on or off and also with Apache rewrite on or off (if you are on Apache).
    • Try different combinations of browsers (Chrome, IE, FireFox, Opera to start) and operating systems (Mac, Windows, Linux).
    • Yes grammar and spelling errors are bugs too -- just keep in mind that we use British spelling.
    • Visit the Feature Tracker and test a new feature.

    Testing changes

    You can also help Joomla by testing bug fixes and new features. A useful tool is the patchtester component which helps to simplify and automate the process. Report your feedback on theCMS Issue Tracker. If you enjoy helping Joomla this way, you may want to join the Joomla Bug Squad.

    ',1,'1970-01-01 00:00:00',0,1,'{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":""}',1,'{"robots":"","author":"","rights":"","xreference":""}',716,'','2011-01-01 00:00:01',0,'2013-10-15 14:57:20','*','2011-01-01 00:00:01','1970-01-01 00:00:00',24,180,'{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}',59,3,2,'','',19,'',1), (2,'com_content.article','Similar Tags','archive-module-3','

    This module shows a list of items that have a similar list of tags to the current item.

    {loadmodule tags_similar,Similar Tags}
    ',1,'1970-01-01 00:00:00',0,1,'{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":""}',0,'{"robots":"","author":"","rights":"","xreference":""}',716,'','2011-01-01 00:00:01',0,'2013-10-15 14:58:27','*','2011-01-01 00:00:01','1970-01-01 00:00:00',72,182,'{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}',1,3,0,'modules, content','',64,'',1); SELECT setval('#__ucm_content_core_content_id_seq', max(core_content_id)) FROM #__ucm_content; diff --git a/installation/sql/sqlazure/sample_brochure.sql b/installation/sql/sqlazure/sample_brochure.sql index f0548228c652a..b9683b2dd1368 100644 --- a/installation/sql/sqlazure/sample_brochure.sql +++ b/installation/sql/sqlazure/sample_brochure.sql @@ -64,7 +64,7 @@ SET IDENTITY_INSERT [#__categories] OFF; SET IDENTITY_INSERT [#__contact_details] ON; INSERT INTO [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES -(1, 'Contact Name Here', 'name', 'Position', 'Street Address', 'Suburb', 'State', 'Country', 'Zip Code', 'Telephone', 'Fax', '

    Information about or by the contact.

    ', 'images/powered_by.png', 'email@example.com', 1, 1, 0, '1900-01-01T00:00:00.000', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"http://twitter.com/joomla","linkb_name":"YouTube","linkb":"http://www.youtube.com/user/joomla","linkc_name":"Facebook","linkc":"http://www.facebook.com/joomla","linkd_name":"FriendFeed","linkd":"http://friendfeed.com/joomla","linke_name":"Scribd","linke":"http://www.scribd.com/people/view/504592-joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 16, 1, '', '', 'last', 'first', 'middle', 'en-GB', '2011-01-01 00:00:01', 42, 'Joomla', '1900-01-01T00:00:00.000', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', 1, 0); +(1, 'Contact Name Here', 'name', 'Position', 'Street Address', 'Suburb', 'State', 'Country', 'Zip Code', 'Telephone', 'Fax', '

    Information about or by the contact.

    ', 'images/powered_by.png', 'email@example.com', 1, 1, 0, '1900-01-01T00:00:00.000', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"https://twitter.com/joomla","linkb_name":"YouTube","linkb":"https://www.youtube.com/user/joomla","linkc_name":"Facebook","linkc":"https://www.facebook.com/joomla","linkd_name":"FriendFeed","linkd":"http://friendfeed.com/joomla","linke_name":"Scribd","linke":"https://www.scribd.com/user/504592/Joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 16, 1, '', '', 'last', 'first', 'middle', 'en-GB', '2011-01-01 00:00:01', 42, 'Joomla', '1900-01-01T00:00:00.000', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', 1, 0); SET IDENTITY_INSERT [#__contact_details] OFF; diff --git a/installation/sql/sqlazure/sample_data.sql b/installation/sql/sqlazure/sample_data.sql index 220fd5468cfca..e73076f4124aa 100644 --- a/installation/sql/sqlazure/sample_data.sql +++ b/installation/sql/sqlazure/sample_data.sql @@ -93,7 +93,7 @@ INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [t INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (23, 'menu', 'com_tags', 'com-tags', '', 'com-tags', 'index.php?option=com_tags', 'component', 0, 1, 1, 29, 0, '1900-01-01 00:00:00', 0, 1, 'class:tags', 0, '', 221, 222, 0, '*', 1); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (24, 'main', 'com_postinstall', 'Post-installation messages', '', 'Post-installation messages', 'index.php?option=com_postinstall', 'component', 0, 1, 1, 32, 0, '1900-01-01 00:00:00', 0, 1, 'class:postinstall', 0, '', 223, 224, 0, '*', 1); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (201, 'usermenu', 'Your Profile', 'your-profile', '', 'your-profile', 'index.php?option=com_users&view=profile', 'component', 1, 1, 1, 25, 0, '1900-01-01 00:00:00', 0, 2, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 213, 214, 0, '*', 0); -INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (207, 'top', 'Joomla.org', 'joomlaorg', '', 'joomlaorg', 'http://joomla.org', 'url', 1, 1, 1, 0, 0, '1900-01-01 00:00:00', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}', 211, 212, 0, '*', 0); +INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (207, 'top', 'Joomla.org', 'joomlaorg', '', 'joomlaorg', 'https://www.joomla.org/', 'url', 1, 1, 1, 0, 0, '1900-01-01 00:00:00', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}', 211, 212, 0, '*', 0); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (435, 'mainmenu', 'Home', 'homepage', '', 'homepage', 'index.php?option=com_content&view=article&id=1', 'component', 1, 1, 1, 22, 0, '1900-01-01 00:00:00', 0, 1, '', 0, '{"show_title":"1","link_titles":"","show_intro":"","info_block_position":"0","show_category":"0","link_category":"0","show_parent_category":"0","link_parent_category":"0","show_author":"0","link_author":"0","show_create_date":"0","show_modify_date":"0","show_publish_date":"0","show_item_navigation":"0","show_vote":"","show_icons":"0","show_print_icon":"0","show_email_icon":"0","show_hits":"0","show_noauth":"","urls_position":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 1, 2, 1, '*', 0); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (448, 'usermenu', 'Site Administrator', 'site-administrator', '', 'site-administrator', 'administrator', 'url', 1, 1, 1, 0, 0, '1900-01-01 00:00:00', 1, 6, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1}', 219, 220, 0, '*', 0); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (449, 'usermenu', 'Submit an Article', 'submit-an-article', '', 'submit-an-article', 'index.php?option=com_content&view=form&layout=edit', 'component', 1, 1, 1, 22, 0, '1900-01-01 00:00:00', 0, 3, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 215, 216, 0, '*', 0); @@ -138,7 +138,7 @@ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (37, 'Syndicate Feeds', '', '', 1, 'syndicateload', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_syndicate', 1, 1, '{"text":"Feed Entries","format":"rss","layout":"","moduleclass_sfx":"","cache":"0"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (38, 'Users Latest', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_users_latest', 1, 1, '{"shownumber":"5","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"static"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (39, 'Who''s Online', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_whosonline', 1, 1, '{"showmode":"2","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 0, '*'); -INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (40, 'Wrapper', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_wrapper', 1, 1, '{"url":"http:\/\/www.youtube.com\/embed\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); +INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (40, 'Wrapper', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_wrapper', 1, 1, '{"url":"https:\/\/www.youtube.com\/embed\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (41, 'Footer', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_footer', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (48, 'Image Module', '', '

    Blue Flower

    ', 1, 'position-3', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_custom', 1, 0, '{"prepare_content":"1","backgroundimage":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (52, 'Breadcrumbs', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'); diff --git a/installation/sql/sqlazure/sample_learn.sql b/installation/sql/sqlazure/sample_learn.sql index f543a9c2f12b3..f250f177735d8 100644 --- a/installation/sql/sqlazure/sample_learn.sql +++ b/installation/sql/sqlazure/sample_learn.sql @@ -183,9 +183,9 @@ SET IDENTITY_INSERT [#__banner_clients] OFF; SET IDENTITY_INSERT [#__banners] ON; -INSERT [#__banners] ([id], [cid], [type], [name], [alias], [imptotal], [impmade], [clicks], [clickurl], [state], [catid], [description], [custombannercode], [sticky], [ordering], [metakey], [params], [own_prefix], [metakey_prefix], [purchase_type], [track_clicks], [track_impressions], [checked_out], [checked_out_time], [publish_up], [publish_down], [reset], [created], [language], [created_by], [created_by_alias], [modified], [modified_by], [version]) VALUES (2, 3, 0, 'Shop 1', 'shop-1', 0, 0, 0, 'http://shop.joomla.org/amazoncom-bookstores.html', 1, 15, 'Get books about Joomla! at the Joomla! Book Shop.', '', 0, 1, '', '{"imageurl":"images\/banners\/white.png","width":"","height":"","alt":"Joomla! Books"}', 0, '', -1, 0, 0, 0, '1900-01-01 00:00:01', '1900-01-01 00:00:01', '1900-01-01 00:00:01', '1900-01-01 00:00:01', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '1900-01-01 00:00:01', 0, 1); -INSERT [#__banners] ([id], [cid], [type], [name], [alias], [imptotal], [impmade], [clicks], [clickurl], [state], [catid], [description], [custombannercode], [sticky], [ordering], [metakey], [params], [own_prefix], [metakey_prefix], [purchase_type], [track_clicks], [track_impressions], [checked_out], [checked_out_time], [publish_up], [publish_down], [reset], [created], [language], [created_by], [created_by_alias], [modified], [modified_by], [version]) VALUES (3, 2, 0, 'Shop 2', 'shop-2', 0, 0, 0, 'http://shop.joomla.org', 1, 15, 'T Shirts, caps and more from the Joomla! Shop.', '', 0, 2, '', '{"imageurl":"images\/banners\/white.png","width":"","height":"","alt":"Joomla! Shop"}', 0, '', -1, 0, 0, 0, '1900-01-01 00:00:01', '1900-01-01 00:00:01', '1900-01-01 00:00:01', '1900-01-01 00:00:01', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '1900-01-01 00:00:01', 0, 1); -INSERT [#__banners] ([id], [cid], [type], [name], [alias], [imptotal], [impmade], [clicks], [clickurl], [state], [catid], [description], [custombannercode], [sticky], [ordering], [metakey], [params], [own_prefix], [metakey_prefix], [purchase_type], [track_clicks], [track_impressions], [checked_out], [checked_out_time], [publish_up], [publish_down], [reset], [created], [language], [created_by], [created_by_alias], [modified], [modified_by], [version]) VALUES (4, 1, 0, 'Support Joomla!', 'support-joomla', 0, 0, 0, 'http://contribute.joomla.org', 1, 15, 'Your contributions of time, talent and money make Joomla possible.', '', 0, 3, '', '{"imageurl":"images\/banners\/white.png","width":"","height":"","alt":""}', 0, '', -1, 0, 0, 0, '1900-01-01 00:00:01', '1900-01-01 00:00:01', '1900-01-01 00:00:01', '1900-01-01 00:00:01', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '1900-01-01 00:00:01', 0, 1); +INSERT [#__banners] ([id], [cid], [type], [name], [alias], [imptotal], [impmade], [clicks], [clickurl], [state], [catid], [description], [custombannercode], [sticky], [ordering], [metakey], [params], [own_prefix], [metakey_prefix], [purchase_type], [track_clicks], [track_impressions], [checked_out], [checked_out_time], [publish_up], [publish_down], [reset], [created], [language], [created_by], [created_by_alias], [modified], [modified_by], [version]) VALUES (2, 3, 0, 'Shop 1', 'shop-1', 0, 0, 0, 'https://shop.joomla.org/amazoncom-bookstores.html', 1, 15, 'Get books about Joomla! at the Joomla! Book Shop.', '', 0, 1, '', '{"imageurl":"images\/banners\/white.png","width":"","height":"","alt":"Joomla! Books"}', 0, '', -1, 0, 0, 0, '1900-01-01 00:00:01', '1900-01-01 00:00:01', '1900-01-01 00:00:01', '1900-01-01 00:00:01', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '1900-01-01 00:00:01', 0, 1); +INSERT [#__banners] ([id], [cid], [type], [name], [alias], [imptotal], [impmade], [clicks], [clickurl], [state], [catid], [description], [custombannercode], [sticky], [ordering], [metakey], [params], [own_prefix], [metakey_prefix], [purchase_type], [track_clicks], [track_impressions], [checked_out], [checked_out_time], [publish_up], [publish_down], [reset], [created], [language], [created_by], [created_by_alias], [modified], [modified_by], [version]) VALUES (3, 2, 0, 'Shop 2', 'shop-2', 0, 0, 0, 'https://shop.joomla.org', 1, 15, 'T Shirts, caps and more from the Joomla! Shop.', '', 0, 2, '', '{"imageurl":"images\/banners\/white.png","width":"","height":"","alt":"Joomla! Shop"}', 0, '', -1, 0, 0, 0, '1900-01-01 00:00:01', '1900-01-01 00:00:01', '1900-01-01 00:00:01', '1900-01-01 00:00:01', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '1900-01-01 00:00:01', 0, 1); +INSERT [#__banners] ([id], [cid], [type], [name], [alias], [imptotal], [impmade], [clicks], [clickurl], [state], [catid], [description], [custombannercode], [sticky], [ordering], [metakey], [params], [own_prefix], [metakey_prefix], [purchase_type], [track_clicks], [track_impressions], [checked_out], [checked_out_time], [publish_up], [publish_down], [reset], [created], [language], [created_by], [created_by_alias], [modified], [modified_by], [version]) VALUES (4, 1, 0, 'Support Joomla!', 'support-joomla', 0, 0, 0, 'https://contribute.joomla.org', 1, 15, 'Your contributions of time, talent and money make Joomla possible.', '', 0, 3, '', '{"imageurl":"images\/banners\/white.png","width":"","height":"","alt":""}', 0, '', -1, 0, 0, 0, '1900-01-01 00:00:01', '1900-01-01 00:00:01', '1900-01-01 00:00:01', '1900-01-01 00:00:01', '2011-01-01 00:00:01', 'en-GB', 42, 'Joomla', '1900-01-01 00:00:01', 0, 1); SET IDENTITY_INSERT [#__banners] OFF; @@ -217,7 +217,7 @@ INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [p INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (27, 52, 26, 39, 40, 3, 'sample-data-articles/park-site/park-blog', 'com_content', 'Park Blog', 'park-blog', '', '

    Here is where I will blog all about the parks of Australia.

    You can make a blog on your website by creating a category to write your blog posts in (this one is called Park Blog). Each blog post will be an article in that category. If you make a category blog menu link with 1 column it will look like this page, if you display the category description then this part is displayed.

    To enhance your blog you may want to add extensions for comments, interacting with social network sites, tagging, and keeping in contact with your readers. You can also enable the syndication that is included in Joomla (in the Integration Options set Show Feed Link to Show and make sure to display the syndication module on the page).

    ', 1, 0, '1900-01-01 00:00:01', 1, '{"category_layout":"","image":"images\/sampledata\/parks\/banner_cradle.jpg"}', '', '', '{"author":"","robots":""}', 726, '2011-01-01 00:00:01', 0, '1900-01-01 00:00:01', 0, 'en-GB', 1); -INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (28, 53, 26, 41, 46, 3, 'sample-data-articles/park-site/photo-gallery', 'com_content', 'Photo Gallery', 'photo-gallery', '', '

    These are my photos from parks I have visited (I didn''t take them, they are all from Wikimedia Commons).

    +INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (28, 53, 26, 41, 46, 3, 'sample-data-articles/park-site/photo-gallery', 'com_content', 'Photo Gallery', 'photo-gallery', '', '

    These are my photos from parks I have visited (I didn''t take them, they are all from Wikimedia Commons).

    This shows you how to make a simple image gallery using articles in com_content.

    In each article put a thumbnail image before a "readmore" and the full size image after it. Set the article to Show Intro Text: Hide.

    ', 1, 0, '1900-01-01 00:00:01', 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 726, '2011-01-01 00:00:01', 123, '1900-01-01 00:00:01', 0, 'en-GB', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (29, 54, 14, 48, 53, 2, 'sample-data-articles/fruit-shop-site', 'com_content', 'Fruit Shop Site', 'fruit-shop-site', '', '', 1, 0, '1900-01-01 00:00:01', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 726, '2011-01-01 00:00:01', 0, '1900-01-01 00:00:01', 0, '*', 1); @@ -228,7 +228,7 @@ INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [p INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (34, 59, 16, 62, 63, 2, 'sample-data-contact/park-site', 'com_contact', 'Park Site', 'park-site', '', '', 1, 0, '1900-01-01 00:00:01', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 726, '2011-01-01 00:00:01', 0, '1900-01-01 00:00:01', 0, 'en-GB', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (35, 60, 16, 64, 121, 2, 'sample-data-contact/shop-site', 'com_contact', 'Shop Site', 'shop-site', '', '', 1, 0, '1900-01-01 00:00:01', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 726, '2011-01-01 00:00:01', 0, '1900-01-01 00:00:01', 0, '*', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (36, 61, 35, 65, 66, 3, 'sample-data-contact/shop-site/staff', 'com_contact', 'Staff', 'staff', '', '

    Please feel free to contact our staff at any time should you need assistance.

    ', 1, 0, '1900-01-01 00:00:01', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 726, '2011-01-01 00:00:01', 0, '1900-01-01 00:00:01', 0, '*', 1); -INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (37, 62, 35, 67, 120, 3, 'sample-data-contact/shop-site/fruit-encyclopedia', 'com_contact', 'Fruit Encyclopedia', 'fruit-encyclopedia', '', '

    Our directory of information about different kinds of fruit.

    We love fruit and want the world to know more about all of its many varieties.

    Although it is small now, we work on it whenever we have a chance.

    All of the images can be found in Wikimedia Commons.

    Apples

    This encyclopedia is implemented using the contact component, each fruit a separate contact and a category for each letter. A CSS style is used to create the horizontal layout of the alphabet headings.

    If you wanted to, you could allow some users (such as your growers) to have access to just this category in the contact component and let them help you to create new content for the encyclopedia.

    ', 1, 0, '1900-01-01 00:00:01', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 726, '2011-01-01 00:00:01', 0, '1900-01-01 00:00:01', 0, '*', 1); +INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (37, 62, 35, 67, 120, 3, 'sample-data-contact/shop-site/fruit-encyclopedia', 'com_contact', 'Fruit Encyclopedia', 'fruit-encyclopedia', '', '

    Our directory of information about different kinds of fruit.

    We love fruit and want the world to know more about all of its many varieties.

    Although it is small now, we work on it whenever we have a chance.

    All of the images can be found in Wikimedia Commons.

    Apples

    This encyclopedia is implemented using the contact component, each fruit a separate contact and a category for each letter. A CSS style is used to create the horizontal layout of the alphabet headings.

    If you wanted to, you could allow some users (such as your growers) to have access to just this category in the contact component and let them help you to create new content for the encyclopedia.

    ', 1, 0, '1900-01-01 00:00:01', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 726, '2011-01-01 00:00:01', 0, '1900-01-01 00:00:01', 0, '*', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (38, 63, 37, 68, 69, 4, 'sample-data-contact/shop-site/fruit-encyclopedia/a', 'com_contact', 'A', 'a', '', '', 1, 0, '1900-01-01 00:00:01', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 726, '2011-01-01 00:00:01', 0, '1900-01-01 00:00:01', 0, '*', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (39, 64, 37, 70, 71, 4, 'sample-data-contact/shop-site/fruit-encyclopedia/b', 'com_contact', 'B', 'b', '', '', 1, 0, '1900-01-01 00:00:01', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 726, '2011-01-01 00:00:01', 0, '1900-01-01 00:00:01', 0, '*', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (40, 65, 37, 72, 73, 4, 'sample-data-contact/shop-site/fruit-encyclopedia/c', 'com_contact', 'C', 'c', '', '', 1, 0, '1900-01-01 00:00:01', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 726, '2011-01-01 00:00:01', 0, '1900-01-01 00:00:01', 0, '*', 1); @@ -284,22 +284,22 @@ SET IDENTITY_INSERT [#__categories] OFF; SET IDENTITY_INSERT [#__contact_details] ON; -INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (1, 'Contact Name Here', 'name', 'Position', 'Street Address', 'Suburb', 'State', 'Country', 'Zip Code', 'Telephone', 'Fax', '

    Information about or by the contact.

    ', 'images/powered_by.png', 'email@example.com', 1, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"http:\/\/twitter.com\/joomla","linkb_name":"YouTube","linkb":"http:\/\/www.youtube.com\/user\/joomla","linkc_name":"Facebook","linkc":"http:\/\/www.facebook.com\/joomla","linkd_name":"FriendFeed","linkd":"http:\/\/friendfeed.com\/joomla","linke_name":"Scribd","linke":"http:\/\/www.scribd.com\/people\/view\/504592-joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 16, 1, '', '', 'last', 'first', 'middle', 'en-GB', '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); +INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (1, 'Contact Name Here', 'name', 'Position', 'Street Address', 'Suburb', 'State', 'Country', 'Zip Code', 'Telephone', 'Fax', '

    Information about or by the contact.

    ', 'images/powered_by.png', 'email@example.com', 1, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"https:\/\/twitter.com\/joomla","linkb_name":"YouTube","linkb":"https:\/\/www.youtube.com\/user\/joomla","linkc_name":"Facebook","linkc":"https:\/\/www.facebook.com\/joomla","linkd_name":"FriendFeed","linkd":"http:\/\/friendfeed.com\/joomla","linke_name":"Scribd","linke":"https:\\/\\/www.scribd.com\\/user\\/504592\\/Joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 16, 1, '', '', 'last', 'first', 'middle', 'en-GB', '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (2, 'Webmaster', 'webmaster', '', '', '', '', '', '', '', '', '', '', 'webmaster@example.com', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"1","show_email_copy":"1","banned_email":"","banned_subject":"","banned_text":"","validate_session":"1","custom_reply":"","redirect":""}', 0, 34, 1, '', '', '', '', '', 'en-GB', '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (3, 'Owner', 'owner', '', '', '', '', '', '', '', '', '

    I''m the owner of this store.

    ', '', '', 0, 1, 0, '1900-01-01 00:00:00', 2, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 36, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (4, 'Buyer', 'buyer', '', '', '', '', '', '', '', '', '

    I am in charge of buying fruit. If you sell good fruit, contact me.

    ', '', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"0","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 36, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (5, 'Bananas', 'bananas', 'Scientific Name: Musa', 'Image Credit: Enzik Rights: Creative Commons Share Alike Unported 3.0 -Source: http://commons.wikimedia.org/wiki/File:Bananas_-_Morocco.jpg', '', 'Type: Herbaceous', 'Large Producers: India, China, Brasil', '', '', '', '

    Bananas are a great source of potassium.

    -

    ', 'images/sampledata/fruitshop/bananas_2.jpg', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"show_with_link","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"1","show_email":"","show_street_address":"","show_suburb":"","show_state":"1","show_postcode":"","show_country":"1","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Banana English","linka":"http:\/\/en.wikipedia.org\/wiki\/Banana","linkb_name":"Wikipedia: \u0939\u093f\u0928\u094d\u0926\u0940 \u0915\u0947\u0932\u093e","linkb":"http:\/\/hi.wikipedia.org\/wiki\/%E0%A4%95%E0%A5%87%E0%A4%B2%E0%A4%BE","linkc_name":"Wikipedia:Banana Portugu\u00eas","linkc":"http:\/\/pt.wikipedia.org\/wiki\/Banana","linkd_name":"Wikipedia: \u0411\u0430\u043d\u0430\u043d \u0420\u0443\u0441\u0441\u043a\u0438\u0439","linkd":"http:\/\/ru.wikipedia.org\/\u0411\u0430\u043d\u0430\u043d","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 39, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); +Source: https://commons.wikimedia.org/wiki/File:Bananas_-_Morocco.jpg', '', 'Type: Herbaceous', 'Large Producers: India, China, Brasil', '', '', '', '

    Bananas are a great source of potassium.

    +

    ', 'images/sampledata/fruitshop/bananas_2.jpg', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"show_with_link","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"1","show_email":"","show_street_address":"","show_suburb":"","show_state":"1","show_postcode":"","show_country":"1","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Banana English","linka":"https:\/\/en.wikipedia.org\/wiki\/Banana","linkb_name":"Wikipedia: \u0939\u093f\u0928\u094d\u0926\u0940 \u0915\u0947\u0932\u093e","linkb":"https:\/\/hi.wikipedia.org\/wiki\/%E0%A4%95%E0%A5%87%E0%A4%B2%E0%A4%BE","linkc_name":"Wikipedia:Banana Portugu\u00eas","linkc":"https:\/\/pt.wikipedia.org\/wiki\/Banana","linkd_name":"Wikipedia: \u0411\u0430\u043d\u0430\u043d \u0420\u0443\u0441\u0441\u043a\u0438\u0439","linkd":"https:\/\/ru.wikipedia.org\/\u0411\u0430\u043d\u0430\u043d","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 39, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (6, 'Apples', 'apples', 'Scientific Name: Malus domestica', 'Image Credit: Fievet Rights: Public Domain -Source: http://commons.wikimedia.org/wiki/File:Pommes_vertes.JPG', '', 'Family: Rosaceae', 'Large: Producers: China, United States', '', '', '', '

    Apples are a versatile fruit, used for eating, cooking, and preserving.

    -

    There are more that 7500 different kinds of apples grown around the world.

    ', 'images/sampledata/fruitshop/apple.jpg', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Apples English","linka":"http:\/\/en.wikipedia.org\/wiki\/Apple","linkb_name":"Wikipedia: Manzana Espa\u00f1ol ","linkb":"http:\/\/es.wikipedia.org\/wiki\/Manzana","linkc_name":"Wikipedia: \u82f9\u679c \u4e2d\u6587","linkc":"http:\/\/zh.wikipedia.org\/zh\/\u82f9\u679c","linkd_name":"Wikipedia: Tofaa Kiswahili","linkd":"http:\/\/sw.wikipedia.org\/wiki\/Tofaa","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 38, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); +Source: https://commons.wikimedia.org/wiki/File:Pommes_vertes.JPG', '', 'Family: Rosaceae', 'Large: Producers: China, United States', '', '', '', '

    Apples are a versatile fruit, used for eating, cooking, and preserving.

    +

    There are more that 7500 different kinds of apples grown around the world.

    ', 'images/sampledata/fruitshop/apple.jpg', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Apples English","linka":"https:\/\/en.wikipedia.org\/wiki\/Apple","linkb_name":"Wikipedia: Manzana Espa\u00f1ol ","linkb":"https:\/\/es.wikipedia.org\/wiki\/Manzana","linkc_name":"Wikipedia: \u82f9\u679c \u4e2d\u6587","linkc":"https:\/\/zh.wikipedia.org\/zh\/\u82f9\u679c","linkd_name":"Wikipedia: Tofaa Kiswahili","linkd":"https:\/\/sw.wikipedia.org\/wiki\/Tofaa","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 38, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (7, 'Tamarind', 'tamarind', 'Scientific Name: Tamarindus indica', 'Image Credit: Franz Eugen Köhler, Köhler''s Medizinal-Pflanzen Rights: Public Domain -Source:http://commons.wikimedia.org/wiki/File:Koeh-134.jpg', '', 'Family: Fabaceae', 'Large Producers: India, United States', '', '', '', '

    Tamarinds are a versatile fruit used around the world. In its young form it is used in hot sauces; ripened it is the basis for many refreshing drinks.

    -

    ', 'images/sampledata/fruitshop/tamarind.jpg', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Tamarind English","linka":"http:\/\/en.wikipedia.org\/wiki\/Tamarind","linkb_name":"Wikipedia: \u09a4\u09c7\u0981\u09a4\u09c1\u09b2 \u09ac\u09be\u0982\u09b2\u09be ","linkb":"http:\/\/bn.wikipedia.org\/wiki\/\u09a4\u09c7\u0981\u09a4\u09c1\u09b2 ","linkc_name":"Wikipedia: Tamarinier Fran\u00e7ais","linkc":"http:\/\/fr.wikipedia.org\/wiki\/Tamarinier","linkd_name":"Wikipedia:Tamaline lea faka-Tonga","linkd":"http:\/\/to.wikipedia.org\/wiki\/Tamaline","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 57, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); +Source:https://commons.wikimedia.org/wiki/File:Koeh-134.jpg', '', 'Family: Fabaceae', 'Large Producers: India, United States', '', '', '', '

    Tamarinds are a versatile fruit used around the world. In its young form it is used in hot sauces; ripened it is the basis for many refreshing drinks.

    +

    ', 'images/sampledata/fruitshop/tamarind.jpg', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Tamarind English","linka":"https:\/\/en.wikipedia.org\/wiki\/Tamarind","linkb_name":"Wikipedia: \u09a4\u09c7\u0981\u09a4\u09c1\u09b2 \u09ac\u09be\u0982\u09b2\u09be ","linkb":"https:\/\/bn.wikipedia.org\/wiki\/\u09a4\u09c7\u0981\u09a4\u09c1\u09b2 ","linkc_name":"Wikipedia: Tamarinier Fran\u00e7ais","linkc":"https:\/\/fr.wikipedia.org\/wiki\/Tamarinier","linkd_name":"Wikipedia:Tamaline lea faka-Tonga","linkd":"https:\/\/to.wikipedia.org\/wiki\/Tamaline","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 57, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (8, 'Shop Address', 'shop-address', '', '', 'Our City', 'Our Province', 'Our Country', '', '555-555-5555', '', '

    Here are directions for how to get to our shop.

    ', '', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 35, 1, '', '', '', '', '', '*', '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); SET IDENTITY_INSERT [#__contact_details] OFF; @@ -370,7 +370,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext] INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (10, 106, 'Content', 'content', '

    The content component (com_content) is what you use to write articles. It is extremely flexible and has the largest number of built in views. Articles can be created and edited from the front end, making content the easiest component to use to create your site content. Help

    ', '', 1, 21, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}', 1, 1, '', '', 1, 2, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (11, 107, 'Cradle Mountain', 'cradle-mountain', '

    ', ' -

    ', 1, 73, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/250px_cradle_mountain_seen_from_barn_bluff.jpg","float_intro":"","image_intro_alt":"Cradle Mountain","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/800px_cradle_mountain_seen_from_barn_bluff.jpg","float_fulltext":"none","image_fulltext_alt":"Cradle Mountain","image_fulltext_caption":"Source: http:\/\/commons.wikimedia.org\/wiki\/File:Rainforest,bluemountainsNSW.jpg Author: Alan J.W.C. License: GNU Free Documentation License v . 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 73, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/250px_cradle_mountain_seen_from_barn_bluff.jpg","float_intro":"","image_intro_alt":"Cradle Mountain","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/800px_cradle_mountain_seen_from_barn_bluff.jpg","float_fulltext":"none","image_fulltext_alt":"Cradle Mountain","image_fulltext_caption":"Source: https:\/\/commons.wikimedia.org\/wiki\/File:Rainforest,bluemountainsNSW.jpg Author: Alan J.W.C. License: GNU Free Documentation License v . 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (12, 110, 'Custom Module', 'custom-module', '

    This module allows you to create your own Module using a WYSIWYG editor. Help

    {loadmodule custom,Custom}
    ', '', 1, 66, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (13, 111, 'Directions', 'directions', '

    Here''s how to find our shop.

    By car

    Drive along Main Street to the intersection with First Avenue. Look for our sign.

    By foot

    From the center of town, walk north on Main Street until you see our sign.

    By bus

    Take the #73 Bus to the last stop. We are on the north east corner.

    ', '', 1, 29, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 2, '', '', 1, 3, '', 0, '*', ''); @@ -412,7 +412,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext]
  • Support Forums
  • Documentation
  • Professionals
  • -
  • Books
  • +
  • Books
  • ', '', 1, 19, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 123, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":null,"urlatext":"","targeta":"","urlb":null,"urlbtext":"","targetb":"","urlc":null,"urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","info_block_position":"0","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 2, 8, '', '', 1, 2, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (22, 120, 'Getting Started', 'getting-started', '

    It''s easy to get started creating your website. Knowing some of the basics will help.

    What is a Content Management System?

    @@ -440,7 +440,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext]

    ', ' -

    ', 1, 72, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/180px_koala_ag1.jpg","float_intro":"","image_intro_alt":"Koala Thumbnail","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/800px_koala_ag1.jpg","float_fulltext":"","image_fulltext_alt":"Koala Climbing Tree","image_fulltext_caption":"Source: http:\/\/commons.wikimedia.org\/wiki\/File:Koala-ag1.jpg Author: Arnaud Gaillard License: Creative Commons Share Alike Attribution Generic 1.0"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 72, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/180px_koala_ag1.jpg","float_intro":"","image_intro_alt":"Koala Thumbnail","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/800px_koala_ag1.jpg","float_fulltext":"","image_fulltext_alt":"Koala Climbing Tree","image_fulltext_caption":"Source: https:\/\/commons.wikimedia.org\/wiki\/File:Koala-ag1.jpg Author: Arnaud Gaillard License: Creative Commons Share Alike Attribution Generic 1.0"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (26, 124, 'Language Switcher', 'language-switcher', '

    The language switcher module allows you to take advantage of the language tags that are available when content, modules and menu links are created.

    This module displays a list of available Content Languages for switching between them.

    When switching languages, it redirects to the Home page, or associated menu item, defined for the chosen language. Thereafter, the navigation will be the one defined for that language.

    @@ -464,10 +464,10 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext]

    ', '', 1, 19, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 10, '', '', 1, 1, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (33, 131, 'Phyllopteryx', 'phyllopteryx', '

    ', ' -

    ', 1, 72, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/200px_phyllopteryx_taeniolatus1.jpg","float_intro":"","image_intro_alt":"Phyllopteryx","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/800px_phyllopteryx_taeniolatus1.jpg","float_fulltext":"","image_fulltext_alt":"Phyllopteryx","image_fulltext_caption":"Source: http:\/\/en.wikipedia.org\/wiki\/File:Phyllopteryx_taeniolatus1.jpg Author: Richard Ling License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 72, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/200px_phyllopteryx_taeniolatus1.jpg","float_intro":"","image_intro_alt":"Phyllopteryx","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/800px_phyllopteryx_taeniolatus1.jpg","float_fulltext":"","image_fulltext_alt":"Phyllopteryx","image_fulltext_caption":"Source: https:\/\/en.wikipedia.org\/wiki\/File:Phyllopteryx_taeniolatus1.jpg Author: Richard Ling License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (34, 132, 'Pinnacles', 'pinnacles', '

    ', ' -

    ', 1, 73, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/120px_pinnacles_western_australia.jpg","float_intro":"","image_intro_alt":"Kings Canyon","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/800px_pinnacles_western_australia.jpg","float_fulltext":"","image_fulltext_alt":"Kings Canyon","image_fulltext_caption":"Source: http:\/\/commons.wikimedia.org\/wiki\/File:Pinnacles_Western_Australia.jpg Author: Martin Gloss License: GNU Free Documentation license v 1.2 or later."}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 73, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/120px_pinnacles_western_australia.jpg","float_intro":"","image_intro_alt":"Kings Canyon","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/800px_pinnacles_western_australia.jpg","float_fulltext":"","image_fulltext_alt":"Kings Canyon","image_fulltext_caption":"Source: https:\/\/commons.wikimedia.org\/wiki\/File:Pinnacles_Western_Australia.jpg Author: Martin Gloss License: GNU Free Documentation license v 1.2 or later."}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (35, 133, 'Professionals', 'professionals', '

    Joomla! 3 continues development of the Joomla Platform and CMS as a powerful and flexible way to bring your vision of the web to reality. With the new administrator interface and adoption of Twitter Bootstrap, the ability to control its look and the management of extensions is now complete.

    ', '

    Working with multiple template styles and overrides for the same views, creating the design you want is easier than it has ever been. Limiting support to PHP 5.3.10 and above makes Joomla lighter and faster than ever.

    @@ -497,7 +497,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext] INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (43, 141, 'Spotted Quoll', 'spotted-quoll', '

    ', ' -

    ', 1, 72, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/220px_spottedquoll_2005_seanmcclean.jpg","float_intro":"","image_intro_alt":"Spotted Quoll","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/789px_spottedquoll_2005_seanmcclean.jpg","float_fulltext":"","image_fulltext_alt":"Spotted Quoll","image_fulltext_caption":"Source: http:\/\/en.wikipedia.org\/wiki\/File:SpottedQuoll_2005_SeanMcClean.jpg Author: Sean McClean License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 72, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/220px_spottedquoll_2005_seanmcclean.jpg","float_intro":"","image_intro_alt":"Spotted Quoll","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/789px_spottedquoll_2005_seanmcclean.jpg","float_fulltext":"","image_fulltext_alt":"Spotted Quoll","image_fulltext_caption":"Source: https:\/\/en.wikipedia.org\/wiki\/File:SpottedQuoll_2005_SeanMcClean.jpg Author: Sean McClean License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (44, 142, 'Statistics Module', 'statistics', '

    This module shows information about your server installation together with statistics on the Web site users, number of Articles in your database and the number of Web links you provide.

    {loadmodule mod_stats,Statistics}
    ', '', 1, 67, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 5, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (45, 143, 'Syndicate Module', 'syndicate-module', '

    The syndicate module will display a link that allows users to take a feed from your site. It will only display on pages for which feeds are possible. That means it will not display on single article, or contact, such as this one. Help

    @@ -516,7 +516,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext]
  • Redirect Help
  • ', '', 1, 25, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (47, 145, 'The Joomla! Community', 'the-joomla-community', '

    Joomla means All Together, and it is a community of people all working and having fun together that makes Joomla possible. Thousands of people each year participate in the Joomla community, and we hope you will be one of them.

    -

    People with all kinds of skills, of all skill levels and from around the world are welcome to join in. Participate in the Joomla.org family of websites (the forum is a great place to start). Come to a Joomla! event. Join or start a Joomla! Users Group. Whether you are a developer, site administrator, designer, end user or fan, there are ways for you to participate and contribute.

    ', '', 1, 19, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 1, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    People with all kinds of skills, of all skill levels and from around the world are welcome to join in. Participate in the Joomla.org family of websites (the forum is a great place to start). Come to a Joomla! event. Join or start a Joomla! Users Group. Whether you are a developer, site administrator, designer, end user or fan, there are ways for you to participate and contribute.

    ', '', 1, 19, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 1, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (48, 146, 'The Joomla! Project', 'the-joomla-project', '

    The Joomla Project consists of all of the people who make and support the Joomla Web Platform and Content Management System.

    Our mission is to provide a flexible platform for digital publishing and collaboration.

    The core values are:

    @@ -563,7 +563,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext]
    {loadmodule whosonline,Who''s Online}
    ', '', 1, 65, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (57, 155, 'Wobbegone', 'wobbegone', '

    ', ' -

    ', 1, 72, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/180px_wobbegong.jpg","float_intro":"","image_intro_alt":"Wobbegon","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/800px_wobbegong.jpg","float_fulltext":"","image_fulltext_alt":"Wobbegon","image_fulltext_caption":"Source: http:\/\/en.wikipedia.org\/wiki\/File:Wobbegong.jpg Author: Richard Ling Rights: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 72, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/180px_wobbegong.jpg","float_intro":"","image_intro_alt":"Wobbegon","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/800px_wobbegong.jpg","float_fulltext":"","image_fulltext_alt":"Wobbegon","image_fulltext_caption":"Source: https:\/\/en.wikipedia.org\/wiki\/File:Wobbegong.jpg Author: Richard Ling Rights: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (58, 156, 'Wonderful Watermelon', 'wonderful-watermelon', '

    Watermelon is a wonderful and healthy treat. We grow the world''s sweetest watermelon. We have the largest watermelon patch in our country.

    ', '', 1, 30, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (59, 157, 'Wrapper Module', 'wrapper-module', '

    This module shows an iFrame window to specified location. Help

    {loadmodule wrapper,Wrapper}
    ', '', 1, 67, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''); @@ -582,10 +582,10 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext] ', '', 1, 25, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 7, '', '', 1, 0, '', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (64, 162, 'Blue Mountain Rain Forest', 'blue-mountain-rain-forest', '

    ', ' -

    ', 1, 73, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/120px_rainforest_bluemountainsnsw.jpg","float_intro":"none","image_intro_alt":"Rain Forest Blue Mountains","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/727px_rainforest_bluemountainsnsw.jpg","float_fulltext":"","image_fulltext_alt":"Rain Forest Blue Mountains","image_fulltext_caption":"Source: http:\/\/commons.wikimedia.org\/wiki\/File:Rainforest,bluemountainsNSW.jpg Author: Adam J.W.C. License: GNU Free Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 73, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/120px_rainforest_bluemountainsnsw.jpg","float_intro":"none","image_intro_alt":"Rain Forest Blue Mountains","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/727px_rainforest_bluemountainsnsw.jpg","float_fulltext":"","image_fulltext_alt":"Rain Forest Blue Mountains","image_fulltext_caption":"Source: https:\/\/commons.wikimedia.org\/wiki\/File:Rainforest,bluemountainsNSW.jpg Author: Adam J.W.C. License: GNU Free Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (65, 163, 'Ormiston Pound', 'ormiston-pound', '

    ', ' -

    ', 1, 73, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/180px_ormiston_pound.jpg","float_intro":"none","image_intro_alt":"Ormiston Pound","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/800px_ormiston_pound.jpg","float_fulltext":"","image_fulltext_alt":"Ormiston Pound","image_fulltext_caption":"Source: http:\/\/commons.wikimedia.org\/wiki\/File:Ormiston_Pound.JPG Author: License: GNU Free Public Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 73, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/180px_ormiston_pound.jpg","float_intro":"none","image_intro_alt":"Ormiston Pound","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/800px_ormiston_pound.jpg","float_fulltext":"","image_fulltext_alt":"Ormiston Pound","image_fulltext_caption":"Source: https:\/\/commons.wikimedia.org\/wiki\/File:Ormiston_Pound.JPG Author: License: GNU Free Public Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (66, 165, 'Latest Users Module', 'latest-users-module', '

    This module displays the latest registered users. Help

    {loadmodule users_latest,Users Latest}
    ', '', 1, 65, '2011-01-01 00:00:01', 726, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:01', '1900-01-01 00:00:00', '', '', '{"show_title":"1","link_titles":"","show_intro":"","show_category":"1","link_category":"1","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 3, '', '', 1, 0, '', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (67, 168, 'What''s New in 1.5?', 'whats-new-in-15', '

    This article deliberately archived as an example.

    As with previous releases, Joomla! provides a unified and easy-to-use framework for delivering content for Web sites of all kinds. To support the changing nature of the Internet and emerging Web technologies, Joomla! required substantial restructuring of its core functionality and we also used this effort to simplify many challenges within the current user interface. Joomla! 1.5 has many new features.

    @@ -641,7 +641,7 @@ INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [t INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (21, 'menu', 'com_finder', 'Smart Search', '', 'Smart Search', 'index.php?option=com_finder', 'component', 0, 1, 1, 27, 0, '1900-01-01 00:00:01', 0, 0, 'class:finder', 0, '', 41, 42, 0, '*', 1); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (22, 'menu', 'com_joomlaupdate', 'Joomla! Update', '', 'Joomla! Update', 'index.php?option=com_joomlaupdate', 'component', 0, 1, 1, 28, 0, '1900-01-01 00:00:01', 0, 0, 'class:joomlaupdate', 0, '', 41, 42, 0, '*', 1); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (201, 'usermenu', 'Your Profile', 'your-profile', '', 'your-profile', 'index.php?option=com_users&view=profile', 'component', 1, 1, 1, 25, 0, '1900-01-01 00:00:01', 0, 2, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 231, 232, 0, '*', 0); -INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (207, 'top', 'Joomla.org', 'joomlaorg', '', 'joomlaorg', 'http://joomla.org', 'url', 1, 1, 1, 0, 0, '1900-01-01 00:00:01', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}', 229, 230, 0, '*', 0); +INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (207, 'top', 'Joomla.org', 'joomlaorg', '', 'joomlaorg', 'https://www.joomla.org/', 'url', 1, 1, 1, 0, 0, '1900-01-01 00:00:01', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}', 229, 230, 0, '*', 0); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (229, 'aboutjoomla', 'Single Contact', 'single-contact', '', 'using-joomla/extensions/components/contact-component/single-contact', 'index.php?option=com_contact&view=contact&id=1', 'component', 1, 270, 5, 8, 0, '1900-01-01 00:00:01', 0, 1, '', 0, '{"show_category_crumb":"","presentation_style":"","show_contact_category":"","show_contact_list":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_links":"","linka_name":"","linkb_name":"","linkc_name":"","linkd_name":"","linke_name":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 79, 80, 0, '*', 0); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (233, 'mainmenu', 'Login', 'login', '', 'login', 'index.php?option=com_users&view=login', 'component', 1, 1, 1, 25, 0, '1900-01-01 00:00:01', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 11, 12, 0, '*', 0); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (234, 'parks', 'Park Blog', 'park-blog', '', 'park-blog', 'index.php?option=com_content&view=category&layout=blog&id=27', 'component', 1, 1, 1, 22, 0, '1900-01-01 00:00:01', 0, 1, '', 114, '{"maxLevel":"","show_empty_categories":"","show_description":"1","show_description_image":"1","show_category_title":"","show_cat_num_articles":"","num_leading_articles":"1","num_intro_articles":"4","num_columns":"1","num_links":"4","multi_column_order":"","orderby_pri":"","orderby_sec":"","order_date":"","show_pagination":"2","show_noauth":"","show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_readmore":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_hits":"","show_feed_link":"1","feed_summary":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 235, 236, 0, 'en-GB', 0); @@ -800,7 +800,7 @@ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (37, 'Syndicate Feeds', '', '', 1, 'syndicateload', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_syndicate', 1, 1, '{"text":"Feed Entries","format":"rss","layout":"","moduleclass_sfx":"","cache":"0"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (38, 'Users Latest', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_users_latest', 1, 1, '{"shownumber":"5","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"static"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (39, 'Who''s Online', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_whosonline', 1, 1, '{"showmode":"2","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 0, '*'); -INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (40, 'Wrapper', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_wrapper', 1, 1, '{"url":"http:\/\/www.youtube.com\/embed\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); +INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (40, 'Wrapper', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_wrapper', 1, 1, '{"url":"https:\/\/www.youtube.com\/embed\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (41, 'Footer', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_footer', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (44, 'Login', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_login', 1, 1, '{"pretext":"","posttext":"","login":"280","logout":"280","greeting":"1","name":"0","usesecure":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (45, 'Menu Example', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"mainmenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'); diff --git a/installation/sql/sqlazure/sample_testing.sql b/installation/sql/sqlazure/sample_testing.sql index 90dd29291cd68..add0db562f850 100644 --- a/installation/sql/sqlazure/sample_testing.sql +++ b/installation/sql/sqlazure/sample_testing.sql @@ -184,9 +184,9 @@ SET IDENTITY_INSERT [#__banner_clients] OFF; SET IDENTITY_INSERT [#__banners] ON; -INSERT [#__banners] ([id], [cid], [type], [name], [alias], [imptotal], [impmade], [clicks], [clickurl], [state], [catid], [description], [custombannercode], [sticky], [ordering], [metakey], [params], [own_prefix], [metakey_prefix], [purchase_type], [track_clicks], [track_impressions], [checked_out], [checked_out_time], [publish_up], [publish_down], [reset], [created], [language], [created_by], [created_by_alias], [modified], [modified_by], [version]) VALUES (2, 3, 0, 'Shop 1', 'shop-1', 0, 0, 0, 'http://shop.joomla.org/amazoncom-bookstores.html', 1, 15, 'Get books about Joomla! at the Joomla! Book Shop.', '', 0, 1, '', '{"imageurl":"images\/banners\/white.png","width":"","height":"","alt":"Joomla! Books"}', 0, '', -1, 0, 0, 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', '2011-01-01 00:00:00', 'en-GB', 42, 'Joomla', '1900-01-01 00:00:00', 0, 1); -INSERT [#__banners] ([id], [cid], [type], [name], [alias], [imptotal], [impmade], [clicks], [clickurl], [state], [catid], [description], [custombannercode], [sticky], [ordering], [metakey], [params], [own_prefix], [metakey_prefix], [purchase_type], [track_clicks], [track_impressions], [checked_out], [checked_out_time], [publish_up], [publish_down], [reset], [created], [language], [created_by], [created_by_alias], [modified], [modified_by], [version]) VALUES (3, 2, 0, 'Shop 2', 'shop-2', 0, 0, 0, 'http://shop.joomla.org', 1, 15, 'T Shirts, caps and more from the Joomla! Shop.', '', 0, 2, '', '{"imageurl":"images\/banners\/white.png","width":"","height":"","alt":"Joomla! Shop"}', 0, '', -1, 0, 0, 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', '2011-01-01 00:00:00', 'en-GB', 42, 'Joomla', '1900-01-01 00:00:00', 0, 1); -INSERT [#__banners] ([id], [cid], [type], [name], [alias], [imptotal], [impmade], [clicks], [clickurl], [state], [catid], [description], [custombannercode], [sticky], [ordering], [metakey], [params], [own_prefix], [metakey_prefix], [purchase_type], [track_clicks], [track_impressions], [checked_out], [checked_out_time], [publish_up], [publish_down], [reset], [created], [language], [created_by], [created_by_alias], [modified], [modified_by], [version]) VALUES (4, 1, 0, 'Support Joomla!', 'support-joomla', 0, 0, 0, 'http://contribute.joomla.org', 1, 15, 'Your contributions of time, talent and money make Joomla possible.', '', 0, 3, '', '{"imageurl":"images\/banners\/white.png","width":"","height":"","alt":""}', 0, '', -1, 0, 0, 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', '2011-01-01 00:00:00', 'en-GB', 42, 'Joomla', '1900-01-01 00:00:00', 0, 1); +INSERT [#__banners] ([id], [cid], [type], [name], [alias], [imptotal], [impmade], [clicks], [clickurl], [state], [catid], [description], [custombannercode], [sticky], [ordering], [metakey], [params], [own_prefix], [metakey_prefix], [purchase_type], [track_clicks], [track_impressions], [checked_out], [checked_out_time], [publish_up], [publish_down], [reset], [created], [language], [created_by], [created_by_alias], [modified], [modified_by], [version]) VALUES (2, 3, 0, 'Shop 1', 'shop-1', 0, 0, 0, 'https://shop.joomla.org/amazoncom-bookstores.html', 1, 15, 'Get books about Joomla! at the Joomla! Book Shop.', '', 0, 1, '', '{"imageurl":"images\/banners\/white.png","width":"","height":"","alt":"Joomla! Books"}', 0, '', -1, 0, 0, 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', '2011-01-01 00:00:00', 'en-GB', 42, 'Joomla', '1900-01-01 00:00:00', 0, 1); +INSERT [#__banners] ([id], [cid], [type], [name], [alias], [imptotal], [impmade], [clicks], [clickurl], [state], [catid], [description], [custombannercode], [sticky], [ordering], [metakey], [params], [own_prefix], [metakey_prefix], [purchase_type], [track_clicks], [track_impressions], [checked_out], [checked_out_time], [publish_up], [publish_down], [reset], [created], [language], [created_by], [created_by_alias], [modified], [modified_by], [version]) VALUES (3, 2, 0, 'Shop 2', 'shop-2', 0, 0, 0, 'https://shop.joomla.org', 1, 15, 'T Shirts, caps and more from the Joomla! Shop.', '', 0, 2, '', '{"imageurl":"images\/banners\/white.png","width":"","height":"","alt":"Joomla! Shop"}', 0, '', -1, 0, 0, 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', '2011-01-01 00:00:00', 'en-GB', 42, 'Joomla', '1900-01-01 00:00:00', 0, 1); +INSERT [#__banners] ([id], [cid], [type], [name], [alias], [imptotal], [impmade], [clicks], [clickurl], [state], [catid], [description], [custombannercode], [sticky], [ordering], [metakey], [params], [own_prefix], [metakey_prefix], [purchase_type], [track_clicks], [track_impressions], [checked_out], [checked_out_time], [publish_up], [publish_down], [reset], [created], [language], [created_by], [created_by_alias], [modified], [modified_by], [version]) VALUES (4, 1, 0, 'Support Joomla!', 'support-joomla', 0, 0, 0, 'https://contribute.joomla.org', 1, 15, 'Your contributions of time, talent and money make Joomla possible.', '', 0, 3, '', '{"imageurl":"images\/banners\/white.png","width":"","height":"","alt":""}', 0, '', -1, 0, 0, 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', '2011-01-01 00:00:00', 'en-GB', 42, 'Joomla', '1900-01-01 00:00:00', 0, 1); SET IDENTITY_INSERT [#__banners] OFF; @@ -219,7 +219,7 @@ INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [p

    You can make a blog on your website by creating a category to write your blog posts in (this one is called Park Blog). Each blog post will be an article in that category. If you make a category blog menu link with 1 column it will look like this page, if you display the category description then this part is displayed.

    To enhance your blog you may want to add extensions for comments, interacting with social network sites, tagging, and keeping in contact with your readers. You can also enable the syndication that is included in Joomla (in the Integration Options set Show Feed Link to Show and make sure to display the syndication module on the page).

    ', 1, 0, '1900-01-01 00:00:00', 1, '{"category_layout":"","image":"images\/sampledata\/parks\/banner_cradle.jpg"}', '', '', '{"author":"","robots":""}', 793, '2011-01-01 00:00:00', 0, '1900-01-01 00:00:00', 0, 'en-GB', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (28, 53, 26, 43, 48, 3, 'sample-data-articles/park-site/photo-gallery', 'com_content', 'Photo Gallery', 'photo-gallery', '', '

    -

    These are my photos from parks I have visited (I didn''t take them, they are all from Wikimedia Commons).

    +

    These are my photos from parks I have visited (I didn''t take them, they are all from Wikimedia Commons).

    This shows you how to make a simple image gallery using articles in com_content.

    In each article put a thumbnail image before a "readmore" and the full size image after it. Set the article to Show Intro Text: Hide.

    ', 1, 0, '1900-01-01 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 793, '2011-01-01 00:00:00', 0, '1900-01-01 00:00:00', 0, 'en-GB', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (29, 54, 14, 50, 55, 2, 'sample-data-articles/fruit-shop-site', 'com_content', 'Fruit Shop Site', 'fruit-shop-site', '', '', 1, 0, '1900-01-01 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 793, '2011-01-01 00:00:00', 0, '1900-01-01 00:00:00', 0, '*', 1); @@ -230,7 +230,7 @@ INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [p INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (34, 59, 16, 64, 65, 2, 'sample-data-contact/park-site', 'com_contact', 'Park Site', 'park-site', '', '', 1, 0, '1900-01-01 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 793, '2011-01-01 00:00:00', 0, '1900-01-01 00:00:00', 0, 'en-GB', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (35, 60, 16, 66, 123, 2, 'sample-data-contact/shop-site', 'com_contact', 'Shop Site', 'shop-site', '', '', 1, 0, '1900-01-01 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 793, '2011-01-01 00:00:00', 0, '1900-01-01 00:00:00', 0, '*', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (36, 61, 35, 67, 68, 3, 'sample-data-contact/shop-site/staff', 'com_contact', 'Staff', 'staff', '', '

    Please feel free to contact our staff at any time should you need assistance.

    ', 1, 0, '1900-01-01 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 793, '2011-01-01 00:00:00', 0, '1900-01-01 00:00:00', 0, '*', 1); -INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (37, 62, 35, 69, 122, 3, 'sample-data-contact/shop-site/fruit-encyclopedia', 'com_contact', 'Fruit Encyclopedia', 'fruit-encyclopedia', '', '

    Our directory of information about different kinds of fruit.

    We love fruit and want the world to know more about all of its many varieties.

    Although it is small now, we work on it whenever we have a chance.

    All of the images can be found in Wikimedia Commons.

    Apples

    This encyclopedia is implemented using the contact component, each fruit a separate contact and a category for each letter. A CSS style is used to create the horizontal layout of the alphabet headings.

    If you wanted to, you could allow some users (such as your growers) to have access to just this category in the contact component and let them help you to create new content for the encyclopedia.

    ', 1, 0, '1900-01-01 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 793, '2011-01-01 00:00:00', 0, '1900-01-01 00:00:00', 0, '*', 1); +INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (37, 62, 35, 69, 122, 3, 'sample-data-contact/shop-site/fruit-encyclopedia', 'com_contact', 'Fruit Encyclopedia', 'fruit-encyclopedia', '', '

    Our directory of information about different kinds of fruit.

    We love fruit and want the world to know more about all of its many varieties.

    Although it is small now, we work on it whenever we have a chance.

    All of the images can be found in Wikimedia Commons.

    Apples

    This encyclopedia is implemented using the contact component, each fruit a separate contact and a category for each letter. A CSS style is used to create the horizontal layout of the alphabet headings.

    If you wanted to, you could allow some users (such as your growers) to have access to just this category in the contact component and let them help you to create new content for the encyclopedia.

    ', 1, 0, '1900-01-01 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 793, '2011-01-01 00:00:00', 0, '1900-01-01 00:00:00', 0, '*', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (38, 63, 37, 70, 71, 4, 'sample-data-contact/shop-site/fruit-encyclopedia/a', 'com_contact', 'A', 'a', '', '', 1, 0, '1900-01-01 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 793, '2011-01-01 00:00:00', 0, '1900-01-01 00:00:00', 0, '*', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (39, 64, 37, 72, 73, 4, 'sample-data-contact/shop-site/fruit-encyclopedia/b', 'com_contact', 'B', 'b', '', '', 1, 0, '1900-01-01 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 793, '2011-01-01 00:00:00', 0, '1900-01-01 00:00:00', 0, '*', 1); INSERT [#__categories] ([id], [asset_id], [parent_id], [lft], [rgt], [level], [path], [extension], [title], [alias], [note], [description], [published], [checked_out], [checked_out_time], [access], [params], [metadesc], [metakey], [metadata], [created_user_id], [created_time], [modified_user_id], [modified_time], [hits], [language], [version]) VALUES (40, 65, 37, 74, 75, 4, 'sample-data-contact/shop-site/fruit-encyclopedia/c', 'com_contact', 'C', 'c', '', '', 1, 0, '1900-01-01 00:00:00', 1, '{"target":"","image":""}', '', '', '{"page_title":"","author":"","robots":""}', 793, '2011-01-01 00:00:00', 0, '1900-01-01 00:00:00', 0, '*', 1); @@ -294,22 +294,22 @@ SET IDENTITY_INSERT [#__categories] OFF; SET IDENTITY_INSERT [#__contact_details] ON; -INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (1, 'Contact Name Here', 'name', 'Position', 'Street Address', 'Suburb', 'State', 'Country', 'Zip Code', 'Telephone', 'Fax', '

    Information about or by the contact.

    ', 'images/powered_by.png', 'email@example.com', 1, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"http:\/\/twitter.com\/joomla","linkb_name":"YouTube","linkb":"http:\/\/www.youtube.com\/user\/joomla","linkc_name":"Facebook","linkc":"http:\/\/www.facebook.com\/joomla","linkd_name":"FriendFeed","linkd":"http:\/\/friendfeed.com\/joomla","linke_name":"Scribd","linke":"http:\/\/www.scribd.com\/people\/view\/504592-joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 16, 1, '', '', 'last', 'first', 'middle', 'en-GB', '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); +INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (1, 'Contact Name Here', 'name', 'Position', 'Street Address', 'Suburb', 'State', 'Country', 'Zip Code', 'Telephone', 'Fax', '

    Information about or by the contact.

    ', 'images/powered_by.png', 'email@example.com', 1, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Twitter","linka":"https:\/\/twitter.com\/joomla","linkb_name":"YouTube","linkb":"https:\/\/www.youtube.com\/user\/joomla","linkc_name":"Facebook","linkc":"https:\/\/www.facebook.com\/joomla","linkd_name":"FriendFeed","linkd":"http:\/\/friendfeed.com\/joomla","linke_name":"Scribd","linke":"https:\\/\\/www.scribd.com\\/user\\/504592\\/Joomla","contact_layout":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 16, 1, '', '', 'last', 'first', 'middle', 'en-GB', '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (2, 'Webmaster', 'webmaster', '', '', '', '', '', '', '', '', '', '', 'webmaster@example.com', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"1","show_email_copy":"1","banned_email":"","banned_subject":"","banned_text":"","validate_session":"1","custom_reply":"","redirect":""}', 0, 34, 1, '', '', '', '', '', 'en-GB', '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (3, 'Owner', 'owner', '', '', '', '', '', '', '', '', '

    I''m the owner of this store.

    ', '', '', 0, 1, 0, '1900-01-01 00:00:00', 2, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 36, 1, '', '', '', '', '', '*', '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (4, 'Buyer', 'buyer', '', '', '', '', '', '', '', '', '

    I am in charge of buying fruit. If you sell good fruit, contact me.

    ', '', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"0","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 36, 1, '', '', '', '', '', '*', '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (5, 'Bananas', 'bananas', 'Scientific Name: Musa', 'Image Credit: Enzik Rights: Creative Commons Share Alike Unported 3.0 -Source: http://commons.wikimedia.org/wiki/File:Bananas_-_Morocco.jpg', '', 'Type: Herbaceous', 'Large Producers: India, China, Brasil', '', '', '', '

    Bananas are a great source of potassium.

    -

    ', 'images/sampledata/fruitshop/bananas_2.jpg', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"show_with_link","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"1","show_email":"","show_street_address":"","show_suburb":"","show_state":"1","show_postcode":"","show_country":"1","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Banana English","linka":"http:\/\/en.wikipedia.org\/wiki\/Banana","linkb_name":"Wikipedia: \u0939\u093f\u0928\u094d\u0926\u0940 \u0915\u0947\u0932\u093e","linkb":"http:\/\/hi.wikipedia.org\/wiki\/%E0%A4%95%E0%A5%87%E0%A4%B2%E0%A4%BE","linkc_name":"Wikipedia:Banana Portugu\u00eas","linkc":"http:\/\/pt.wikipedia.org\/wiki\/Banana","linkd_name":"Wikipedia: \u0411\u0430\u043d\u0430\u043d \u0420\u0443\u0441\u0441\u043a\u0438\u0439","linkd":"http:\/\/ru.wikipedia.org\/\u0411\u0430\u043d\u0430\u043d","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 39, 1, '', '', '', '', '', '*', '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); +Source: https://commons.wikimedia.org/wiki/File:Bananas_-_Morocco.jpg', '', 'Type: Herbaceous', 'Large Producers: India, China, Brasil', '', '', '', '

    Bananas are a great source of potassium.

    +

    ', 'images/sampledata/fruitshop/bananas_2.jpg', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"show_with_link","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"1","show_email":"","show_street_address":"","show_suburb":"","show_state":"1","show_postcode":"","show_country":"1","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Banana English","linka":"https:\/\/en.wikipedia.org\/wiki\/Banana","linkb_name":"Wikipedia: \u0939\u093f\u0928\u094d\u0926\u0940 \u0915\u0947\u0932\u093e","linkb":"https:\/\/hi.wikipedia.org\/wiki\/%E0%A4%95%E0%A5%87%E0%A4%B2%E0%A4%BE","linkc_name":"Wikipedia:Banana Portugu\u00eas","linkc":"https:\/\/pt.wikipedia.org\/wiki\/Banana","linkd_name":"Wikipedia: \u0411\u0430\u043d\u0430\u043d \u0420\u0443\u0441\u0441\u043a\u0438\u0439","linkd":"https:\/\/ru.wikipedia.org\/\u0411\u0430\u043d\u0430\u043d","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 39, 1, '', '', '', '', '', '*', '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (6, 'Apples', 'apples', 'Scientific Name: Malus domestica', 'Image Credit: Fievet Rights: Public Domain -Source: http://commons.wikimedia.org/wiki/File:Pommes_vertes.JPG', '', 'Family: Rosaceae', 'Large: Producers: China, United States', '', '', '', '

    Apples are a versatile fruit, used for eating, cooking, and preserving.

    -

    There are more that 7500 different kinds of apples grown around the world.

    ', 'images/sampledata/fruitshop/apple.jpg', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Apples English","linka":"http:\/\/en.wikipedia.org\/wiki\/Apple","linkb_name":"Wikipedia: Manzana Espa\u00f1ol ","linkb":"http:\/\/es.wikipedia.org\/wiki\/Manzana","linkc_name":"Wikipedia: \u82f9\u679c \u4e2d\u6587","linkc":"http:\/\/zh.wikipedia.org\/zh\/\u82f9\u679c","linkd_name":"Wikipedia: Tofaa Kiswahili","linkd":"http:\/\/sw.wikipedia.org\/wiki\/Tofaa","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 38, 1, '', '', '', '', '', '*', '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); +Source: https://commons.wikimedia.org/wiki/File:Pommes_vertes.JPG', '', 'Family: Rosaceae', 'Large: Producers: China, United States', '', '', '', '

    Apples are a versatile fruit, used for eating, cooking, and preserving.

    +

    There are more that 7500 different kinds of apples grown around the world.

    ', 'images/sampledata/fruitshop/apple.jpg', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Apples English","linka":"https:\/\/en.wikipedia.org\/wiki\/Apple","linkb_name":"Wikipedia: Manzana Espa\u00f1ol ","linkb":"https:\/\/es.wikipedia.org\/wiki\/Manzana","linkc_name":"Wikipedia: \u82f9\u679c \u4e2d\u6587","linkc":"https:\/\/zh.wikipedia.org\/zh\/\u82f9\u679c","linkd_name":"Wikipedia: Tofaa Kiswahili","linkd":"https:\/\/sw.wikipedia.org\/wiki\/Tofaa","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 38, 1, '', '', '', '', '', '*', '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (7, 'Tamarind', 'tamarind', 'Scientific Name: Tamarindus indica', 'Image Credit: Franz Eugen Köhler, Köhler''s Medizinal-Pflanzen Rights: Public Domain -Source:http://commons.wikimedia.org/wiki/File:Koeh-134.jpg', '', 'Family: Fabaceae', 'Large Producers: India, United States', '', '', '', '

    Tamarinds are a versatile fruit used around the world. In its young form it is used in hot sauces; ripened it is the basis for many refreshing drinks.

    -

    ', 'images/sampledata/fruitshop/tamarind.jpg', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Tamarind English","linka":"http:\/\/en.wikipedia.org\/wiki\/Tamarind","linkb_name":"Wikipedia: \u09a4\u09c7\u0981\u09a4\u09c1\u09b2 \u09ac\u09be\u0982\u09b2\u09be ","linkb":"http:\/\/bn.wikipedia.org\/wiki\/\u09a4\u09c7\u0981\u09a4\u09c1\u09b2 ","linkc_name":"Wikipedia: Tamarinier Fran\u00e7ais","linkc":"http:\/\/fr.wikipedia.org\/wiki\/Tamarinier","linkd_name":"Wikipedia:Tamaline lea faka-Tonga","linkd":"http:\/\/to.wikipedia.org\/wiki\/Tamaline","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 57, 1, '', '', '', '', '', '*', '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); +Source:https://commons.wikimedia.org/wiki/File:Koeh-134.jpg', '', 'Family: Fabaceae', 'Large Producers: India, United States', '', '', '', '

    Tamarinds are a versatile fruit used around the world. In its young form it is used in hot sauces; ripened it is the basis for many refreshing drinks.

    +

    ', 'images/sampledata/fruitshop/tamarind.jpg', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"plain","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"1","linka_name":"Wikipedia: Tamarind English","linka":"https:\/\/en.wikipedia.org\/wiki\/Tamarind","linkb_name":"Wikipedia: \u09a4\u09c7\u0981\u09a4\u09c1\u09b2 \u09ac\u09be\u0982\u09b2\u09be ","linkb":"https:\/\/bn.wikipedia.org\/wiki\/\u09a4\u09c7\u0981\u09a4\u09c1\u09b2 ","linkc_name":"Wikipedia: Tamarinier Fran\u00e7ais","linkc":"https:\/\/fr.wikipedia.org\/wiki\/Tamarinier","linkd_name":"Wikipedia:Tamaline lea faka-Tonga","linkd":"https:\/\/to.wikipedia.org\/wiki\/Tamaline","linke_name":"","linke":"","contact_layout":"beez5:encyclopedia"}', 0, 57, 1, '', '', '', '', '', '*', '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 0, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); INSERT [#__contact_details] ([id], [name], [alias], [con_position], [address], [suburb], [state], [country], [postcode], [telephone], [fax], [misc], [image], [email_to], [default_con], [published], [checked_out], [checked_out_time], [ordering], [params], [user_id], [catid], [access], [mobile], [webpage], [sortname1], [sortname2], [sortname3], [language], [created], [created_by], [created_by_alias], [modified], [modified_by], [metakey], [metadesc], [metadata], [featured], [xreference], [publish_up], [publish_down], [version], [hits]) VALUES (8, 'Shop Address', 'shop-address', '', '', 'Our City', 'Our Province', 'Our Country', '', '555-555-5555', '', '

    Here are directions for how to get to our shop.

    ', '', '', 0, 1, 0, '1900-01-01 00:00:00', 1, '{"show_contact_category":"","show_contact_list":"","presentation_style":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_profile":"","show_links":"","linka_name":"","linka":"","linkb_name":"","linkb":"","linkc_name":"","linkc":"","linkd_name":"","linkd":"","linke_name":"","linke":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":""}', 0, 35, 1, '', '', '', '', '', '*', '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, '', '', '{"robots":"","rights":""}', 1, '', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 0); SET IDENTITY_INSERT [#__contact_details] OFF; @@ -381,7 +381,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext] INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (10, 106, 'Content', 'content', '

    The content component (com_content) is what you use to write articles. It is extremely flexible and has the largest number of built in views. Articles can be created and edited from the front end, making content the easiest component to use to create your site content. Help

    ', '', 1, 21, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (11, 107, 'Cradle Mountain', 'cradle-mountain', '

    ', ' -

    ', 1, 73, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/250px_cradle_mountain_seen_from_barn_bluff.jpg","float_intro":"","image_intro_alt":"Cradle Mountain","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/800px_cradle_mountain_seen_from_barn_bluff.jpg","float_fulltext":"none","image_fulltext_alt":"Cradle Mountain","image_fulltext_caption":"Source: http:\/\/commons.wikimedia.org\/wiki\/File:Rainforest,bluemountainsNSW.jpg Author: Alan J.W.C. License: GNU Free Documentation License v . 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 73, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/250px_cradle_mountain_seen_from_barn_bluff.jpg","float_intro":"","image_intro_alt":"Cradle Mountain","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/800px_cradle_mountain_seen_from_barn_bluff.jpg","float_fulltext":"none","image_fulltext_alt":"Cradle Mountain","image_fulltext_caption":"Source: https:\/\/commons.wikimedia.org\/wiki\/File:Rainforest,bluemountainsNSW.jpg Author: Alan J.W.C. License: GNU Free Documentation License v . 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (12, 110, 'Custom Module', 'custom-module', '

    This module allows you to create your own Module using a WYSIWYG editor. Help

    {loadmodule custom,Custom}
    ', '', 1, 66, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (13, 111, 'Directions', 'directions', '

    Here''s how to find our shop.

    By car

    Drive along Main Street to the intersection with First Avenue. Look for our sign.

    By foot

    From the center of town, walk north on Main Street until you see our sign.

    By bus

    Take the #73 Bus to the last stop. We are on the north east corner.

    ', '', 1, 29, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 2, '', '', 1, 0, '', 0, '*', ''); @@ -423,7 +423,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext]
  • Support Forums
  • Documentation
  • Professionals
  • -
  • Books
  • +
  • Books
  • ', '', 1, 19, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 8, '', '', 1, 0, '', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (22, 120, 'Getting Started', 'getting-started', '

    It''s easy to get started creating your website. Knowing some of the basics will help.

    What is a Content Management System?

    @@ -464,7 +464,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext]
  • Unexpected behavior--anything that is working differently than it did in 2.5.
  • Report problems

    -

    If you find a problem please report it to the CMS Issue Tracker. You will need to register for a github.com account if you don''t have one.

    +

    If you find a problem please report it to the CMS Issue Tracker. You will need to register for a github.com account if you don''t have one.

    More Testing Ideas

    • Pick one module or view and test all of the parameters.
    • @@ -476,10 +476,10 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext]
    • Try with SEF URLS on or off and also with Apache rewrite on or off (if you are on Apache).
    • Try different combinations of browsers (Chrome, IE, FireFox, Opera to start) and operating systems (Mac, Windows, Linux).
    • Yes grammar and spelling errors are bugs too -- just keep in mind that we use British spelling.
    • -
    • Visit the Feature Tracker and test a new feature.
    • +
    • Visit the Feature Tracker and test a new feature.

    Testing changes

    -

    You can also help Joomla by testing bug fixes and new features. A useful tool is the patchtester component which helps to simplify and automate the process. Report your feedback on the CMS Issue Tracker. If you enjoy helping Joomla this way, you may want to join the Joomla Bug Squad.

    +

    You can also help Joomla by testing bug fixes and new features. A useful tool is the patchtester component which helps to simplify and automate the process. Report your feedback on the CMS Issue Tracker. If you enjoy helping Joomla this way, you may want to join the Joomla Bug Squad.

    ', '', 1, 19, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 716, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":""}', 4, 2, '', '', 1, 73, '{"robots":"","author":"","rights":"","xreference":""}', 1, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (25, 123, 'Koala', 'koala', '

    @@ -487,7 +487,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext]

    ', ' -

    ', 1, 72, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/180px_koala_ag1.jpg","float_intro":"","image_intro_alt":"Koala Thumbnail","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/800px_koala_ag1.jpg","float_fulltext":"","image_fulltext_alt":"Koala Climbing Tree","image_fulltext_caption":"Source: http:\/\/commons.wikimedia.org\/wiki\/File:Koala-ag1.jpg Author: Arnaud Gaillard License: Creative Commons Share Alike Attribution Generic 1.0"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 72, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/180px_koala_ag1.jpg","float_intro":"","image_intro_alt":"Koala Thumbnail","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/800px_koala_ag1.jpg","float_fulltext":"","image_fulltext_alt":"Koala Climbing Tree","image_fulltext_caption":"Source: https:\/\/commons.wikimedia.org\/wiki\/File:Koala-ag1.jpg Author: Arnaud Gaillard License: Creative Commons Share Alike Attribution Generic 1.0"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (26, 124, 'Language Switcher', 'language-switcher', '

    The language switcher module allows you to take advantage of the language tags that are available when content, modules and menu links are created.

    This module displays a list of available Content Languages for switching between them.

    When switching languages, it redirects to the Home page, or associated menu item, defined for the chosen language. Thereafter, the navigation will be the one defined for that language.

    @@ -511,10 +511,10 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext]

    ', '', 1, 19, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 10, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (33, 131, 'Phyllopteryx', 'phyllopteryx', '

    ', ' -

    ', 1, 72, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/200px_phyllopteryx_taeniolatus1.jpg","float_intro":"","image_intro_alt":"Phyllopteryx","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/800px_phyllopteryx_taeniolatus1.jpg","float_fulltext":"","image_fulltext_alt":"Phyllopteryx","image_fulltext_caption":"Source: http:\/\/en.wikipedia.org\/wiki\/File:Phyllopteryx_taeniolatus1.jpg Author: Richard Ling License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 72, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/200px_phyllopteryx_taeniolatus1.jpg","float_intro":"","image_intro_alt":"Phyllopteryx","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/800px_phyllopteryx_taeniolatus1.jpg","float_fulltext":"","image_fulltext_alt":"Phyllopteryx","image_fulltext_caption":"Source: https:\/\/en.wikipedia.org\/wiki\/File:Phyllopteryx_taeniolatus1.jpg Author: Richard Ling License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (34, 132, 'Pinnacles', 'pinnacles', '

    ', ' -

    ', 1, 73, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/120px_pinnacles_western_australia.jpg","float_intro":"","image_intro_alt":"Kings Canyon","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/800px_pinnacles_western_australia.jpg","float_fulltext":"","image_fulltext_alt":"Kings Canyon","image_fulltext_caption":"Source: http:\/\/commons.wikimedia.org\/wiki\/File:Pinnacles_Western_Australia.jpg Author: Martin Gloss License: GNU Free Documentation license v 1.2 or later."}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 73, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/120px_pinnacles_western_australia.jpg","float_intro":"","image_intro_alt":"Kings Canyon","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/800px_pinnacles_western_australia.jpg","float_fulltext":"","image_fulltext_alt":"Kings Canyon","image_fulltext_caption":"Source: https:\/\/commons.wikimedia.org\/wiki\/File:Pinnacles_Western_Australia.jpg Author: Martin Gloss License: GNU Free Documentation license v 1.2 or later."}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (35, 133, 'Professionals', 'professionals', '

    Joomla! 2.5 continues development of the Joomla Framework and CMS as a powerful and flexible way to bring your vision of the web to reality. With the administrator now fully MVC, the ability to control its look and the management of extensions is now complete.

    ', '

    Working with multiple template styles and overrides for the same views, creating the design you want is easier than it has ever been. Limiting support to PHP 5.2.4 and above makes Joomla lighter and faster than ever. Languages files can now be overridden without having your changes lost during an upgrade. With the proper xml your users update extensions with a single click.

    @@ -563,7 +563,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext] INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (43, 141, 'Spotted Quoll', 'spotted-quoll', '

    ', ' -

    ', 1, 72, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/220px_spottedquoll_2005_seanmcclean.jpg","float_intro":"","image_intro_alt":"Spotted Quoll","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/789px_spottedquoll_2005_seanmcclean.jpg","float_fulltext":"","image_fulltext_alt":"Spotted Quoll","image_fulltext_caption":"Source: http:\/\/en.wikipedia.org\/wiki\/File:SpottedQuoll_2005_SeanMcClean.jpg Author: Sean McClean License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 72, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/220px_spottedquoll_2005_seanmcclean.jpg","float_intro":"","image_intro_alt":"Spotted Quoll","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/789px_spottedquoll_2005_seanmcclean.jpg","float_fulltext":"","image_fulltext_alt":"Spotted Quoll","image_fulltext_caption":"Source: https:\/\/en.wikipedia.org\/wiki\/File:SpottedQuoll_2005_SeanMcClean.jpg Author: Sean McClean License: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 4, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (44, 142, 'Statistics Module', 'statistics', '

    This module shows information about your server installation together with statistics on the Web site users, number of Articles in your database and the number of Web links you provide.

    {loadmodule mod_stats,Statistics}
    ', '', 1, 67, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 5, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (45, 143, 'Syndicate Module', 'syndicate-module', '

    The syndicate module will display a link that allows users to take a feed from your site. It will only display on pages for which feeds are possible. That means it will not display on single article, or contact pages, such as this one. Help

    @@ -582,7 +582,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext]
  • Redirect Help
  • ', '', 1, 25, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (47, 145, 'The Joomla! Community', 'the-joomla-community', '

    Joomla means All Together, and it is a community of people all working and having fun together that makes Joomla possible. Thousands of people each year participate in the Joomla community, and we hope you will be one of them.

    -

    People with all kinds of skills, of all skill levels and from around the world are welcome to join in. Participate in the Joomla.org family of websites (the forum is a great place to start). Come to a Joomla! event. Join or start a Joomla! Users Group. Whether you are a developer, site administrator, designer, end user or fan, there are ways for you to participate and contribute.

    ', '', 1, 19, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    People with all kinds of skills, of all skill levels and from around the world are welcome to join in. Participate in the Joomla.org family of websites (the forum is a great place to start). Come to a Joomla! event. Join or start a Joomla! Users Group. Whether you are a developer, site administrator, designer, end user or fan, there are ways for you to participate and contribute.

    ', '', 1, 19, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (48, 146, 'The Joomla! Project', 'the-joomla-project', '

    The Joomla Project consists of all of the people who make and support the Joomla Web Platform and Content Management System.

    Our mission is to provide a flexible platform for digital publishing and collaboration.

    The core values are:

    @@ -633,7 +633,7 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext]
    {loadmodule whosonline,Who''s Online}
    ', '', 1, 65, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (57, 155, 'Wobbegone', 'wobbegone', '

    ', ' -

    ', 1, 72, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/180px_wobbegong.jpg","float_intro":"","image_intro_alt":"Wobbegon","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/800px_wobbegong.jpg","float_fulltext":"","image_fulltext_alt":"Wobbegon","image_fulltext_caption":"Source: http:\/\/en.wikipedia.org\/wiki\/File:Wobbegong.jpg Author: Richard Ling Rights: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 72, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/animals\/180px_wobbegong.jpg","float_intro":"","image_intro_alt":"Wobbegon","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/animals\/800px_wobbegong.jpg","float_fulltext":"","image_fulltext_alt":"Wobbegon","image_fulltext_caption":"Source: https:\/\/en.wikipedia.org\/wiki\/File:Wobbegong.jpg Author: Richard Ling Rights: GNU Free Documentation License v 1.2 or later"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 1, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (58, 156, 'Wonderful Watermelon', 'wonderful-watermelon', '

    Watermelon is a wonderful and healthy treat. We grow the world''s sweetest watermelon. We have the largest watermelon patch in our country.

    ', '', 1, 30, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (59, 157, 'Wrapper Module', 'wrapper-module', '

    This module shows an iFrame window to specified location. Help

    {loadmodule wrapper,Wrapper}
    ', '', 1, 67, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 1, '', '', 1, 0, '', 0, '*', ''); @@ -652,10 +652,10 @@ INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext] ', '', 1, 25, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '', '', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 7, '', '', 1, 0, '', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (64, 162, 'Blue Mountain Rain Forest', 'blue-mountain-rain-forest', '

    ', ' -

    ', 1, 73, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/120px_rainforest_bluemountainsnsw.jpg","float_intro":"none","image_intro_alt":"Rain Forest Blue Mountains","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/727px_rainforest_bluemountainsnsw.jpg","float_fulltext":"","image_fulltext_alt":"Rain Forest Blue Mountains","image_fulltext_caption":"Source: http:\/\/commons.wikimedia.org\/wiki\/File:Rainforest,bluemountainsNSW.jpg Author: Adam J.W.C. License: GNU Free Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 73, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/120px_rainforest_bluemountainsnsw.jpg","float_intro":"none","image_intro_alt":"Rain Forest Blue Mountains","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/727px_rainforest_bluemountainsnsw.jpg","float_fulltext":"","image_fulltext_alt":"Rain Forest Blue Mountains","image_fulltext_caption":"Source: https:\/\/commons.wikimedia.org\/wiki\/File:Rainforest,bluemountainsNSW.jpg Author: Adam J.W.C. License: GNU Free Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 2, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (65, 163, 'Ormiston Pound', 'ormiston-pound', '

    ', ' -

    ', 1, 73, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/180px_ormiston_pound.jpg","float_intro":"none","image_intro_alt":"Ormiston Pound","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/800px_ormiston_pound.jpg","float_fulltext":"","image_fulltext_alt":"Ormiston Pound","image_fulltext_caption":"Source: http:\/\/commons.wikimedia.org\/wiki\/File:Ormiston_Pound.JPG Author: License: GNU Free Public Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); +

    ', 1, 73, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '{"image_intro":"images\/sampledata\/parks\/landscape\/180px_ormiston_pound.jpg","float_intro":"none","image_intro_alt":"Ormiston Pound","image_intro_caption":"","image_fulltext":"images\/sampledata\/parks\/landscape\/800px_ormiston_pound.jpg","float_fulltext":"","image_fulltext_alt":"Ormiston Pound","image_fulltext_caption":"Source: https:\/\/commons.wikimedia.org\/wiki\/File:Ormiston_Pound.JPG Author: License: GNU Free Public Documentation License"}', '{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}', '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', 1, 3, '', '', 1, 0, '{"robots":"","author":"","rights":"","xreference":""}', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (66, 165, 'Latest Users Module', 'latest-users-module', '

    This module displays the latest registered users. Help

    {loadmodule users_latest,Users Latest}
    ', '', 1, 65, '2011-01-01 00:00:00', 793, 'Joomla', '1900-01-01 00:00:00', 0, 0, '1900-01-01 00:00:00', '2011-01-01 00:00:00', '1900-01-01 00:00:00', '', '', '{"show_title":"1","link_titles":"","show_intro":"","show_category":"1","link_category":"1","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}', 1, 3, '', '', 1, 0, '', 0, '*', ''); INSERT [#__content] ([id], [asset_id], [title], [alias], [introtext], [fulltext], [state], [catid], [created], [created_by], [created_by_alias], [modified], [modified_by], [checked_out], [checked_out_time], [publish_up], [publish_down], [images], [urls], [attribs], [version], [ordering], [metakey], [metadesc], [access], [hits], [metadata], [featured], [language], [xreference]) VALUES (67, 168, 'What''s New in 1.5?', 'whats-new-in-15', '

    This article deliberately archived as an example.

    As with previous releases, Joomla! provides a unified and easy-to-use framework for delivering content for Web sites of all kinds. To support the changing nature of the Internet and emerging Web technologies, Joomla! required substantial restructuring of its core functionality and we also used this effort to simplify many challenges within the current user interface. Joomla! 1.5 has many new features.

    @@ -719,7 +719,7 @@ INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [t INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (21, 'menu', 'com_finder', 'Smart Search', '', 'Smart Search', 'index.php?option=com_finder', 'component', 0, 1, 1, 27, 0, '1900-01-01 00:00:00', 0, 0, 'class:finder', 0, '', 33, 34, 0, '*', 1); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (22, 'menu', 'com_joomlaupdate', 'Joomla! Update', '', 'Joomla! Update', 'index.php?option=com_joomlaupdate', 'component', 0, 1, 1, 28, 0, '1900-01-01 00:00:00', 0, 0, 'class:joomlaupdate', 0, '', 33, 34, 0, '*', 1); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (201, 'usermenu', 'Your Profile', 'your-profile', '', 'your-profile', 'index.php?option=com_users&view=profile', 'component', 1, 1, 1, 25, 0, '1900-01-01 00:00:00', 0, 2, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 95, 96, 0, '*', 0); -INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (207, 'top', 'Joomla.org', 'joomlaorg', '', 'joomlaorg', 'http://joomla.org', 'url', 1, 1, 1, 0, 0, '1900-01-01 00:00:00', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}', 93, 94, 0, '*', 0); +INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (207, 'top', 'Joomla.org', 'joomlaorg', '', 'joomlaorg', 'https://www.joomla.org/', 'url', 1, 1, 1, 0, 0, '1900-01-01 00:00:00', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":""}', 93, 94, 0, '*', 0); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (229, 'frontendviews', 'Single Contact', 'single-contact', '', 'single-contact', 'index.php?option=com_contact&view=contact&id=1', 'component', 1, 1, 1, 8, 0, '1900-01-01 00:00:00', 0, 1, '', 0, '{"show_category_crumb":"","presentation_style":"","show_contact_category":"","show_contact_list":"","show_name":"","show_position":"","show_email":"","show_street_address":"","show_suburb":"","show_state":"","show_postcode":"","show_country":"","show_telephone":"","show_mobile":"","show_fax":"","show_webpage":"","show_misc":"","show_image":"","allow_vcard":"","show_articles":"","show_links":"","linka_name":"","linkb_name":"","linkc_name":"","linkd_name":"","linke_name":"","show_email_form":"","show_email_copy":"","banned_email":"","banned_subject":"","banned_text":"","validate_session":"","custom_reply":"","redirect":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 161, 162, 0, '*', 0); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (233, 'mainmenu', 'Login', 'login', '', 'login', 'index.php?option=com_users&view=login', 'component', 1, 1, 1, 25, 0, '1900-01-01 00:00:00', 0, 1, '', 0, '{"menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 3, 4, 0, '*', 0); INSERT [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) VALUES (234, 'parks', 'Park Blog', 'park-blog', '', 'park-blog', 'index.php?option=com_content&view=category&layout=blog&id=27', 'component', 1, 1, 1, 22, 0, '1900-01-01 00:00:00', 0, 1, '', 114, '{"maxLevel":"","show_empty_categories":"","show_description":"1","show_description_image":"1","show_category_title":"","show_cat_num_articles":"","num_leading_articles":"1","num_intro_articles":"4","num_columns":"1","num_links":"4","multi_column_order":"","orderby_pri":"","orderby_sec":"","order_date":"","show_pagination":"2","show_noauth":"","show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_readmore":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_hits":"","show_feed_link":"1","feed_summary":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","show_page_heading":0,"page_title":"","page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 99, 100, 0, 'en-GB', 0); @@ -878,7 +878,7 @@ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (37, 'Syndicate Feeds', '', '', 1, 'syndicateload', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_syndicate', 1, 1, '{"text":"Feed Entries","format":"rss","layout":"","moduleclass_sfx":"","cache":"0"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (38, 'Users Latest', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_users_latest', 1, 1, '{"shownumber":"5","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"static"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (39, 'Who''s Online', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_whosonline', 1, 1, '{"showmode":"2","linknames":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 0, '*'); -INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (40, 'Wrapper', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_wrapper', 1, 1, '{"url":"http:\/\/www.youtube.com\/embed\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); +INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (40, 'Wrapper', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_wrapper', 1, 1, '{"url":"https:\/\/www.youtube.com\/embed\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (41, 'Footer', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_footer', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (44, 'Login', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_login', 1, 1, '{"pretext":"","posttext":"","login":"280","logout":"280","greeting":"1","name":"0","usesecure":"0","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (45, 'Menu Example', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"mainmenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'); @@ -1157,7 +1157,7 @@ INSERT [#__ucm_content] ([core_content_id], [core_type_alias], [core_title], [co
  • Unexpected behavior--anything that is working differently than it did in 2.5.
  • Report problems

    -

    If you find a problem please report it to the CMS Issue Tracker. You will need to register for a github.com account if you don''t have one.

    +

    If you find a problem please report it to the CMS Issue Tracker. You will need to register for a github.com account if you don''t have one.

    More Testing Ideas

    • Pick one module or view and test all of the parameters.
    • @@ -1169,10 +1169,10 @@ INSERT [#__ucm_content] ([core_content_id], [core_type_alias], [core_title], [co
    • Try with SEF URLS on or off and also with Apache rewrite on or off (if you are on Apache).
    • Try different combinations of browsers (Chrome, IE, FireFox, Opera to start) and operating systems (Mac, Windows, Linux).
    • Yes grammar and spelling errors are bugs too -- just keep in mind that we use British spelling.
    • -
    • Visit the Feature Tracker and test a new feature.
    • +
    • Visit the Feature Tracker and test a new feature.

    Testing changes

    -

    You can also help Joomla by testing bug fixes and new features. A useful tool is the patchtester component which helps to simplify and automate the process. Report your feedback on the CMS Issue Tracker. If you enjoy helping Joomla this way, you may want to join the Joomla Bug Squad.

    +

    You can also help Joomla by testing bug fixes and new features. A useful tool is the patchtester component which helps to simplify and automate the process. Report your feedback on the CMS Issue Tracker. If you enjoy helping Joomla this way, you may want to join the Joomla Bug Squad.

    ', 1, '', 0, 1, '{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":""}', 1, '{"robots":"","author":"","rights":"","xreference":""}', 716, '', '2011-01-01 00:00:00', 0, CAST(0x0050D200B3370B0000 AS DateTime2), '*', '2011-01-01 00:00:00', '1900-01-01 00:00:00', 24, 180, '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}', 59, 3, 2, '', '', 19, '', 1); INSERT [#__ucm_content] ([core_content_id], [core_type_alias], [core_title], [core_alias], [core_body], [core_state], [core_checked_out_time], [core_checked_out_user_id], [core_access], [core_params], [core_featured], [core_metadata], [core_created_user_id], [core_created_by_alias], [core_created_time], [core_modified_user_id], [core_modified_time], [core_language], [core_publish_up], [core_publish_down], [core_content_item_id], [asset_id], [core_images], [core_urls], [core_hits], [core_version], [core_ordering], [core_metakey], [core_metadesc], [core_catid], [core_xreference], [core_type_id]) VALUES (2, 'com_content.article', 'Similar Tags', 'archive-module-3', '

    This module shows a list of items that have a similar list of tags to the current item.

    {loadmodule tags_similar,Similar Tags}
    ', 1, '', 0, 1, '{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":""}', 0, '{"robots":"","author":"","rights":"","xreference":""}', 716, '', '2011-01-01 00:00:00', 0, CAST(0x0093D200B3370B0000 AS DateTime2), '*', '2011-01-01 00:00:00', '1900-01-01 00:00:00', 72, 182, '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}', '{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}', 1, 3, 0, 'modules, content', '', 64, '', 1); From 0f63b60aff328026f6b6422da7721a0d4b77d159 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 12 Mar 2016 16:16:39 +0000 Subject: [PATCH 083/352] https in language files --- .../language/en-GB/en-GB.plg_captcha_recaptcha.ini | 2 +- .../language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini | 2 +- .../language/en-GB/en-GB.plg_editors_codemirror.ini | 2 +- .../language/en-GB/en-GB.plg_system_languagecode.ini | 2 +- administrator/language/en-GB/en-GB.plg_system_p3p.ini | 2 +- .../language/en-GB/en-GB.plg_twofactorauth_totp.ini | 6 +++--- .../language/en-GB/en-GB.plg_twofactorauth_yubikey.ini | 2 +- .../language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini index 0370d3570e870..fe797151c5b34 100644 --- a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini +++ b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini @@ -3,7 +3,7 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 -PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to http://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select CAPTCHA - reCAPTCHA as the CAPTCHA." +PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to https://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select CAPTCHA - reCAPTCHA as the CAPTCHA." PLG_CAPTCHA_RECAPTCHA="CAPTCHA - reCAPTCHA" ; Params diff --git a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini index 5c681eb793750..c52a378378a8a 100644 --- a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini +++ b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini @@ -3,5 +3,5 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 -PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to http://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select Captcha - reCaptcha as the Captcha." +PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to https://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select Captcha - reCaptcha as the Captcha." PLG_CAPTCHA_RECAPTCHA="Captcha - ReCaptcha" diff --git a/administrator/language/en-GB/en-GB.plg_editors_codemirror.ini b/administrator/language/en-GB/en-GB.plg_editors_codemirror.ini index a79224c0da8d8..d4b74f7beb303 100644 --- a/administrator/language/en-GB/en-GB.plg_editors_codemirror.ini +++ b/administrator/language/en-GB/en-GB.plg_editors_codemirror.ini @@ -15,7 +15,7 @@ PLG_CODEMIRROR_FIELD_AUTOFOCUS_DESC="Auto focus." PLG_CODEMIRROR_FIELD_AUTOFOCUS_LABEL="Auto Focus" PLG_CODEMIRROR_FIELD_CODEFOLDING_DESC="Allow blocks of code to be folded." PLG_CODEMIRROR_FIELD_CODEFOLDING_LABEL="Code Folding" -PLG_CODEMIRROR_FIELD_FONT_FAMILY_DESC="The font to use in the editor. If not installed, will be loaded from http://www.google.com/webfonts." +PLG_CODEMIRROR_FIELD_FONT_FAMILY_DESC="The font to use in the editor. If not installed, will be loaded from https://www.google.com/fonts/." PLG_CODEMIRROR_FIELD_FONT_FAMILY_LABEL="Font" PLG_CODEMIRROR_FIELD_FONT_SIZE_DESC="The size of the font in the editor." PLG_CODEMIRROR_FIELD_FONT_SIZE_LABEL="Font Size (px)" diff --git a/administrator/language/en-GB/en-GB.plg_system_languagecode.ini b/administrator/language/en-GB/en-GB.plg_system_languagecode.ini index 9aa8da151e654..63ab9c1dab18b 100644 --- a/administrator/language/en-GB/en-GB.plg_system_languagecode.ini +++ b/administrator/language/en-GB/en-GB.plg_system_languagecode.ini @@ -7,4 +7,4 @@ PLG_SYSTEM_LANGUAGECODE="System - Language Code" PLG_SYSTEM_LANGUAGECODE_FIELD_DESC="Changes the language code used for the %s language." PLG_SYSTEM_LANGUAGECODE_FIELDSET_DESC="Changes the language code for the generated HTML document. Example of use: You have installed the fr-FR language pack and want the Search Engines to recognise the page as aimed at French-speaking Canada. Add the tag 'fr-CA' to the corresponding field for 'fr-FR' to resolve this." PLG_SYSTEM_LANGUAGECODE_FIELDSET_LABEL="Language Codes" -PLG_SYSTEM_LANGUAGECODE_XML_DESCRIPTION="Provides the ability to change the language code in the generated HTML document to improve SEO.
    The fields will appear when the plugin is enabled and saved.
    More information at W3.org." +PLG_SYSTEM_LANGUAGECODE_XML_DESCRIPTION="Provides the ability to change the language code in the generated HTML document to improve SEO.
    The fields will appear when the plugin is enabled and saved.
    More information at W3.org." diff --git a/administrator/language/en-GB/en-GB.plg_system_p3p.ini b/administrator/language/en-GB/en-GB.plg_system_p3p.ini index 9b7ee58fab8d6..019aa56b8928f 100644 --- a/administrator/language/en-GB/en-GB.plg_system_p3p.ini +++ b/administrator/language/en-GB/en-GB.plg_system_p3p.ini @@ -5,5 +5,5 @@ PLG_P3P_XML_DESCRIPTION="The system P3P policy plugin allows Joomla! to send a customised string of P3P policy tags in the HTTP header. This is required for the sessions to work on certain browsers, ie Internet Explorer 6 and 7." PLG_SYSTEM_P3P="System - P3P Policy" -PLG_P3P_HEADER_DESCRIPTION="Enter your P3P policy tags. For more information consult The Platform for Privacy Preferences specification, http://www.w3.org/TR/P3P/" +PLG_P3P_HEADER_DESCRIPTION="Enter your P3P policy tags. For more information consult The Platform for Privacy Preferences specification, https://www.w3.org/TR/P3P/" PLG_P3P_HEADER_LABEL="P3P Tags" \ No newline at end of file diff --git a/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini b/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini index fff3db4ce6536..382953cc55e81 100644 --- a/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini +++ b/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini @@ -8,7 +8,7 @@ PLG_TWOFACTORAUTH_TOTP_ERR_VALIDATIONFAILED="You did not enter a valid security PLG_TWOFACTORAUTH_TOTP_INTRO="This feature allows you to use Google Authenticator, or a compatible application, for two factor authentication. In addition to your username and password you will also need to provide a six digit security code generated by Google Authenticator to be able to login to this site. The security code is rotated every 30 seconds. This provides extra protection against hackers logging in to your account even if they were able to get hold of your password." PLG_TWOFACTORAUTH_TOTP_METHOD_TITLE="Google Authenticator" PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_TITLE="Two Factor Authentication is Available" -PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY="Joomla! comes with a built-in two factor authentication system. It secures your site login with a secondary secret code that's changing every 30 seconds. You can use your mobile device and the Google Authenticator app to produce that code.
    By selecting the button below:
    • Joomla! will enable the two factor authentication plugins
    • Two Factor Authentication is going to be available for all users.
    • Each user can configure Two Factor Authentication in User Details.
    • You can always disable Two Factor Authentication plugin, or configure it for Backend usage only.
    • You will be taken to your user profile page where you can find more information on two factor authentication and enable it for your user account.
    " +PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY="Joomla! comes with a built-in two factor authentication system. It secures your site login with a secondary secret code that's changing every 30 seconds. You can use your mobile device and the Google Authenticator app to produce that code.
    By selecting the button below:
    • Joomla! will enable the two factor authentication plugins
    • Two Factor Authentication is going to be available for all users.
    • Each user can configure Two Factor Authentication in User Details.
    • You can always disable Two Factor Authentication plugin, or configure it for Backend usage only.
    • You will be taken to your user profile page where you can find more information on two factor authentication and enable it for your user account.
    " PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_ACTION="Enable two factor authentication" PLG_TWOFACTORAUTH_TOTP_SECTION_ADMIN="Administrator (Backend)" PLG_TWOFACTORAUTH_TOTP_SECTION_BOTH="Both" @@ -18,10 +18,10 @@ PLG_TWOFACTORAUTH_TOTP_SECTION_SITE="Site (Frontend)" PLG_TWOFACTORAUTH_TOTP_STEP1_HEAD="Step 1 - Get Google Authenticator" PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM1="Official Google Authenticator app for Android, iOS and BlackBerry" ; Check the URL and change the part hl=en to your language tag if this is available (example hl=de; hl=zh-cn; hl=zh-tw) -PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM1_LINK="http://support.google.com/accounts/bin/answer.py?hl=en&answer=1066447" +PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM1_LINK="https://support.google.com/accounts/bin/answer.py?hl=en&answer=1066447" PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM2="Compatible clients for other devices and operating system (listed in Wikipedia)." ; Change and check this link if there is a translation in your language available. (current: German, Spanish, French, Japanese, Polish) -PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM2_LINK="http://en.wikipedia.org/wiki/Google_Authenticator#Implementation" +PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM2_LINK="https://en.wikipedia.org/wiki/Google_Authenticator#Implementation" PLG_TWOFACTORAUTH_TOTP_STEP1_TEXT="Download and install Google Authenticator, or a compatible application, on your smartphone or desktop. Use one of the following:" PLG_TWOFACTORAUTH_TOTP_STEP1_WARN="Please remember to sync your device's clock with a time-server. Time drift in your device may cause an inability to log in to your site." PLG_TWOFACTORAUTH_TOTP_STEP2_ACCOUNT="Account" diff --git a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini index 11b6943154906..4dab27b22863e 100644 --- a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini +++ b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini @@ -18,5 +18,5 @@ PLG_TWOFACTORAUTH_YUBIKEY_SECTION_SITE="Site (Frontend)" PLG_TWOFACTORAUTH_YUBIKEY_SECURITYCODE="Security Code" PLG_TWOFACTORAUTH_YUBIKEY_STEP1_HEAD="Set up" PLG_TWOFACTORAUTH_YUBIKEY_STEP1_TEXT="Please insert your YubiKey device into your computer's USB port. Select the Security Code field below. Then touch the gold disk on your YubiKey device for one second. Afterwards, please save your user profile. If the code generated by your YubiKey is validated by YubiCloud the Two Factor Authentication feature will be enabled and this YubiKey will be linked with your user account." -PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from http://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." +PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." diff --git a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini index d69dc419a4c9c..3fb5546b60ac3 100644 --- a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini +++ b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini @@ -4,4 +4,4 @@ ; Note : All ini files need to be saved as UTF-8 PLG_TWOFACTORAUTH_YUBIKEY="Two Factor Authentication - YubiKey" -PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from http://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." +PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." From a12f6273a188fcd054c042f004ee67ea1b192771 Mon Sep 17 00:00:00 2001 From: sapphireweb Date: Sat, 12 Mar 2016 09:01:44 -0800 Subject: [PATCH 084/352] Changing line 230 on cms.php The current code, if (!strlen($msg)) still allows blank messages to be added to the messageQue. Changing line 230 to, if (!strlen(trim($msg))) removes whitespace before checking the length, insuring that a message full just spaces won't be added, --- libraries/cms/application/cms.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/cms/application/cms.php b/libraries/cms/application/cms.php index ad46c24904b58..8e50ee6f282c2 100644 --- a/libraries/cms/application/cms.php +++ b/libraries/cms/application/cms.php @@ -227,7 +227,7 @@ public function checkSession() public function enqueueMessage($msg, $type = 'message') { // Don't add empty messages. - if (!strlen($msg)) + if (!strlen(trim($msg))) { return; } From d4c1888c83f3e6c28a24e87831dc12392a1954a8 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 12 Mar 2016 17:43:43 +0000 Subject: [PATCH 085/352] QQ and remove link from tooltip --- .../language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini | 2 +- administrator/language/en-GB/en-GB.plg_editors_codemirror.ini | 2 +- administrator/language/en-GB/en-GB.plg_system_languagecode.ini | 2 +- administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini | 2 +- .../language/en-GB/en-GB.plg_twofactorauth_yubikey.ini | 2 +- .../language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini index c52a378378a8a..f84c0647f5d96 100644 --- a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini +++ b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini @@ -3,5 +3,5 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 -PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to https://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select Captcha - reCaptcha as the Captcha." +PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to https://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select Captcha - reCaptcha as the Captcha." PLG_CAPTCHA_RECAPTCHA="Captcha - ReCaptcha" diff --git a/administrator/language/en-GB/en-GB.plg_editors_codemirror.ini b/administrator/language/en-GB/en-GB.plg_editors_codemirror.ini index d4b74f7beb303..2f38710d7e8b1 100644 --- a/administrator/language/en-GB/en-GB.plg_editors_codemirror.ini +++ b/administrator/language/en-GB/en-GB.plg_editors_codemirror.ini @@ -15,7 +15,7 @@ PLG_CODEMIRROR_FIELD_AUTOFOCUS_DESC="Auto focus." PLG_CODEMIRROR_FIELD_AUTOFOCUS_LABEL="Auto Focus" PLG_CODEMIRROR_FIELD_CODEFOLDING_DESC="Allow blocks of code to be folded." PLG_CODEMIRROR_FIELD_CODEFOLDING_LABEL="Code Folding" -PLG_CODEMIRROR_FIELD_FONT_FAMILY_DESC="The font to use in the editor. If not installed, will be loaded from https://www.google.com/fonts/." +PLG_CODEMIRROR_FIELD_FONT_FAMILY_DESC="The font to use in the editor. If not installed, will be loaded from https://www.google.com/fonts/." PLG_CODEMIRROR_FIELD_FONT_FAMILY_LABEL="Font" PLG_CODEMIRROR_FIELD_FONT_SIZE_DESC="The size of the font in the editor." PLG_CODEMIRROR_FIELD_FONT_SIZE_LABEL="Font Size (px)" diff --git a/administrator/language/en-GB/en-GB.plg_system_languagecode.ini b/administrator/language/en-GB/en-GB.plg_system_languagecode.ini index 63ab9c1dab18b..76f76908a603b 100644 --- a/administrator/language/en-GB/en-GB.plg_system_languagecode.ini +++ b/administrator/language/en-GB/en-GB.plg_system_languagecode.ini @@ -7,4 +7,4 @@ PLG_SYSTEM_LANGUAGECODE="System - Language Code" PLG_SYSTEM_LANGUAGECODE_FIELD_DESC="Changes the language code used for the %s language." PLG_SYSTEM_LANGUAGECODE_FIELDSET_DESC="Changes the language code for the generated HTML document. Example of use: You have installed the fr-FR language pack and want the Search Engines to recognise the page as aimed at French-speaking Canada. Add the tag 'fr-CA' to the corresponding field for 'fr-FR' to resolve this." PLG_SYSTEM_LANGUAGECODE_FIELDSET_LABEL="Language Codes" -PLG_SYSTEM_LANGUAGECODE_XML_DESCRIPTION="Provides the ability to change the language code in the generated HTML document to improve SEO.
    The fields will appear when the plugin is enabled and saved.
    More information at W3.org." +PLG_SYSTEM_LANGUAGECODE_XML_DESCRIPTION="Provides the ability to change the language code in the generated HTML document to improve SEO.
    The fields will appear when the plugin is enabled and saved.
    More information at W3.org." diff --git a/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini b/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini index 382953cc55e81..c13b21b58a6cc 100644 --- a/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini +++ b/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini @@ -8,7 +8,7 @@ PLG_TWOFACTORAUTH_TOTP_ERR_VALIDATIONFAILED="You did not enter a valid security PLG_TWOFACTORAUTH_TOTP_INTRO="This feature allows you to use Google Authenticator, or a compatible application, for two factor authentication. In addition to your username and password you will also need to provide a six digit security code generated by Google Authenticator to be able to login to this site. The security code is rotated every 30 seconds. This provides extra protection against hackers logging in to your account even if they were able to get hold of your password." PLG_TWOFACTORAUTH_TOTP_METHOD_TITLE="Google Authenticator" PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_TITLE="Two Factor Authentication is Available" -PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY="Joomla! comes with a built-in two factor authentication system. It secures your site login with a secondary secret code that's changing every 30 seconds. You can use your mobile device and the Google Authenticator app to produce that code.
    By selecting the button below:
    • Joomla! will enable the two factor authentication plugins
    • Two Factor Authentication is going to be available for all users.
    • Each user can configure Two Factor Authentication in User Details.
    • You can always disable Two Factor Authentication plugin, or configure it for Backend usage only.
    • You will be taken to your user profile page where you can find more information on two factor authentication and enable it for your user account.
    " +PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY="Joomla! comes with a built-in two factor authentication system. It secures your site login with a secondary secret code that's changing every 30 seconds. You can use your mobile device and the Google Authenticator app to produce that code.
    By selecting the button below:
    • Joomla! will enable the two factor authentication plugins
    • Two Factor Authentication is going to be available for all users.
    • Each user can configure Two Factor Authentication in User Details.
    • You can always disable Two Factor Authentication plugin, or configure it for Backend usage only.
    • You will be taken to your user profile page where you can find more information on two factor authentication and enable it for your user account.
    " PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_ACTION="Enable two factor authentication" PLG_TWOFACTORAUTH_TOTP_SECTION_ADMIN="Administrator (Backend)" PLG_TWOFACTORAUTH_TOTP_SECTION_BOTH="Both" diff --git a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini index 4dab27b22863e..b177f642ef1ff 100644 --- a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini +++ b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini @@ -18,5 +18,5 @@ PLG_TWOFACTORAUTH_YUBIKEY_SECTION_SITE="Site (Frontend)" PLG_TWOFACTORAUTH_YUBIKEY_SECURITYCODE="Security Code" PLG_TWOFACTORAUTH_YUBIKEY_STEP1_HEAD="Set up" PLG_TWOFACTORAUTH_YUBIKEY_STEP1_TEXT="Please insert your YubiKey device into your computer's USB port. Select the Security Code field below. Then touch the gold disk on your YubiKey device for one second. Afterwards, please save your user profile. If the code generated by your YubiKey is validated by YubiCloud the Two Factor Authentication feature will be enabled and this YubiKey will be linked with your user account." -PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." +PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." diff --git a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini index 3fb5546b60ac3..77ae501625dec 100644 --- a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini +++ b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini @@ -4,4 +4,4 @@ ; Note : All ini files need to be saved as UTF-8 PLG_TWOFACTORAUTH_YUBIKEY="Two Factor Authentication - YubiKey" -PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." +PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." From 6a32170b2e1f02ca28ac693b9e0e4707f0eae62e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyril=20Rez=C3=A9?= Date: Sat, 12 Mar 2016 20:39:30 +0100 Subject: [PATCH 086/352] FIX "Hide Sidebar" tooltip when already hidden Fix the "Hide Sidebar" tooltip text, after changing page with sidebar already hidden. The tooltip text Show or Hide sidebar is already set by toggleSidebar function. --- layouts/joomla/sidebars/toggle.php | 1 - 1 file changed, 1 deletion(-) diff --git a/layouts/joomla/sidebars/toggle.php b/layouts/joomla/sidebars/toggle.php index 4692618d7a06d..ff2bab50fac24 100644 --- a/layouts/joomla/sidebars/toggle.php +++ b/layouts/joomla/sidebars/toggle.php @@ -16,7 +16,6 @@
    From 1337b48c329441716a6c1889decfbe91120d65d9 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 12 Mar 2016 20:19:19 +0000 Subject: [PATCH 087/352] remove target=_blank --- administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini | 2 +- .../language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini | 2 +- administrator/language/en-GB/en-GB.plg_system_languagecode.ini | 2 +- administrator/language/en-GB/en-GB.plg_system_p3p.ini | 2 +- administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini | 2 +- .../language/en-GB/en-GB.plg_twofactorauth_yubikey.ini | 2 +- .../language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini index fe797151c5b34..8a96affcda143 100644 --- a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini +++ b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini @@ -3,7 +3,7 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 -PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to https://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select CAPTCHA - reCAPTCHA as the CAPTCHA." +PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to https://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select CAPTCHA - reCAPTCHA as the CAPTCHA." PLG_CAPTCHA_RECAPTCHA="CAPTCHA - reCAPTCHA" ; Params diff --git a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini index f84c0647f5d96..6744581abba82 100644 --- a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini +++ b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini @@ -3,5 +3,5 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 -PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to https://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select Captcha - reCaptcha as the Captcha." +PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to https://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select Captcha - reCaptcha as the Captcha." PLG_CAPTCHA_RECAPTCHA="Captcha - ReCaptcha" diff --git a/administrator/language/en-GB/en-GB.plg_system_languagecode.ini b/administrator/language/en-GB/en-GB.plg_system_languagecode.ini index 76f76908a603b..c8c871eb220d4 100644 --- a/administrator/language/en-GB/en-GB.plg_system_languagecode.ini +++ b/administrator/language/en-GB/en-GB.plg_system_languagecode.ini @@ -7,4 +7,4 @@ PLG_SYSTEM_LANGUAGECODE="System - Language Code" PLG_SYSTEM_LANGUAGECODE_FIELD_DESC="Changes the language code used for the %s language." PLG_SYSTEM_LANGUAGECODE_FIELDSET_DESC="Changes the language code for the generated HTML document. Example of use: You have installed the fr-FR language pack and want the Search Engines to recognise the page as aimed at French-speaking Canada. Add the tag 'fr-CA' to the corresponding field for 'fr-FR' to resolve this." PLG_SYSTEM_LANGUAGECODE_FIELDSET_LABEL="Language Codes" -PLG_SYSTEM_LANGUAGECODE_XML_DESCRIPTION="Provides the ability to change the language code in the generated HTML document to improve SEO.
    The fields will appear when the plugin is enabled and saved.
    More information at W3.org." +PLG_SYSTEM_LANGUAGECODE_XML_DESCRIPTION="Provides the ability to change the language code in the generated HTML document to improve SEO.
    The fields will appear when the plugin is enabled and saved.
    More information at W3.org." diff --git a/administrator/language/en-GB/en-GB.plg_system_p3p.ini b/administrator/language/en-GB/en-GB.plg_system_p3p.ini index 019aa56b8928f..3adba5b6542de 100644 --- a/administrator/language/en-GB/en-GB.plg_system_p3p.ini +++ b/administrator/language/en-GB/en-GB.plg_system_p3p.ini @@ -5,5 +5,5 @@ PLG_P3P_XML_DESCRIPTION="The system P3P policy plugin allows Joomla! to send a customised string of P3P policy tags in the HTTP header. This is required for the sessions to work on certain browsers, ie Internet Explorer 6 and 7." PLG_SYSTEM_P3P="System - P3P Policy" -PLG_P3P_HEADER_DESCRIPTION="Enter your P3P policy tags. For more information consult The Platform for Privacy Preferences specification, https://www.w3.org/TR/P3P/" +PLG_P3P_HEADER_DESCRIPTION="Enter your P3P policy tags. For more information consult The Platform for Privacy Preferences specification, https://www.w3.org/TR/P3P/" PLG_P3P_HEADER_LABEL="P3P Tags" \ No newline at end of file diff --git a/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini b/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini index c13b21b58a6cc..879d46acb34f0 100644 --- a/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini +++ b/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini @@ -8,7 +8,7 @@ PLG_TWOFACTORAUTH_TOTP_ERR_VALIDATIONFAILED="You did not enter a valid security PLG_TWOFACTORAUTH_TOTP_INTRO="This feature allows you to use Google Authenticator, or a compatible application, for two factor authentication. In addition to your username and password you will also need to provide a six digit security code generated by Google Authenticator to be able to login to this site. The security code is rotated every 30 seconds. This provides extra protection against hackers logging in to your account even if they were able to get hold of your password." PLG_TWOFACTORAUTH_TOTP_METHOD_TITLE="Google Authenticator" PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_TITLE="Two Factor Authentication is Available" -PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY="Joomla! comes with a built-in two factor authentication system. It secures your site login with a secondary secret code that's changing every 30 seconds. You can use your mobile device and the Google Authenticator app to produce that code.
    By selecting the button below:
    • Joomla! will enable the two factor authentication plugins
    • Two Factor Authentication is going to be available for all users.
    • Each user can configure Two Factor Authentication in User Details.
    • You can always disable Two Factor Authentication plugin, or configure it for Backend usage only.
    • You will be taken to your user profile page where you can find more information on two factor authentication and enable it for your user account.
    " +PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY="Joomla! comes with a built-in two factor authentication system. It secures your site login with a secondary secret code that's changing every 30 seconds. You can use your mobile device and the Google Authenticator app to produce that code.
    By selecting the button below:
    • Joomla! will enable the two factor authentication plugins
    • Two Factor Authentication is going to be available for all users.
    • Each user can configure Two Factor Authentication in User Details.
    • You can always disable Two Factor Authentication plugin, or configure it for Backend usage only.
    • You will be taken to your user profile page where you can find more information on two factor authentication and enable it for your user account.
    " PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_ACTION="Enable two factor authentication" PLG_TWOFACTORAUTH_TOTP_SECTION_ADMIN="Administrator (Backend)" PLG_TWOFACTORAUTH_TOTP_SECTION_BOTH="Both" diff --git a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini index b177f642ef1ff..f47975710bc47 100644 --- a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini +++ b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini @@ -18,5 +18,5 @@ PLG_TWOFACTORAUTH_YUBIKEY_SECTION_SITE="Site (Frontend)" PLG_TWOFACTORAUTH_YUBIKEY_SECURITYCODE="Security Code" PLG_TWOFACTORAUTH_YUBIKEY_STEP1_HEAD="Set up" PLG_TWOFACTORAUTH_YUBIKEY_STEP1_TEXT="Please insert your YubiKey device into your computer's USB port. Select the Security Code field below. Then touch the gold disk on your YubiKey device for one second. Afterwards, please save your user profile. If the code generated by your YubiKey is validated by YubiCloud the Two Factor Authentication feature will be enabled and this YubiKey will be linked with your user account." -PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." +PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." diff --git a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini index 77ae501625dec..532704a0e5018 100644 --- a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini +++ b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini @@ -4,4 +4,4 @@ ; Note : All ini files need to be saved as UTF-8 PLG_TWOFACTORAUTH_YUBIKEY="Two Factor Authentication - YubiKey" -PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." +PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." From 49944d1e88ad5e6e628f26aefb2ec5fcbb6c9799 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 12 Mar 2016 20:21:13 +0000 Subject: [PATCH 088/352] remove link from P3P tooltip --- administrator/language/en-GB/en-GB.plg_system_p3p.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.plg_system_p3p.ini b/administrator/language/en-GB/en-GB.plg_system_p3p.ini index 3adba5b6542de..78a37b57bd595 100644 --- a/administrator/language/en-GB/en-GB.plg_system_p3p.ini +++ b/administrator/language/en-GB/en-GB.plg_system_p3p.ini @@ -5,5 +5,5 @@ PLG_P3P_XML_DESCRIPTION="The system P3P policy plugin allows Joomla! to send a customised string of P3P policy tags in the HTTP header. This is required for the sessions to work on certain browsers, ie Internet Explorer 6 and 7." PLG_SYSTEM_P3P="System - P3P Policy" -PLG_P3P_HEADER_DESCRIPTION="Enter your P3P policy tags. For more information consult The Platform for Privacy Preferences specification, https://www.w3.org/TR/P3P/" +PLG_P3P_HEADER_DESCRIPTION="Enter your P3P policy tags. For more information consult The Platform for Privacy Preferences specification, https://www.w3.org/TR/P3P/" PLG_P3P_HEADER_LABEL="P3P Tags" \ No newline at end of file From d3cc11ccc0817fe7bda8eb991065855703a5260a Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sun, 13 Mar 2016 10:58:48 +0100 Subject: [PATCH 089/352] Some CS Fixes for #9376 @alikon this here are some things to make the code more readable. --- modules/mod_tags_popular/helper.php | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/modules/mod_tags_popular/helper.php b/modules/mod_tags_popular/helper.php index 98f5ba1ec70a2..79a3faef8f7ba 100644 --- a/modules/mod_tags_popular/helper.php +++ b/modules/mod_tags_popular/helper.php @@ -97,16 +97,18 @@ public static function getList(&$params) $query->setLimit($maximum); $query->order('count DESC'); $equery = $db->getQuery(true) - ->select( - array( - 'a.tag_id', - 'a.count', - 'a.title', - 'a.access', - 'a.alias') + ->select( + array( + 'a.tag_id', + 'a.count', + 'a.title', + 'a.access', + 'a.alias', ) - ->from('(' . (string) $query . ') AS a') - ->order('a.title' . ' ' . $order_direction); + ) + ->from('(' . (string) $query . ') AS a') + ->order('a.title' . ' ' . $order_direction); + $query = $equery; } else From e9c2680cebca4b3f7508b17d9d38e907e6dcffab Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sun, 13 Mar 2016 11:30:15 +0000 Subject: [PATCH 090/352] only change http to https --- administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini | 2 +- .../language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini | 2 +- administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini | 2 +- .../language/en-GB/en-GB.plg_twofactorauth_yubikey.ini | 2 +- .../language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini index 8a96affcda143..fe797151c5b34 100644 --- a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini +++ b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini @@ -3,7 +3,7 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 -PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to https://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select CAPTCHA - reCAPTCHA as the CAPTCHA." +PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to https://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select CAPTCHA - reCAPTCHA as the CAPTCHA." PLG_CAPTCHA_RECAPTCHA="CAPTCHA - reCAPTCHA" ; Params diff --git a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini index 6744581abba82..6d60c263adbb7 100644 --- a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini +++ b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini @@ -3,5 +3,5 @@ ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 -PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to https://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select Captcha - reCaptcha as the Captcha." +PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to https://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select Captcha - reCaptcha as the Captcha." PLG_CAPTCHA_RECAPTCHA="Captcha - ReCaptcha" diff --git a/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini b/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini index 879d46acb34f0..c13b21b58a6cc 100644 --- a/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini +++ b/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini @@ -8,7 +8,7 @@ PLG_TWOFACTORAUTH_TOTP_ERR_VALIDATIONFAILED="You did not enter a valid security PLG_TWOFACTORAUTH_TOTP_INTRO="This feature allows you to use Google Authenticator, or a compatible application, for two factor authentication. In addition to your username and password you will also need to provide a six digit security code generated by Google Authenticator to be able to login to this site. The security code is rotated every 30 seconds. This provides extra protection against hackers logging in to your account even if they were able to get hold of your password." PLG_TWOFACTORAUTH_TOTP_METHOD_TITLE="Google Authenticator" PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_TITLE="Two Factor Authentication is Available" -PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY="Joomla! comes with a built-in two factor authentication system. It secures your site login with a secondary secret code that's changing every 30 seconds. You can use your mobile device and the Google Authenticator app to produce that code.
    By selecting the button below:
    • Joomla! will enable the two factor authentication plugins
    • Two Factor Authentication is going to be available for all users.
    • Each user can configure Two Factor Authentication in User Details.
    • You can always disable Two Factor Authentication plugin, or configure it for Backend usage only.
    • You will be taken to your user profile page where you can find more information on two factor authentication and enable it for your user account.
    " +PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY="Joomla! comes with a built-in two factor authentication system. It secures your site login with a secondary secret code that's changing every 30 seconds. You can use your mobile device and the Google Authenticator app to produce that code.
    By selecting the button below:
    • Joomla! will enable the two factor authentication plugins
    • Two Factor Authentication is going to be available for all users.
    • Each user can configure Two Factor Authentication in User Details.
    • You can always disable Two Factor Authentication plugin, or configure it for Backend usage only.
    • You will be taken to your user profile page where you can find more information on two factor authentication and enable it for your user account.
    " PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_ACTION="Enable two factor authentication" PLG_TWOFACTORAUTH_TOTP_SECTION_ADMIN="Administrator (Backend)" PLG_TWOFACTORAUTH_TOTP_SECTION_BOTH="Both" diff --git a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini index f47975710bc47..016336818ae07 100644 --- a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini +++ b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini @@ -18,5 +18,5 @@ PLG_TWOFACTORAUTH_YUBIKEY_SECTION_SITE="Site (Frontend)" PLG_TWOFACTORAUTH_YUBIKEY_SECURITYCODE="Security Code" PLG_TWOFACTORAUTH_YUBIKEY_STEP1_HEAD="Set up" PLG_TWOFACTORAUTH_YUBIKEY_STEP1_TEXT="Please insert your YubiKey device into your computer's USB port. Select the Security Code field below. Then touch the gold disk on your YubiKey device for one second. Afterwards, please save your user profile. If the code generated by your YubiKey is validated by YubiCloud the Two Factor Authentication feature will be enabled and this YubiKey will be linked with your user account." -PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." +PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." diff --git a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini index 532704a0e5018..e79f48bd5af1b 100644 --- a/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini +++ b/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini @@ -4,4 +4,4 @@ ; Note : All ini files need to be saved as UTF-8 PLG_TWOFACTORAUTH_YUBIKEY="Two Factor Authentication - YubiKey" -PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." +PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from https://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." From 34d5f36fe65a4ac575e0741fdb4bf290a97321f5 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sun, 13 Mar 2016 11:55:26 +0000 Subject: [PATCH 091/352] https in atom and a comment --- libraries/joomla/cache/storage/file.php | 2 +- libraries/joomla/document/renderer/feed/atom.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/joomla/cache/storage/file.php b/libraries/joomla/cache/storage/file.php index 94bf0a2ad17c9..2779db4fc83e9 100644 --- a/libraries/joomla/cache/storage/file.php +++ b/libraries/joomla/cache/storage/file.php @@ -334,7 +334,7 @@ public function unlock($id, $group = null) } else { - // Expect true if $_fileopen is false. Ref: http://issues.joomla.org/tracker/joomla-cms/2535 + // Expect true if $_fileopen is false. Ref: https://issues.joomla.org/tracker/joomla-cms/2535 $ret = true; } diff --git a/libraries/joomla/document/renderer/feed/atom.php b/libraries/joomla/document/renderer/feed/atom.php index 14cf3cb737c58..a4c925283dc59 100644 --- a/libraries/joomla/document/renderer/feed/atom.php +++ b/libraries/joomla/document/renderer/feed/atom.php @@ -120,7 +120,7 @@ public function render($name = '', $params = null, $content = null) $versionHtmlEscaped = ' version="' . htmlspecialchars(JVersion::RELEASE, ENT_COMPAT, 'UTF-8') . '"'; } - $feed .= " " . $data->getGenerator() . "\n"; + $feed .= " " . $data->getGenerator() . "\n"; $feed .= ' \n"; for ($i = 0, $count = count($data->items); $i < $count; $i++) From 4e07d0f75b6bd7006245019bfced96976bc42bac Mon Sep 17 00:00:00 2001 From: Chris Davenport Date: Sun, 13 Mar 2016 23:20:54 +0000 Subject: [PATCH 092/352] Small grammatical error in message Title says it all. :-) --- administrator/language/en-GB/en-GB.com_cpanel.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_cpanel.ini b/administrator/language/en-GB/en-GB.com_cpanel.ini index ac51480c16435..3807ed2beb57d 100644 --- a/administrator/language/en-GB/en-GB.com_cpanel.ini +++ b/administrator/language/en-GB/en-GB.com_cpanel.ini @@ -27,7 +27,7 @@ COM_CPANEL_MSG_PHPVERSION_BODY="Beginning with Joomla! 3.3, the version of PHP t COM_CPANEL_MSG_PHPVERSION_TITLE="Your PHP Version Will Be Unsupported in Joomla! 3.3" COM_CPANEL_MSG_ROBOTS_TITLE="robots.txt Update" COM_CPANEL_MSG_ROBOTS_BODY="A change to the default robots.txt files was made in Joomla! 3.3 to allow Google to access templates and media files by default to improve SEO. This change is not applied automatically on upgrades and users are recommended to review the changes in the robots.txt.dist file and implement these change in their own robots.txt file." -COM_CPANEL_MSG_STATS_COLLECTION_BODY="Since Joomla! 3.5 a statistics plugin will submit anonymous data to the Joomla Project. This will only submit the Joomla version, PHP version, database engine and version, and server operating system.

    This data is collected to ensure that future versions of Joomla can take advantage of the latest database and PHP features without effecting significant numbers of users. The need for this became clear when a minimum of PHP 5.3.10 was required when Joomla! 3.3 implemented the more secure Bcrypt passwords.

    In the interest of full transparency and to help developers this data is publicly available. An API and graphs will show the Joomla version, PHP versions and database engines in use.

    If you do not wish to provide the Joomla Project with this information you can disable the plugin called System - Joomla Statistics." +COM_CPANEL_MSG_STATS_COLLECTION_BODY="Since Joomla! 3.5 a statistics plugin will submit anonymous data to the Joomla Project. This will only submit the Joomla version, PHP version, database engine and version, and server operating system.

    This data is collected to ensure that future versions of Joomla can take advantage of the latest database and PHP features without affecting significant numbers of users. The need for this became clear when a minimum of PHP 5.3.10 was required when Joomla! 3.3 implemented the more secure Bcrypt passwords.

    In the interest of full transparency and to help developers this data is publicly available. An API and graphs will show the Joomla version, PHP versions and database engines in use.

    If you do not wish to provide the Joomla Project with this information you can disable the plugin called System - Joomla Statistics." COM_CPANEL_MSG_STATS_COLLECTION_TITLE="Stats Collection in Joomla" COM_CPANEL_WELCOME_BEGINNERS_MESSAGE="

    Community resources are available for new users

    " COM_CPANEL_WELCOME_BEGINNERS_TITLE="Welcome to Joomla!" From f3ecedea89a45ee0b7513d955cf0bf52cd34e195 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 14 Mar 2016 11:51:06 +0000 Subject: [PATCH 093/352] change text --- installation/language/en-GB/en-GB.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installation/language/en-GB/en-GB.ini b/installation/language/en-GB/en-GB.ini index ee8de6484dc4f..774d3bc16d319 100644 --- a/installation/language/en-GB/en-GB.ini +++ b/installation/language/en-GB/en-GB.ini @@ -33,7 +33,7 @@ INSTL_DATABASE_HOST_LABEL="Host Name" INSTL_DATABASE_NAME_DESC="Some hosts allow only a certain DB name per site. Use table prefix in this case for distinct Joomla! sites." INSTL_DATABASE_NAME_LABEL="Database Name" INSTL_DATABASE_NO_SCHEMA="No database schema exists for this database type." -INSTL_DATABASE_OLD_PROCESS_DESC="Any existing backup tables from former Joomla! installations will be replaced." +INSTL_DATABASE_OLD_PROCESS_DESC="Selecting "Remove" will replace any existing tables from former Joomla! installations with the same "Table Prefix"." INSTL_DATABASE_OLD_PROCESS_LABEL="Old Database Process" INSTL_DATABASE_PASSWORD_DESC="For site security using a password for the database account is mandatory." INSTL_DATABASE_PASSWORD_LABEL="Password" From 660d27b12eb4793cc76bcba67cd7099e6a50158c Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 14 Mar 2016 11:59:55 +0000 Subject: [PATCH 094/352] Update en-GB.ini --- installation/language/en-GB/en-GB.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installation/language/en-GB/en-GB.ini b/installation/language/en-GB/en-GB.ini index 774d3bc16d319..80faad5332782 100644 --- a/installation/language/en-GB/en-GB.ini +++ b/installation/language/en-GB/en-GB.ini @@ -33,7 +33,7 @@ INSTL_DATABASE_HOST_LABEL="Host Name" INSTL_DATABASE_NAME_DESC="Some hosts allow only a certain DB name per site. Use table prefix in this case for distinct Joomla! sites." INSTL_DATABASE_NAME_LABEL="Database Name" INSTL_DATABASE_NO_SCHEMA="No database schema exists for this database type." -INSTL_DATABASE_OLD_PROCESS_DESC="Selecting "Remove" will replace any existing tables from former Joomla! installations with the same "Table Prefix"." +INSTL_DATABASE_OLD_PROCESS_DESC=""Backup" or "Remove" any existing tables from former Joomla! installations with the same "Table Prefix"." INSTL_DATABASE_OLD_PROCESS_LABEL="Old Database Process" INSTL_DATABASE_PASSWORD_DESC="For site security using a password for the database account is mandatory." INSTL_DATABASE_PASSWORD_LABEL="Password" From c07189726a47431966d6761ff50c42ac14dd563b Mon Sep 17 00:00:00 2001 From: Twincarb Date: Mon, 14 Mar 2016 19:16:39 +0000 Subject: [PATCH 095/352] Update en-GB page 2 English language The first sentence is left as a cliff hanger, "one" completes the sentence. If the second sentence is still true the randomly generated prefix would be 3 or 4 alpha numerics, to reflect default being 5 I have adjusted the wording to "for or five" characters long, the last part of the sentence is adjusted for better grammer. --- installation/language/en-GB/en-GB.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installation/language/en-GB/en-GB.ini b/installation/language/en-GB/en-GB.ini index ee8de6484dc4f..3f3d28b62a0c4 100644 --- a/installation/language/en-GB/en-GB.ini +++ b/installation/language/en-GB/en-GB.ini @@ -37,7 +37,7 @@ INSTL_DATABASE_OLD_PROCESS_DESC="Any existing backup tables from former Joomla! INSTL_DATABASE_OLD_PROCESS_LABEL="Old Database Process" INSTL_DATABASE_PASSWORD_DESC="For site security using a password for the database account is mandatory." INSTL_DATABASE_PASSWORD_LABEL="Password" -INSTL_DATABASE_PREFIX_DESC="Choose a table prefix or use the randomly generated. Ideally, three or four characters long, contain only alphanumeric characters and MUST end in an underscore. Make sure that the prefix chosen is not used by other tables." +INSTL_DATABASE_PREFIX_DESC="Choose a table prefix or use the randomly generated one. Ideally, four or five characters long, it may only contain alphanumeric characters and MUST end in an underscore. Make sure that the prefix chosen is not used by other tables." INSTL_DATABASE_PREFIX_LABEL="Table Prefix" INSTL_DATABASE_PREFIX_MSG="The table prefix must start with a letter, be followed by optional alphanumeric characters and by an underscore" INSTL_DATABASE_TYPE_DESC="This is probably "MySQLi"." From cb26ab965e391c57362b7c2250c9d6f73b29785e Mon Sep 17 00:00:00 2001 From: Twincarb Date: Mon, 14 Mar 2016 21:36:19 +0000 Subject: [PATCH 096/352] Update en-GB.ini --- installation/language/en-GB/en-GB.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installation/language/en-GB/en-GB.ini b/installation/language/en-GB/en-GB.ini index 3f3d28b62a0c4..694851e749ccc 100644 --- a/installation/language/en-GB/en-GB.ini +++ b/installation/language/en-GB/en-GB.ini @@ -37,7 +37,7 @@ INSTL_DATABASE_OLD_PROCESS_DESC="Any existing backup tables from former Joomla! INSTL_DATABASE_OLD_PROCESS_LABEL="Old Database Process" INSTL_DATABASE_PASSWORD_DESC="For site security using a password for the database account is mandatory." INSTL_DATABASE_PASSWORD_LABEL="Password" -INSTL_DATABASE_PREFIX_DESC="Choose a table prefix or use the randomly generated one. Ideally, four or five characters long, it may only contain alphanumeric characters and MUST end in an underscore. Make sure that the prefix chosen is not used by other tables." +INSTL_DATABASE_PREFIX_DESC="Create a table prefix or use the randomly generated one. Ideally four or five characters long, it may only contain alphanumeric characters and MUST end in an underscore. Make sure that the prefix chosen is not already used by other tables." INSTL_DATABASE_PREFIX_LABEL="Table Prefix" INSTL_DATABASE_PREFIX_MSG="The table prefix must start with a letter, be followed by optional alphanumeric characters and by an underscore" INSTL_DATABASE_TYPE_DESC="This is probably "MySQLi"." From 07446dfdcdbeef8e79a919a2541ce9889f37fefc Mon Sep 17 00:00:00 2001 From: Twincarb Date: Mon, 14 Mar 2016 21:38:53 +0000 Subject: [PATCH 097/352] Update en-GB.ini --- installation/language/en-GB/en-GB.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installation/language/en-GB/en-GB.ini b/installation/language/en-GB/en-GB.ini index 694851e749ccc..8ac8466e6e689 100644 --- a/installation/language/en-GB/en-GB.ini +++ b/installation/language/en-GB/en-GB.ini @@ -37,7 +37,7 @@ INSTL_DATABASE_OLD_PROCESS_DESC="Any existing backup tables from former Joomla! INSTL_DATABASE_OLD_PROCESS_LABEL="Old Database Process" INSTL_DATABASE_PASSWORD_DESC="For site security using a password for the database account is mandatory." INSTL_DATABASE_PASSWORD_LABEL="Password" -INSTL_DATABASE_PREFIX_DESC="Create a table prefix or use the randomly generated one. Ideally four or five characters long, it may only contain alphanumeric characters and MUST end in an underscore. Make sure that the prefix chosen is not already used by other tables." +INSTL_DATABASE_PREFIX_DESC="Create a table prefix or use the randomly generated one. Ideally four or five characters long, it may only contain alphanumeric characters and MUST end in an underscore. Make sure that the prefix chosen is not already used by other tables." INSTL_DATABASE_PREFIX_LABEL="Table Prefix" INSTL_DATABASE_PREFIX_MSG="The table prefix must start with a letter, be followed by optional alphanumeric characters and by an underscore" INSTL_DATABASE_TYPE_DESC="This is probably "MySQLi"." From 128eeb96c94d4eae96f269f787ac983ac316e9e9 Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Wed, 16 Mar 2016 12:18:56 +0200 Subject: [PATCH 098/352] Oops, typo --- .../manifests/packages/pkg_weblinks.xml | 30 ------------------- libraries/joomla/updater/updater.php | 2 +- 2 files changed, 1 insertion(+), 31 deletions(-) delete mode 100644 administrator/manifests/packages/pkg_weblinks.xml diff --git a/administrator/manifests/packages/pkg_weblinks.xml b/administrator/manifests/packages/pkg_weblinks.xml deleted file mode 100644 index bec5cb2a9785a..0000000000000 --- a/administrator/manifests/packages/pkg_weblinks.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - pkg_weblinks - weblinks - December 2012 - Joomla! Project - (C) 2005 - 2016 Open Source Matters. All rights reserved. - admin@joomla.org - www.joomla.org - Joomla! Project - admin@joomla.org - www.joomla.org - 3.4.1 - GNU General Public License version 2 or later; see LICENSE.txt - PKG_WEBLINKS_XML_DESCRIPTION - - - com_weblinks.zip - mod_weblinks.zip - plg_finder_weblinks.zip - plg_search_weblinks.zip - - - en-GB/en-GB.pkg_weblinks.sys.ini - - - - https://raw.githubusercontent.com/joomla-extensions/weblinks/master/manifest.xml - - diff --git a/libraries/joomla/updater/updater.php b/libraries/joomla/updater/updater.php index 080b1495286dc..3f80153d5fa3d 100644 --- a/libraries/joomla/updater/updater.php +++ b/libraries/joomla/updater/updater.php @@ -380,7 +380,7 @@ private function getSitesWithUpdates($timestamp = 0) $db = JFactory::getDbo(); $query = $db->getQuery(true) - ->select('DISTINCT jdev_update_sites') + ->select('DISTINCT update_site_id') ->from('#__updates'); if ($timestamp) From e4e6e621952c0d3902bd1ff6be3556220dadf405 Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Wed, 16 Mar 2016 12:27:29 +0200 Subject: [PATCH 099/352] Bump Joomla! Update version --- administrator/components/com_joomlaupdate/joomlaupdate.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/joomlaupdate.xml b/administrator/components/com_joomlaupdate/joomlaupdate.xml index 75fe660fd17f6..f2f80fe0cdc63 100644 --- a/administrator/components/com_joomlaupdate/joomlaupdate.xml +++ b/administrator/components/com_joomlaupdate/joomlaupdate.xml @@ -7,7 +7,7 @@ GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org - 3.0.0 + 3.5.0 COM_JOOMLAUPDATE_XML_DESCRIPTION From 133d315b4f33992e84d2b3b05dfd8fb71d954653 Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Wed, 16 Mar 2016 13:05:51 +0200 Subject: [PATCH 100/352] Move alternative panels into separate view template layouts Keeping it it simple and clean --- .../views/default/tmpl/default.php | 266 ++---------------- .../views/default/tmpl/default_reinstall.php | 113 ++++++++ .../views/default/tmpl/default_update.php | 122 ++++++++ .../views/default/tmpl/default_upload.php | 14 + .../views/default/view.html.php | 36 +++ .../language/en-GB/en-GB.com_joomlaupdate.ini | 4 + 6 files changed, 308 insertions(+), 247 deletions(-) create mode 100644 administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php create mode 100644 administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php create mode 100644 administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php index 961ee8bda0be8..407e9a7a05687 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php @@ -9,41 +9,7 @@ defined('_JEXEC') or die; -$ftpFieldsDisplay = $this->ftp['enabled'] ? '' : 'style = "display: none"'; -$params = JComponentHelper::getParams('com_joomlaupdate'); - -switch ($params->get('updatesource', 'default')) -{ - // "Minor & Patch Release for Current version AND Next Major Release". - case 'sts': - case 'next': - $langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_NEXT'; - $updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'); - break; - - // "Testing" - case 'testing': - $langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_TESTING'; - $updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_TESTING'); - break; - - // "Custom" - case 'custom': - $langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_CUSTOM'; - $updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_CUSTOM'); - break; - - /** - * "Minor & Patch Release for Current version (recommended and default)". - * The commented "case" below are for documenting where 'default' and legacy options falls - * case 'default': - * case 'lts': - * case 'nochange': - */ - default: - $langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_DEFAULT'; - $updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT'); -} +/** @var JoomlaupdateViewDefault $this */ JHtml::_('jquery.framework'); JHtml::_('formbehavior.chosen', 'select'); @@ -52,224 +18,30 @@ -updateInfo['hasUpdate']) : ?> - -
    - - - -

    - -

    - -
    - -
    + 'online-update')); + echo JHtml::_('bootstrap.addTab', 'joomlaupdate-tabs', 'online-update', JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_ONLINE')); - updateInfo['object']) && ($this->updateInfo['object'] instanceof JUpdate)): ?> - - - - - - - - - - - - - - - > - - - - > - - - - > - - - - > - - - - > - - - - - - - - - - -
    - - - - updateInfo['object']->downloadurl->_data; ?> - -
    - - - - updateInfo['object']->get('infourl')->title; ?> - -
    - - - methodSelect; ?> -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    -   - - -
    - + if (!$this->updateInfo['hasUpdate']) + { + echo $this->loadTemplate('reinstall'); -
    + } + else + { + echo $this->loadTemplate('update'); + } - + echo JHtml::_('bootstrap.endTab'); + echo JHtml::_('bootstrap.addTab', 'joomlaupdate-tabs', 'upload-update', JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_UPLOAD')); -
    - - - -

    - -

    + echo $this->loadTemplate('upload'); + echo JHtml::_('bootstrap.endTab'); + echo JHtml::_('bootstrap.endTabSet'); - - - - - - - - - - - - - - - - - - - - - - - > - - - - > - - - - > - - - - > - - - - > - - - - - - - - - - -
    - - - updateInfo['installed']; ?> -
    - - - updateInfo['latest']; ?> -
    - - - - updateInfo['object']->downloadurl->_data; ?> - -
    - - - - updateInfo['object']->get('infourl')->title; ?> - -
    - - - methodSelect; ?> -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    -   - - -
    -
    - - + echo JHtml::_('form.token'); +?> - diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php new file mode 100644 index 0000000000000..8c6435c890eaf --- /dev/null +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php @@ -0,0 +1,113 @@ + +
    + + + +

    + langKey, $this->updateSourceKey); ?> +

    + +
    + +
    + + updateInfo['object']) && ($this->updateInfo['object'] instanceof JUpdate)): ?> + + + + + + + + + + + + + + + ftpFieldsDisplay; ?>> + + + + ftpFieldsDisplay; ?>> + + + + ftpFieldsDisplay; ?>> + + + + ftpFieldsDisplay; ?>> + + + + ftpFieldsDisplay; ?>> + + + + + + + + + + +
    + + + + updateInfo['object']->downloadurl->_data; ?> + +
    + + + + updateInfo['object']->get('infourl')->title; ?> + +
    + + + methodSelect; ?> +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    +   + + +
    + + +
    \ No newline at end of file diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php new file mode 100644 index 0000000000000..b245a4ace0ec9 --- /dev/null +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php @@ -0,0 +1,122 @@ + +
    + + + +

    + langKey, $this->updateSourceKey); ?> +

    + + + + + + + + + + + + + + + + + + + + + + + + ftpFieldsDisplay; ?>> + + + + ftpFieldsDisplay; ?>> + + + + ftpFieldsDisplay; ?>> + + + + ftpFieldsDisplay; ?>> + + + + ftpFieldsDisplay; ?>> + + + + + + + + + + +
    + + + updateInfo['installed']; ?> +
    + + + updateInfo['latest']; ?> +
    + + + + updateInfo['object']->downloadurl->_data; ?> + +
    + + + + updateInfo['object']->get('infourl')->title; ?> + +
    + + + methodSelect; ?> +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    +   + + +
    +
    \ No newline at end of file diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php new file mode 100644 index 0000000000000..24ce830ed66b9 --- /dev/null +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php @@ -0,0 +1,14 @@ + + diff --git a/administrator/components/com_joomlaupdate/views/default/view.html.php b/administrator/components/com_joomlaupdate/views/default/view.html.php index 9401df1485e6f..05055b5468ddd 100644 --- a/administrator/components/com_joomlaupdate/views/default/view.html.php +++ b/administrator/components/com_joomlaupdate/views/default/view.html.php @@ -60,6 +60,42 @@ public function display($tpl = null) JFactory::getApplication()->enqueueMessage(JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATE_NOTICE'), 'notice'); } + $this->ftpFieldsDisplay = $this->ftp['enabled'] ? '' : 'style = "display: none"'; + $params = JComponentHelper::getParams('com_joomlaupdate'); + + switch ($params->get('updatesource', 'default')) + { + // "Minor & Patch Release for Current version AND Next Major Release". + case 'sts': + case 'next': + $this->langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_NEXT'; + $this->updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'); + break; + + // "Testing" + case 'testing': + $this->langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_TESTING'; + $this->updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_TESTING'); + break; + + // "Custom" + case 'custom': + $this->langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_CUSTOM'; + $this->updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_CUSTOM'); + break; + + /** + * "Minor & Patch Release for Current version (recommended and default)". + * The commented "case" below are for documenting where 'default' and legacy options falls + * case 'default': + * case 'lts': + * case 'nochange': + */ + default: + $this->langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_DEFAULT'; + $this->updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT'); + } + // Render the view. parent::display($tpl); } diff --git a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini index eb36ea68d6bff..9055ca9803602 100644 --- a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini +++ b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini @@ -57,3 +57,7 @@ COM_JOOMLAUPDATE_VIEW_UPDATE_FILESEXTRACTED="Files extracted" COM_JOOMLAUPDATE_VIEW_UPDATE_INPROGRESS="Updating your Joomla files. Please wait ..." COM_JOOMLAUPDATE_VIEW_UPDATE_PERCENT="Percent complete" COM_JOOMLAUPDATE_XML_DESCRIPTION="Updates Joomla to the latest version with one click." + +COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_ONLINE="Live Update" +COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_UPLOAD="Upload & Update" +COM_JOOMLAUPDATE_VIEW_DEFAULT_UPLOAD_INTRO="You can use this feature to update Joomla! if your server is behind a firewall or otherwise unable to contact the update servers. First download the Joomla! Upgrade Package in ZIP format from the official Joomla! download page. Then use the form below to upload and install it." From 13fb84d466f4692311aaa093c49bd41f64037601 Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Wed, 16 Mar 2016 13:20:46 +0200 Subject: [PATCH 101/352] Reinstall is only supported in newer versions of Joomla! When JUpdater::findUpdates has four (or more) parameters we can use the reinstall support by passing true in the fourth parameter (includeCurrent). Otherwise we have to call findUpdates with three parameters which only gives us available updates. This is necessary since Joomla! Update can run under older Joomla! 3.x releases, most notably 3.4, which lack the reinstall support. --- .../com_joomlaupdate/models/default.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/models/default.php b/administrator/components/com_joomlaupdate/models/default.php index 15c5358850ade..a6c0b7412a258 100644 --- a/administrator/components/com_joomlaupdate/models/default.php +++ b/administrator/components/com_joomlaupdate/models/default.php @@ -120,7 +120,20 @@ public function refreshUpdates($force = false) } $updater = JUpdater::getInstance(); - $updater->findUpdates(700, $cache_timeout, JUpdater::STABILITY_ALPHA, true); + + $reflection = new ReflectionObject($updater); + $reflectionMethod = $reflection->getMethod('findUpdates'); + $methodParameters = $reflectionMethod->getParameters(); + + if (count($methodParameters) >= 4) + { + // Reinstall support is available in JUpdater + $updater->findUpdates(700, $cache_timeout, JUpdater::STABILITY_ALPHA, true); + } + else + { + $updater->findUpdates(700, $cache_timeout, JUpdater::STABILITY_ALPHA); + } } /** From a6dd02cb3a6266cfba2dcce8e3e0dfea2335a31f Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Wed, 16 Mar 2016 15:28:39 +0200 Subject: [PATCH 102/352] Upload form in a tab --- .../com_joomlaupdate/controller.php | 14 +++ .../views/default/tmpl/default.php | 71 ++++++++------- .../views/default/tmpl/default_upload.php | 86 +++++++++++++++++++ .../views/default/view.html.php | 16 ++++ .../language/en-GB/en-GB.com_joomlaupdate.ini | 2 +- 5 files changed, 158 insertions(+), 31 deletions(-) diff --git a/administrator/components/com_joomlaupdate/controller.php b/administrator/components/com_joomlaupdate/controller.php index c242213485727..90a946fa2b54c 100644 --- a/administrator/components/com_joomlaupdate/controller.php +++ b/administrator/components/com_joomlaupdate/controller.php @@ -46,6 +46,19 @@ public function display($cachable = false, $urlparams = false) /** @var JoomlaupdateModelDefault $model */ $model = $this->getModel('default'); + // Push the Installer Warnings model into the view, if we can load it + if (!class_exists('InstallerModelWarnings')) + { + @include_once JPATH_ADMINISTRATOR . '/components/com_installer/models/warnings.php'; + } + + $warningsModel = $this->getModel('warnings', 'InstallerModel'); + + if (is_object($warningsModel)) + { + $view->setModel($warningsModel, false); + } + // Perform update source preference check and refresh update information. $model->applyUpdateSite(); $model->refreshUpdates(); @@ -54,6 +67,7 @@ public function display($cachable = false, $urlparams = false) $view->setModel($model, true); $view->setLayout($lName); + // Push document object into the view. $view->document = $document; $view->display(); diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php index 407e9a7a05687..537413a541105 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php @@ -12,44 +12,55 @@ /** @var JoomlaupdateViewDefault $this */ JHtml::_('jquery.framework'); +JHtml::_('bootstrap.tooltip'); JHtml::_('formbehavior.chosen', 'select'); JHtml::script('com_joomlaupdate/default.js', false, true, false); ?> -
    +
    + - 'online-update')); - echo JHtml::_('bootstrap.addTab', 'joomlaupdate-tabs', 'online-update', JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_ONLINE')); + showUploadAndUpdate) + { + echo JHtml::_('bootstrap.startTabSet', 'joomlaupdate-tabs', array('active' => 'online-update')); + echo JHtml::_('bootstrap.addTab', 'joomlaupdate-tabs', 'online-update', JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_ONLINE')); + } - if (!$this->updateInfo['hasUpdate']) - { - echo $this->loadTemplate('reinstall'); + if (!$this->updateInfo['hasUpdate']) + { + echo $this->loadTemplate('reinstall'); - } - else - { - echo $this->loadTemplate('update'); - } + } + else + { + echo $this->loadTemplate('update'); + } - echo JHtml::_('bootstrap.endTab'); - echo JHtml::_('bootstrap.addTab', 'joomlaupdate-tabs', 'upload-update', JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_UPLOAD')); + // Only Super Users have access to the Update & Install for obvious security reasons + if ($this->showUploadAndUpdate) + { + echo JHtml::_('bootstrap.endTab'); + echo JHtml::_('bootstrap.addTab', 'joomlaupdate-tabs', 'upload-update', JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_UPLOAD')); - echo $this->loadTemplate('upload'); - echo JHtml::_('bootstrap.endTab'); - echo JHtml::_('bootstrap.endTabSet'); + echo $this->loadTemplate('upload'); + echo JHtml::_('bootstrap.endTab'); + echo JHtml::_('bootstrap.endTabSet'); + } - echo JHtml::_('form.token'); -?> + echo JHtml::_('form.token'); + ?> + + + + - - - - - + +
    +
    \ No newline at end of file diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php index 24ce830ed66b9..7676d3cabffb4 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php @@ -10,5 +10,91 @@ defined('_JEXEC') or die; /** @var JoomlaupdateViewDefault $this */ + +$errSelectPackage = JText::_('COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_PACKAGE', true); +JFactory::getDocument()->addScriptDeclaration( <<< JS + Joomla.submitbuttonUpload = function() { + var form = document.getElementById("adminForm"); + + // do field validation + if (form.install_package.value == "") { + alert("$errSelectPackage"); + } + else + { + jQuery("#loading").css("display", "block"); + + form.installtype.task = "update.upload"; + form.submit(); + } + }; + + // Add spindle-wheel for installations: + jQuery(document).ready(function($) { + var outerDiv = $("#joomlaupdate-wrapper"); + + $("#loading") + .css("top", outerDiv.position().top - $(window).scrollTop()) + .css("left", outerDiv.position().left - $(window).scrollLeft()) + .css("width", outerDiv.width()) + .css("height", outerDiv.height()) + .css("display", "none") + }); + +JS +); + +$ajaxLoaderImage = JHtml::_('image', 'jui/ajax-loader.gif', '', null, true, true); +JFactory::getDocument()->addStyleDeclaration( <<< CSS + #loading { + background: rgba(255, 255, 255, .8) url('$ajaxLoaderImage') 50% 15% no-repeat; + position: fixed; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity = 80); + filter: alpha(opacity = 80); + margin: -10px -50px 0 -50px; + overflow: hidden; + } +CSS +); ?> +
    +

    + + +

    +
    + +warnings)): ?> +
    + + + + + 'warning0')); ?> + + warnings as $message) : ?> + + + + + + + + +
    + + +
    + +
    + +
    + +
    +
    +
    + +
    +
    \ No newline at end of file diff --git a/administrator/components/com_joomlaupdate/views/default/view.html.php b/administrator/components/com_joomlaupdate/views/default/view.html.php index 05055b5468ddd..8ed40e726b391 100644 --- a/administrator/components/com_joomlaupdate/views/default/view.html.php +++ b/administrator/components/com_joomlaupdate/views/default/view.html.php @@ -96,6 +96,22 @@ public function display($tpl = null) $this->updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT'); } + $this->warnings = array(); + /** @var InstallerModelWarnings $warningsModel */ + $warningsModel = $this->getModel('warnings'); + + if (is_object($warningsModel) && $warningsModel instanceof JModelLegacy) + { + $language = JFactory::getLanguage(); + $language->load('com_installer', JPATH_ADMINISTRATOR, 'en-GB', false, true); + $language->load('com_installer', JPATH_ADMINISTRATOR, null, true); + + $this->warnings = $warningsModel->getItems(); + } + + // Only Super Users have access to the Update & Install for obvious security reasons + $this->showUploadAndUpdate = JFactory::getUser()->authorise('core.admin'); + // Render the view. parent::display($tpl); } diff --git a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini index 9055ca9803602..a8a1f46dedc77 100644 --- a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini +++ b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini @@ -60,4 +60,4 @@ COM_JOOMLAUPDATE_XML_DESCRIPTION="Updates Joomla to the latest version with one COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_ONLINE="Live Update" COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_UPLOAD="Upload & Update" -COM_JOOMLAUPDATE_VIEW_DEFAULT_UPLOAD_INTRO="You can use this feature to update Joomla! if your server is behind a firewall or otherwise unable to contact the update servers. First download the Joomla! Upgrade Package in ZIP format from the official Joomla! download page. Then use the form below to upload and install it." +COM_JOOMLAUPDATE_VIEW_DEFAULT_UPLOAD_INTRO="You can use this feature to update Joomla! if your server is behind a firewall or otherwise unable to contact the update servers. First download the Joomla! Upgrade Package in ZIP format from the official Joomla! download page. Then use the fields below to upload and install it." From 91bee90c7d29b1a4aad71a083c3c87944dfed24c Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Wed, 16 Mar 2016 18:22:26 +0200 Subject: [PATCH 103/352] Typo --- .../com_joomlaupdate/views/default/tmpl/default_upload.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php index 7676d3cabffb4..c7fc29b20d193 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php @@ -24,7 +24,7 @@ { jQuery("#loading").css("display", "block"); - form.installtype.task = "update.upload"; + form.task.value = "update.upload"; form.submit(); } }; From 0e3e7fa29cd34c01e88d90ab9074ee09b6cf57be Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Wed, 16 Mar 2016 18:25:56 +0200 Subject: [PATCH 104/352] Upload to temporary file --- .../com_joomlaupdate/controllers/update.php | 60 +++++++++++++ .../com_joomlaupdate/models/default.php | 87 ++++++++++++++++++- .../com_joomlaupdate/views/upload/captive.php | 11 +++ 3 files changed, 155 insertions(+), 3 deletions(-) create mode 100644 administrator/components/com_joomlaupdate/views/upload/captive.php diff --git a/administrator/components/com_joomlaupdate/controllers/update.php b/administrator/components/com_joomlaupdate/controllers/update.php index aced8a7e35a83..8dfe63dccfdce 100644 --- a/administrator/components/com_joomlaupdate/controllers/update.php +++ b/administrator/components/com_joomlaupdate/controllers/update.php @@ -151,6 +151,66 @@ public function purge() $this->setRedirect($url, $model->_message); } + /** + * Uploads an update package to the temporary directory, under a random name + * + * @return void + * + * @since 3.5 + */ + public function upload() + { + // Check for request forgeries + JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); + + // Did a non Super User tried to upload something (a.k.a. pathetic hacking attempt)? + JFactory::getUser()->authorise('core.admin') or jexit(JText::_('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN')); + + /** @var JoomlaupdateModelDefault $model */ + $model = $this->getModel('Default'); + + try + { + $model->upload(); + } + catch (RuntimeException $e) + { + $url = 'index.php?option=com_joomlaupdate'; + $this->setRedirect($url, $e->getMessage(), 'error'); + } + + $token = JSession::getFormToken(); + $url = 'index.php?option=com_joomlaupdate&task=update.captive&' . $token . '=1'; + $this->setRedirect($url); + } + + public function captive() + { + // Check for request forgeries + JSession::checkToken('get') or jexit(JText::_('JINVALID_TOKEN')); + + // Did a non Super User tried to upload something (a.k.a. pathetic hacking attempt)? + if (!JFactory::getUser()->authorise('core.admin')) + { + throw new RuntimeException(JText::_('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN'), 403); + } + + // Do I really have an update package? + $session = JFactory::getSession(); + $file = $session->get('temp_file', null, 'com_joomlaupdate'); + + JLoader::import('joomla.filesystem.file'); + if (empty($file) || !JFile::exists($file)) + { + throw new RuntimeException(JText::_('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN'), 403); + } + + $this->input->set('view', 'upload'); + $this->input->set('layout', 'captive'); + + $this->display(); + } + /** * Method to display a view. * diff --git a/administrator/components/com_joomlaupdate/models/default.php b/administrator/components/com_joomlaupdate/models/default.php index a6c0b7412a258..baf3fdc35868c 100644 --- a/administrator/components/com_joomlaupdate/models/default.php +++ b/administrator/components/com_joomlaupdate/models/default.php @@ -371,7 +371,7 @@ public function createRestorationFile($basename = null) $ftp_host = $app->input->get('ftp_host', ''); $ftp_port = $app->input->get('ftp_port', '21'); $ftp_user = $app->input->get('ftp_user', ''); - $ftp_pass = $app->input->get('ftp_pass', '', 'default', 'none', 2); + $ftp_pass = $app->input->get('ftp_pass', '', 'raw'); $ftp_root = $app->input->get('ftp_root', ''); // Is the tempdir really writable? @@ -570,8 +570,6 @@ public function finaliseUpgrade() $installer->setPath('source', JPATH_MANIFESTS . '/files'); $installer->setPath('extension_root', JPATH_ROOT); - $manifestPath = JPath::clean($installer->getPath('manifest')); - // Run the script file. JLoader::register('JoomlaInstallerScript', JPATH_ADMINISTRATOR . '/components/com_admin/script.php'); @@ -785,4 +783,87 @@ public function cleanUp() // Unset the update filename from the session. JFactory::getApplication()->setUserState('com_joomlaupdate.file', null); } + + /** + * Uploads what is presumably an update ZIP file under a mangled name in the temporary directory. + * + * @return void + * + * @since 3.5.0 + */ + public function upload() + { + // Get the uploaded file information. + $input = JFactory::getApplication()->input; + + // Do not change the filter type 'raw'. We need this to let files containing PHP code to upload. See JInputFiles::get. + $userfile = $input->files->get('install_package', null, 'raw'); + + // Make sure that file uploads are enabled in php. + if (!(bool) ini_get('file_uploads')) + { + throw new RuntimeException(JText::_('COM_INSTALLER_MSG_INSTALL_WARNINSTALLFILE'), 500); + } + + // Make sure that zlib is loaded so that the package can be unpacked. + if (!extension_loaded('zlib')) + { + throw new RuntimeException(('COM_INSTALLER_MSG_INSTALL_WARNINSTALLZLIB'), 500); + } + + // If there is no uploaded file, we have a problem... + if (!is_array($userfile)) + { + throw new RuntimeException(JText::_('COM_INSTALLER_MSG_INSTALL_NO_FILE_SELECTED'), 500); + } + + // Is the PHP tmp directory missing? + if ($userfile['error'] && ($userfile['error'] == UPLOAD_ERR_NO_TMP_DIR)) + { + throw new RuntimeException( + JText::_('COM_INSTALLER_MSG_INSTALL_WARNINSTALLUPLOADERROR') . '
    ' . + JText::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSET'), + 500); + } + + // Is the max upload size too small in php.ini? + if ($userfile['error'] && ($userfile['error'] == UPLOAD_ERR_INI_SIZE)) + { + throw new RuntimeException( + JText::_('COM_INSTALLER_MSG_INSTALL_WARNINSTALLUPLOADERROR') . '
    ' . JText::_('COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZE'), + 500 + ); + } + + // Check if there was a different problem uploading the file. + if ($userfile['error'] || $userfile['size'] < 1) + { + throw new RuntimeException(JText::_('COM_INSTALLER_MSG_INSTALL_WARNINSTALLUPLOADERROR'), 500); + } + + // Build the appropriate paths. + $config = JFactory::getConfig(); + $tmp_dest = tempnam($config->get('tmp_path'), 'ju'); + $tmp_src = $userfile['tmp_name']; + + // Move uploaded file. + jimport('joomla.filesystem.file'); + + if (version_compare(JVERSION, '3.4.0', 'ge')) + { + $result = JFile::upload($tmp_src, $tmp_dest, false, true); + } + else + { + // Old Joomla! versions didn't have UploadShield and don't need the fourth parameter to accept uploads + $result = JFile::upload($tmp_src, $tmp_dest); + } + + if (!$result) + { + throw new RuntimeException(JText::_('COM_INSTALLER_MSG_INSTALL_WARNINSTALLUPLOADERROR'), 500); + } + + $session = JFactory::getSession(); + } } diff --git a/administrator/components/com_joomlaupdate/views/upload/captive.php b/administrator/components/com_joomlaupdate/views/upload/captive.php new file mode 100644 index 0000000000000..a62caffa6a749 --- /dev/null +++ b/administrator/components/com_joomlaupdate/views/upload/captive.php @@ -0,0 +1,11 @@ + \ No newline at end of file From 613da31b097cd24c0b6cab1673a8d128d500bbaa Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Thu, 17 Mar 2016 00:05:20 +0000 Subject: [PATCH 105/352] e-mails -> emails --- administrator/language/en-GB/en-GB.com_config.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/language/en-GB/en-GB.com_config.ini b/administrator/language/en-GB/en-GB.com_config.ini index 1f75680684e20..4626eafedc2e5 100644 --- a/administrator/language/en-GB/en-GB.com_config.ini +++ b/administrator/language/en-GB/en-GB.com_config.ini @@ -118,9 +118,9 @@ COM_CONFIG_FIELD_MAIL_SMTP_HOST_DESC="Enter the name of the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_HOST_LABEL="SMTP Host" COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_DESC="Enter the password for the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_LABEL="SMTP Password" -COM_CONFIG_FIELD_MAIL_SMTP_PORT_DESC="Enter the port number of the SMTP server Joomla will use to send e-mails. Usually:
    - 25 when using an unsecure mail server
    - 465 when using a secure server with SMTPS
    - 25 or 587 when using a secure server with SMTP with STARTTLS extension." +COM_CONFIG_FIELD_MAIL_SMTP_PORT_DESC="Enter the port number of the SMTP server Joomla will use to send emails. Usually:
    - 25 when using an unsecure mail server
    - 465 when using a secure server with SMTPS
    - 25 or 587 when using a secure server with SMTP with STARTTLS extension." COM_CONFIG_FIELD_MAIL_SMTP_PORT_LABEL="SMTP Port" -COM_CONFIG_FIELD_MAIL_SMTP_SECURE_DESC="Select the security model of the SMTP server Joomla will use to send e-mails.
    - None for no encryption
    - SSL/TLS for SMTPS (usually on port 465)
    - STARTTLS for SMTP with STARTTLS extension (usually on port 25 or port 587)" +COM_CONFIG_FIELD_MAIL_SMTP_SECURE_DESC="Select the security model of the SMTP server Joomla will use to send emails.
    - None for no encryption
    - SSL/TLS for SMTPS (usually on port 465)
    - STARTTLS for SMTP with STARTTLS extension (usually on port 25 or port 587)" COM_CONFIG_FIELD_MAIL_SMTP_SECURE_LABEL="SMTP Security" COM_CONFIG_FIELD_MAIL_SMTP_USERNAME_DESC="Enter the username for access to the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_USERNAME_LABEL="SMTP Username" From c9f459c5c78e4cefc3780ae93a33c884c41f4d2d Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Wed, 16 Mar 2016 19:13:31 +0200 Subject: [PATCH 106/352] Captive login validation --- .../com_joomlaupdate/controller.php | 1 - .../com_joomlaupdate/views/upload/captive.php | 11 -- .../views/upload/tmpl/captive.php | 103 ++++++++++++++++++ .../views/upload/view.html.php | 43 ++++++++ .../language/en-GB/en-GB.com_joomlaupdate.ini | 2 + 5 files changed, 148 insertions(+), 12 deletions(-) delete mode 100644 administrator/components/com_joomlaupdate/views/upload/captive.php create mode 100644 administrator/components/com_joomlaupdate/views/upload/tmpl/captive.php create mode 100644 administrator/components/com_joomlaupdate/views/upload/view.html.php diff --git a/administrator/components/com_joomlaupdate/controller.php b/administrator/components/com_joomlaupdate/controller.php index 90a946fa2b54c..1040f51a948f9 100644 --- a/administrator/components/com_joomlaupdate/controller.php +++ b/administrator/components/com_joomlaupdate/controller.php @@ -67,7 +67,6 @@ public function display($cachable = false, $urlparams = false) $view->setModel($model, true); $view->setLayout($lName); - // Push document object into the view. $view->document = $document; $view->display(); diff --git a/administrator/components/com_joomlaupdate/views/upload/captive.php b/administrator/components/com_joomlaupdate/views/upload/captive.php deleted file mode 100644 index a62caffa6a749..0000000000000 --- a/administrator/components/com_joomlaupdate/views/upload/captive.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/administrator/components/com_joomlaupdate/views/upload/tmpl/captive.php b/administrator/components/com_joomlaupdate/views/upload/tmpl/captive.php new file mode 100644 index 0000000000000..19c7df5fe2292 --- /dev/null +++ b/administrator/components/com_joomlaupdate/views/upload/tmpl/captive.php @@ -0,0 +1,103 @@ + +
    +

    + +

    +

    + get('sitename')); ?> +

    +
    + +
    + +
    +
    +
    +
    +
    + + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + + +
    +
    +
    + 1): ?> +
    +
    +
    + + + + + + + + +
    +
    +
    + +
    +
    +
    + + + +
    +
    + +
    +
    +
    + + + + +
    +
    diff --git a/administrator/components/com_joomlaupdate/views/upload/view.html.php b/administrator/components/com_joomlaupdate/views/upload/view.html.php new file mode 100644 index 0000000000000..6f00dce725853 --- /dev/null +++ b/administrator/components/com_joomlaupdate/views/upload/view.html.php @@ -0,0 +1,43 @@ +load('com_installer', JPATH_ADMINISTRATOR, 'en-GB', false, true); + $language->load('com_installer', JPATH_ADMINISTRATOR, null, true); + + $language->load('mod_login', JPATH_ADMINISTRATOR, 'en-GB', false, true); + $language->load('mod_login', JPATH_ADMINISTRATOR, null, true); + + // Import com_login's model + if (!class_exists('LoginModelLogin')) + { + @include_once JPATH_ADMINISTRATOR . '/components/com_login/models/login.php'; + } + + // Render the view. + parent::display($tpl); + } +} diff --git a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini index a8a1f46dedc77..e08652f4b6c9a 100644 --- a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini +++ b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini @@ -61,3 +61,5 @@ COM_JOOMLAUPDATE_XML_DESCRIPTION="Updates Joomla to the latest version with one COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_ONLINE="Live Update" COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_UPLOAD="Upload & Update" COM_JOOMLAUPDATE_VIEW_DEFAULT_UPLOAD_INTRO="You can use this feature to update Joomla! if your server is behind a firewall or otherwise unable to contact the update servers. First download the Joomla! Upgrade Package in ZIP format from the official Joomla! download page. Then use the fields below to upload and install it." +COM_JOOMLAUPDATE_VIEW_UPLOAD_CAPTIVE_INTRO_HEAD="Are you sure you want to install the file you uploaded?" +COM_JOOMLAUPDATE_VIEW_UPLOAD_CAPTIVE_INTRO_BODY="Make sure that the update file you have uploaded comes from the official Joomla! download page. Afterwards, please confirm that you want to install it by re-entering the login information for your site “%s” below." \ No newline at end of file From 7cd1954c9f3e8f3530a10d4f6094c199e502c649 Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Thu, 17 Mar 2016 19:56:48 +0200 Subject: [PATCH 107/352] Final step to install from file --- .../com_joomlaupdate/controllers/update.php | 56 ++++++++++++- .../com_joomlaupdate/models/default.php | 78 ++++++++++++++++++- .../views/default/view.html.php | 4 + 3 files changed, 133 insertions(+), 5 deletions(-) diff --git a/administrator/components/com_joomlaupdate/controllers/update.php b/administrator/components/com_joomlaupdate/controllers/update.php index 8dfe63dccfdce..96cea55acffc5 100644 --- a/administrator/components/com_joomlaupdate/controllers/update.php +++ b/administrator/components/com_joomlaupdate/controllers/update.php @@ -196,11 +196,10 @@ public function captive() } // Do I really have an update package? - $session = JFactory::getSession(); - $file = $session->get('temp_file', null, 'com_joomlaupdate'); + $tempFile = JFactory::getApplication()->getUserState('com_joomlaupdate.temp_file', null); - JLoader::import('joomla.filesystem.file'); - if (empty($file) || !JFile::exists($file)) + JLoader::import('joomla.filesystem.tempFile'); + if (empty($tempFile) || !JFile::exists($tempFile)) { throw new RuntimeException(JText::_('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN'), 403); } @@ -211,6 +210,55 @@ public function captive() $this->display(); } + public function confirm() + { + // Check for request forgeries + JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); + + // Did a non Super User tried to upload something (a.k.a. pathetic hacking attempt)? + if (!JFactory::getUser()->authorise('core.admin')) + { + throw new RuntimeException(JText::_('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN'), 403); + } + + // Get the model + /** @var JoomlaupdateModelDefault $model */ + $model = $this->getModel('default'); + + // Get the captive file before the session resets + $tempFile = JFactory::getApplication()->getUserState('com_joomlaupdate.temp_file', null); + + // Do I really have an update package? + if (!$model->captiveFileExists()) + { + throw new RuntimeException(JText::_('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN'), 403); + } + + // Try to log in + $credentials = array( + 'username' => $this->input->post->get('username', '', 'username'), + 'password' => $this->input->post->get('passwd', '', 'raw'), + 'secretkey' => $this->input->post->get('secretkey', '', 'RAW'), + ); + $result = $model->captiveLogin($credentials); + + if (!$result) + { + $model->removePackageFiles(); + + throw new RuntimeException(JText::_('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN'), 403); + } + + // Set the update source in the session + JFactory::getApplication()->setUserState('com_joomlaupdate.file', $tempFile); + + // Redirect to the actual update page + $url = 'index.php?option=com_joomlaupdate&task=update.install'; + JLog::add(JText::sprintf('COM_JOOMLAUPDATE_UPDATE_LOG_FILE', $tempFile), JLog::INFO, 'Update'); + + $this->setRedirect($url); + } + /** * Method to display a view. * diff --git a/administrator/components/com_joomlaupdate/models/default.php b/administrator/components/com_joomlaupdate/models/default.php index baf3fdc35868c..b6478f8b48f58 100644 --- a/administrator/components/com_joomlaupdate/models/default.php +++ b/administrator/components/com_joomlaupdate/models/default.php @@ -864,6 +864,82 @@ public function upload() throw new RuntimeException(JText::_('COM_INSTALLER_MSG_INSTALL_WARNINSTALLUPLOADERROR'), 500); } - $session = JFactory::getSession(); + JFactory::getApplication()->setUserState('com_joomlaupdate.temp_file', $tmp_dest); + } + + public function captiveLogin($credentials) + { + // Make sure the username matches + $username = isset($credentials['username']) ? $credentials['username'] : null; + $user = JFactory::getUser(); + + if ($user->username != $username) + { + return false; + } + + // Make sure the user we're authorising is a Super User + if (!$user->authorise('core.admin')) + { + return false; + } + + // Get the global JAuthentication object. + jimport('joomla.user.authentication'); + + $authenticate = JAuthentication::getInstance(); + $response = $authenticate->authenticate($credentials); + + if ($response->status !== JAuthentication::STATUS_SUCCESS) + { + return false; + } + + return true; + } + + /** + * Does the captive (temporary) file we uploaded before still exist? + * + * @return bool + */ + public function captiveFileExists() + { + $file = JFactory::getApplication()->getUserState('com_joomlaupdate.temp_file', null); + + JLoader::import('joomla.filesystem.file'); + + if (empty($file) || !JFile::exists($file)) + { + return false; + } + + return true; + } + + /** + * Remove the captive (temporary) file we uploaded before and the . + * + * @return void + */ + public function removePackageFiles() + { + $files = array( + JFactory::getApplication()->getUserState('com_joomlaupdate.temp_file', null), + JFactory::getApplication()->getUserState('com_joomlaupdate.file', null), + ); + + JLoader::import('joomla.filesystem.file'); + + foreach ($files as $file) + { + if (JFile::exists($file)) + { + if (!@unlink($file)) + { + JFile::delete($file); + } + } + } } } diff --git a/administrator/components/com_joomlaupdate/views/default/view.html.php b/administrator/components/com_joomlaupdate/views/default/view.html.php index 8ed40e726b391..cfa5c69fa51de 100644 --- a/administrator/components/com_joomlaupdate/views/default/view.html.php +++ b/administrator/components/com_joomlaupdate/views/default/view.html.php @@ -31,6 +31,7 @@ public function display($tpl = null) $this->state = $this->get('State'); // Load useful classes. + /** @var JoomlaupdateModelDefault $model */ $model = $this->getModel(); $this->loadHelper('select'); @@ -112,6 +113,9 @@ public function display($tpl = null) // Only Super Users have access to the Update & Install for obvious security reasons $this->showUploadAndUpdate = JFactory::getUser()->authorise('core.admin'); + // Remove temporary files + $model->removePackageFiles(); + // Render the view. parent::display($tpl); } From c714664b1e02e41fbd5696c61e5617a2ed92c9be Mon Sep 17 00:00:00 2001 From: "Nicholas K. Dionysopoulos" Date: Thu, 17 Mar 2016 20:39:36 +0200 Subject: [PATCH 108/352] Fix FTP mode; add Hybrid mode While the FTP credentials were applied, the file write method was ignored. That explains why a buch of users reported that Joomla! Update didn't work for them. Since the included restore.php supports the Hybrid file write mode (direct file writes where possible, FTP only when the file is unwriteable) I added that option as well. --- .../com_joomlaupdate/controllers/update.php | 4 + .../com_joomlaupdate/helpers/select.php | 5 +- .../com_joomlaupdate/models/default.php | 4 +- .../views/default/tmpl/default.php | 28 +++++- .../views/default/tmpl/default_upload.php | 94 ++++++++++++++++--- .../views/default/view.html.php | 6 +- .../language/en-GB/en-GB.com_joomlaupdate.ini | 18 ++-- media/com_joomlaupdate/js/default.js | 35 +++---- 8 files changed, 138 insertions(+), 56 deletions(-) diff --git a/administrator/components/com_joomlaupdate/controllers/update.php b/administrator/components/com_joomlaupdate/controllers/update.php index 96cea55acffc5..a6ad19b411a93 100644 --- a/administrator/components/com_joomlaupdate/controllers/update.php +++ b/administrator/components/com_joomlaupdate/controllers/update.php @@ -166,6 +166,8 @@ public function upload() // Did a non Super User tried to upload something (a.k.a. pathetic hacking attempt)? JFactory::getUser()->authorise('core.admin') or jexit(JText::_('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN')); + $this->_applyCredentials(); + /** @var JoomlaupdateModelDefault $model */ $model = $this->getModel('Default'); @@ -307,6 +309,8 @@ public function display($cachable = false, $urlparams = array()) */ protected function _applyCredentials() { + JFactory::getApplication()->getUserStateFromRequest('com_joomlaupdate.method', 'method', 'direct', 'cmd'); + if (!JClientHelper::hasCredentials('ftp')) { $user = JFactory::getApplication()->getUserStateFromRequest('com_joomlaupdate.ftp_user', 'ftp_user', null, 'raw'); diff --git a/administrator/components/com_joomlaupdate/helpers/select.php b/administrator/components/com_joomlaupdate/helpers/select.php index 384b294ccfef7..5c40245cf714a 100644 --- a/administrator/components/com_joomlaupdate/helpers/select.php +++ b/administrator/components/com_joomlaupdate/helpers/select.php @@ -25,12 +25,13 @@ class JoomlaupdateHelperSelect * * @since 2.5.4 */ - public static function getMethods($default = 'direct') + public static function getMethods($default = 'hybrid', $name = 'method', $id = 'extraction_method') { $options = array(); $options[] = JHtml::_('select.option', 'direct', JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_METHOD_DIRECT')); + $options[] = JHtml::_('select.option', 'hybrid', JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_METHOD_HYBRID')); $options[] = JHtml::_('select.option', 'ftp', JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_METHOD_FTP')); - return JHtml::_('select.genericlist', $options, 'method', '', 'value', 'text', $default, 'extraction_method'); + return JHtml::_('select.genericlist', $options, $name, '', 'value', 'text', $default, $id); } } diff --git a/administrator/components/com_joomlaupdate/models/default.php b/administrator/components/com_joomlaupdate/models/default.php index b6478f8b48f58..476a43c324d94 100644 --- a/administrator/components/com_joomlaupdate/models/default.php +++ b/administrator/components/com_joomlaupdate/models/default.php @@ -324,7 +324,7 @@ public function createRestorationFile($basename = null) $app->setUserState('com_joomlaupdate.password', $password); // Do we have to use FTP? - $method = $app->input->get('method', 'direct'); + $method = JFactory::getApplication()->getUserStateFromRequest('com_joomlaupdate.method', 'method', 'direct', 'cmd'); // Get the absolute path to site's root. $siteroot = JPATH_SITE; @@ -361,7 +361,7 @@ public function createRestorationFile($basename = null) 'kickstart.setup.dryrun' => '0' ENDDATA; - if ($method == 'ftp') + if ($method != 'direct') { /* * Fetch the FTP parameters from the request. Note: The password should be diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php index 537413a541105..ceba35b7a3135 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php @@ -15,6 +15,23 @@ JHtml::_('bootstrap.tooltip'); JHtml::_('formbehavior.chosen', 'select'); JHtml::script('com_joomlaupdate/default.js', false, true, false); + +JFactory::getDocument()->addScriptDeclaration(<<< JS +jQuery(document).ready(function($) { + $('#extraction_method').change(function(e){ + extractionMethodHandler('#extraction_method', 'row_ftp'); + }); + $('#upload_method').change(function(e){ + extractionMethodHandler('#upload_method', 'upload_ftp'); + }); + + $('button.submit').on('click', function() { + $('div.download_message').show(); + }); +}); + +JS +) ?>
    @@ -37,6 +54,12 @@ echo $this->loadTemplate('update'); } + ?> + + + + + showUploadAndUpdate) { @@ -44,6 +67,7 @@ echo JHtml::_('bootstrap.addTab', 'joomlaupdate-tabs', 'upload-update', JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_UPLOAD')); echo $this->loadTemplate('upload'); + echo JHtml::_('bootstrap.endTab'); echo JHtml::_('bootstrap.endTabSet'); } @@ -51,10 +75,6 @@ echo JHtml::_('form.token'); ?> - - - - From 6445b6c51288bc67c588d7a318d7c56d2c02b3f5 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 14:59:26 +0100 Subject: [PATCH 174/352] Update captive.php --- .../components/com_joomlaupdate/views/upload/tmpl/captive.php | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/upload/tmpl/captive.php b/administrator/components/com_joomlaupdate/views/upload/tmpl/captive.php index bffccc8ce8c1b..0ae0824514e74 100644 --- a/administrator/components/com_joomlaupdate/views/upload/tmpl/captive.php +++ b/administrator/components/com_joomlaupdate/views/upload/tmpl/captive.php @@ -15,7 +15,6 @@ require_once JPATH_ADMINISTRATOR . '/modules/mod_login/helper.php'; $twofactormethods = ModLoginHelper::getTwoFactorMethods(); -$language = JFactory::getLanguage(); ?>
    From 4e72df1458b7bcbe879d1b046aeef4566627126b Mon Sep 17 00:00:00 2001 From: matrikular Date: Sat, 26 Mar 2016 15:13:16 +0100 Subject: [PATCH 175/352] Fix form validation in com_users login view --- .../views/login/tmpl/default_login.php | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/components/com_users/views/login/tmpl/default_login.php b/components/com_users/views/login/tmpl/default_login.php index c2825075606ff..a6be529db3caa 100644 --- a/components/com_users/views/login/tmpl/default_login.php +++ b/components/com_users/views/login/tmpl/default_login.php @@ -10,18 +10,20 @@ defined('_JEXEC') or die; JHtml::_('behavior.keepalive'); +JHtml::_('behavior.formvalidator'); + ?> -
    +
    params->get('show_page_heading')) : ?> - + - params->get('logindescription_show') == 1 && str_replace(' ', '', $this->params->get('login_description')) != '') || $this->params->get('login_image') != '') : ?> - @@ -72,9 +74,7 @@
    - +
    From cd128af8fb70c21fffc559948c8b3fcec4c02b14 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 15:17:08 +0100 Subject: [PATCH 176/352] Update default_reinstall.php --- .../views/default/tmpl/default_reinstall.php | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php index 8c6435c890eaf..c0944352e2b50 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php @@ -28,7 +28,7 @@ - + @@ -36,16 +36,18 @@ - - - - - - - updateInfo['object']->get('infourl')->title; ?> - - - + updateInfo['object']->get('infourl')->_data) && isset($this->updateInfo['object']->get('infourl')->title) : ?> + + + + + + + updateInfo['object']->get('infourl')->title; ?> + + + + @@ -110,4 +112,4 @@ - \ No newline at end of file + From 6f897968002b9d0ee9e08029c56e9f96d4445bff Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 15:18:16 +0100 Subject: [PATCH 177/352] Update default_update.php --- .../views/default/tmpl/default_update.php | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php index b245a4ace0ec9..8cf3766988ff6 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php @@ -47,16 +47,18 @@ - - - - - - - updateInfo['object']->get('infourl')->title; ?> - - - + updateInfo['object']->get('infourl')->_data) && isset($this->updateInfo['object']->get('infourl')->title) : ?> + + + + + + + updateInfo['object']->get('infourl')->title; ?> + + + + @@ -119,4 +121,4 @@ - \ No newline at end of file + From 9baeb7cd6b651744feb40aaa2a61234a795ba4b0 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 15:21:11 +0100 Subject: [PATCH 178/352] Update default_reinstall.php --- .../com_joomlaupdate/views/default/tmpl/default_reinstall.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php index c0944352e2b50..ae8ddc33ead7c 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php @@ -36,7 +36,8 @@ - updateInfo['object']->get('infourl')->_data) && isset($this->updateInfo['object']->get('infourl')->title) : ?> + updateInfo['object']->get('infourl')->_data) + && isset($this->updateInfo['object']->get('infourl')->title) : ?> From eb6bf3fb5fd18f85014d6810dbe081b9548162dd Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 15:21:57 +0100 Subject: [PATCH 179/352] Update default_update.php --- .../com_joomlaupdate/views/default/tmpl/default_update.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php index 8cf3766988ff6..7e32593f6f721 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php @@ -47,7 +47,8 @@ - updateInfo['object']->get('infourl')->_data) && isset($this->updateInfo['object']->get('infourl')->title) : ?> + updateInfo['object']->get('infourl')->_data) + && isset($this->updateInfo['object']->get('infourl')->title) : ?> From a36bbc4474f35b1e846a9e1515b5966f51898244 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 15:28:37 +0100 Subject: [PATCH 180/352] Create default_noupdate.php --- .../views/default/tmpl/default_noupdate.php | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php new file mode 100644 index 0000000000000..378cecbd5bc4d --- /dev/null +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php @@ -0,0 +1,21 @@ + + +
    + + + +

    + updateInfo['latest'], $this->updateInfo['latest']); ?> +

    +
    From 17c3143f1e4ff4ce310bcd1303f38a193043e573 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 15:30:54 +0100 Subject: [PATCH 181/352] Update default.php --- .../com_joomlaupdate/views/default/tmpl/default.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php index 32c95f260164c..fef771a4253a5 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php @@ -39,7 +39,10 @@ - updateInfo['hasUpdate']) : ?> + + updateInfo['object']->downloadurl->_data)) : ?> + loadTemplate('noupdate'); ?> + updateInfo['hasUpdate']) : ?> loadTemplate('reinstall'); ?> loadTemplate('update'); ?> From 927276eb6eee321c1ca4e22459609f23ae871172 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 15:39:42 +0100 Subject: [PATCH 182/352] Update en-GB.com_joomlaupdate.ini --- administrator/language/en-GB/en-GB.com_joomlaupdate.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini index 3494a023e90b0..753fe5c9cc3fd 100644 --- a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini +++ b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini @@ -27,6 +27,8 @@ COM_JOOMLAUPDATE_UPDATE_LOG_URL="Downloading update file from %s." COM_JOOMLAUPDATE_VIEW_COMPLETE_HEADING="Joomla Version Update Status" COM_JOOMLAUPDATE_VIEW_COMPLETE_MESSAGE="Your site has been successfully updated. Your Joomla version is now %s." COM_JOOMLAUPDATE_VIEW_DEFAULT_DOWNLOAD_IN_PROGRESS="Downloading update file. Please wait ..." +COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_DOWNLOAD_URL="We can't find a download URL" +COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_DOWNLOAD_URL_DESC="An update to Joomla %s was found, but it wasn't possible to fetch the download URL for that update. There are two possibilities why this happens:
    - Your host doesn't support the minimum requirements for Joomla %s and there is no alternative download for your configuration available.
    - There is a problem with Joomla Update Server.

    Please try to download the update package from the official Joomla download page and use the Upload and Install tab." COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_DIRECTORY="FTP folder" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_HOSTNAME="FTP host" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_PASSWORD="FTP password" From 4c339e444f5e9778bf8b31d6936bd01ed51ebf76 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 15:40:38 +0100 Subject: [PATCH 183/352] Update default_noupdate.php --- .../com_joomlaupdate/views/default/tmpl/default_noupdate.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php index 378cecbd5bc4d..e20051e6cbf11 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php @@ -16,6 +16,6 @@

    - updateInfo['latest'], $this->updateInfo['latest']); ?> + updateInfo['latest'], $this->updateInfo['latest'], 'https://www.joomla.org/download.html'); ?>

    From 0a3339bac48f8939ee929c4d71934766e76a0da0 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 15:44:14 +0100 Subject: [PATCH 184/352] Update en-GB.com_joomlaupdate.ini --- administrator/language/en-GB/en-GB.com_joomlaupdate.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini index 753fe5c9cc3fd..b78a6bdb366ec 100644 --- a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini +++ b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini @@ -62,7 +62,7 @@ COM_JOOMLAUPDATE_VIEW_UPDATE_DOWNLOADFAILED="Download of update package failed." COM_JOOMLAUPDATE_VIEW_UPDATE_FILESEXTRACTED="Files extracted" COM_JOOMLAUPDATE_VIEW_UPDATE_INPROGRESS="Updating your Joomla files. Please wait ..." COM_JOOMLAUPDATE_VIEW_UPDATE_PERCENT="Percent complete" -COM_JOOMLAUPDATE_VIEW_UPLOAD_CAPTIVE_INTRO_BODY="Make sure that the update file you have uploaded comes from the official Joomla download page. Afterwards, please confirm that you want to install it by re-entering the login information for your site “%s” below." +COM_JOOMLAUPDATE_VIEW_UPLOAD_CAPTIVE_INTRO_BODY="Make sure that the update file you have uploaded comes from the official Joomla download page. Afterwards, please confirm that you want to install it by re-entering the login information for your site „%s“ below." COM_JOOMLAUPDATE_VIEW_UPLOAD_CAPTIVE_INTRO_HEAD="Are you sure you want to install the file you uploaded?" COM_JOOMLAUPDATE_VIEW_UPLOAD_PACKAGE_FILE="Joomla package file" COM_JOOMLAUPDATE_XML_DESCRIPTION="Updates Joomla to the latest version with one click." From 971cad14bfa35825df2aaefbd201cd302e34d7e3 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 15:57:16 +0100 Subject: [PATCH 185/352] Update default.php --- .../com_joomlaupdate/views/default/tmpl/default.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php index fef771a4253a5..08f9c9a2eee0f 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php @@ -39,12 +39,14 @@ - updateInfo['object']->downloadurl->_data)) : ?> + loadTemplate('noupdate'); ?> updateInfo['hasUpdate']) : ?> + loadTemplate('reinstall'); ?> + loadTemplate('update'); ?> From fb67346c21b95802cccb79938e7283d087a58ac7 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 16:02:32 +0100 Subject: [PATCH 186/352] Update default_reinstall.php --- .../com_joomlaupdate/views/default/tmpl/default_reinstall.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php index ae8ddc33ead7c..20a7cde85c92a 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_reinstall.php @@ -23,7 +23,7 @@
    - updateInfo['object']) && ($this->updateInfo['object'] instanceof JUpdate)): ?> + updateInfo['object']) && ($this->updateInfo['object'] instanceof JUpdate)) : ?> @@ -37,7 +37,7 @@ updateInfo['object']->get('infourl')->_data) - && isset($this->updateInfo['object']->get('infourl')->title) : ?> + && isset($this->updateInfo['object']->get('infourl')->title)) : ?> updateInfo['object']->get('infourl')->_data) - && isset($this->updateInfo['object']->get('infourl')->title) : ?> + && isset($this->updateInfo['object']->get('infourl')->title)) : ?> From 9c4c49f1018ffe1387075f84eac8399bc5a93b4a Mon Sep 17 00:00:00 2001 From: Jelle Kok Date: Sat, 2 Apr 2016 12:45:22 +0200 Subject: [PATCH 241/352] remove warning css is not needed --- .../components/com_installer/views/warnings/tmpl/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_installer/views/warnings/tmpl/default.php b/administrator/components/com_installer/views/warnings/tmpl/default.php index c896de6c024df..2ca3bc3857349 100644 --- a/administrator/components/com_installer/views/warnings/tmpl/default.php +++ b/administrator/components/com_installer/views/warnings/tmpl/default.php @@ -25,7 +25,7 @@ -
    +
    ×
    From 477863c346dd02aaf14f65cad17425e45472bd0c Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 2 Apr 2016 12:09:42 +0100 Subject: [PATCH 242/352] add clear:both to j-sidebar-container div (rtl css file) --- administrator/templates/isis/css/template-rtl.css | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/templates/isis/css/template-rtl.css b/administrator/templates/isis/css/template-rtl.css index 99a336c53c47e..940a5ab48dd07 100644 --- a/administrator/templates/isis/css/template-rtl.css +++ b/administrator/templates/isis/css/template-rtl.css @@ -8044,6 +8044,7 @@ a.grid_true { margin: -10px 0 0 -1px; padding-top: 28px; padding-bottom: 10px; + clear: both; background-color: #f5f5f5; border-bottom: 1px solid #e3e3e3; border-right: 1px solid #e3e3e3; From 11a45282f18a0f2a5613cb80d62d7f03ec86eb98 Mon Sep 17 00:00:00 2001 From: Jelle Kok Date: Sat, 2 Apr 2016 16:37:24 +0200 Subject: [PATCH 243/352] Update to enqueueMessage --- .../com_installer/views/warnings/tmpl/default.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/administrator/components/com_installer/views/warnings/tmpl/default.php b/administrator/components/com_installer/views/warnings/tmpl/default.php index 2ca3bc3857349..5f48c4b25c589 100644 --- a/administrator/components/com_installer/views/warnings/tmpl/default.php +++ b/administrator/components/com_installer/views/warnings/tmpl/default.php @@ -20,15 +20,9 @@
    messages)) : ?> -
    - × - -
    + enqueueMessage(JText::_('COM_INSTALLER_MSG_WARNINGS_NONE'), 'notice'); ?> -
    - × - -
    + enqueueMessage(JText::_('COM_INSTALLER_MSG_WARNINGS_NOTICE'), ''); ?> 'warning0')); ?> messages as $message) : ?> From e9672a559e0062ff891b3ae99d7b7bcba11a4424 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 2 Apr 2016 17:57:34 +0100 Subject: [PATCH 244/352] align flags --- administrator/templates/isis/css/template-rtl.css | 3 +++ administrator/templates/isis/css/template.css | 5 ++++- administrator/templates/isis/less/template.less | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/administrator/templates/isis/css/template-rtl.css b/administrator/templates/isis/css/template-rtl.css index 99a336c53c47e..2bd59e53bd089 100644 --- a/administrator/templates/isis/css/template-rtl.css +++ b/administrator/templates/isis/css/template-rtl.css @@ -7607,6 +7607,9 @@ html[dir=rtl] .quick-icons .nav-list [class*=" icon-"] { display: block; padding: 3px 20px; } +.nav-collapse .dropdown-menu > li img { + max-width: none; +} @media (max-width: 767px) { .navbar-fixed-top .navbar-inner, .navbar-fixed-top .navbar-inner .container-fluid { diff --git a/administrator/templates/isis/css/template.css b/administrator/templates/isis/css/template.css index ba425fbd5a00a..9b462a93d2cc9 100644 --- a/administrator/templates/isis/css/template.css +++ b/administrator/templates/isis/css/template.css @@ -2790,7 +2790,7 @@ input[type="submit"].btn.btn-mini { color: #8a6d3b; } .alert h4 { - margin: 0 0 .5em; + margin: 0 0 .5em; } .alert .close { position: relative; @@ -7607,6 +7607,9 @@ html[dir=rtl] .quick-icons .nav-list [class*=" icon-"] { display: block; padding: 3px 20px; } +.nav-collapse .dropdown-menu > li img { + max-width: none; +} @media (max-width: 767px) { .navbar-fixed-top .navbar-inner, .navbar-fixed-top .navbar-inner .container-fluid { diff --git a/administrator/templates/isis/less/template.less b/administrator/templates/isis/less/template.less index 0b1a3d4fa5943..db6448eae13af 100644 --- a/administrator/templates/isis/less/template.less +++ b/administrator/templates/isis/less/template.less @@ -768,6 +768,12 @@ html[dir=rtl] .quick-icons .nav-list [class^="icon-"], html[dir=rtl] .quick-icon padding: 3px 20px; } +.nav-collapse .dropdown-menu > li { + img { + max-width: none; + } +} + @media (max-width: @navbarCollapseWidth) { .navbar-fixed-top .navbar-inner, .navbar-fixed-top .navbar-inner .container-fluid { From 230364bcd7090c0553d6b3592e6558062bb799d4 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 2 Apr 2016 19:56:03 +0100 Subject: [PATCH 245/352] installer languages ux improvements --- installation/language/en-GB/en-GB.ini | 1 + installation/model/languages.php | 2 +- installation/view/languages/tmpl/default.php | 45 ++++++++++++-------- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/installation/language/en-GB/en-GB.ini b/installation/language/en-GB/en-GB.ini index ee8de6484dc4f..2f1ce3aada8e8 100644 --- a/installation/language/en-GB/en-GB.ini +++ b/installation/language/en-GB/en-GB.ini @@ -136,6 +136,7 @@ INSTL_COMPLETE_INSTALL_LANGUAGES="Extra steps: Install languages" ;Languages view INSTL_LANGUAGES="Install Language packages" INSTL_LANGUAGES_COLUMN_HEADER_LANGUAGE="Language" +INSTL_LANGUAGES_COLUMN_HEADER_LANGUAGE_TAG="Language Tag" INSTL_LANGUAGES_COLUMN_HEADER_VERSION="Version" INSTL_LANGUAGES_DESC="The Joomla interface is available in several languages. Choose your preferred languages by choosing the checkboxes and then install them by selecting the Next button.
    Note: this operation will take about 10 seconds to download and install every language. To avoid timeouts please select no more than 3 languages to install." INSTL_LANGUAGES_MESSAGE_PLEASE_WAIT="This operation will take up to 10 seconds per language to complete
    Please wait while we download and install the languages ..." diff --git a/installation/model/languages.php b/installation/model/languages.php index c9e878741fcf6..617ecc8fce407 100644 --- a/installation/model/languages.php +++ b/installation/model/languages.php @@ -106,7 +106,7 @@ public function getItems() $query = $db->getQuery(true); // Select the required fields from the updates table. - $query->select($db->qn(array('update_id', 'name', 'version'))) + $query->select($db->qn(array('update_id', 'name', 'element', 'version'))) ->from($db->qn('#__updates')) ->order($db->qn('name')); diff --git a/installation/view/languages/tmpl/default.php b/installation/view/languages/tmpl/default.php index 12a56f616ac1a..b3380db58c763 100644 --- a/installation/view/languages/tmpl/default.php +++ b/installation/view/languages/tmpl/default.php @@ -70,35 +70,46 @@ class="btn btn-primary"
    From 25ce3587124299b21a31ec5389c7486360a6a421 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 16:03:06 +0100 Subject: [PATCH 187/352] Update default_update.php --- .../com_joomlaupdate/views/default/tmpl/default_update.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php index 7e32593f6f721..6b27b6b18ccc9 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_update.php @@ -48,7 +48,7 @@
    From 0666516ce87ae534c5d536a1332c404591d0d839 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 16:06:05 +0100 Subject: [PATCH 188/352] Update en-GB.com_joomlaupdate.ini --- administrator/language/en-GB/en-GB.com_joomlaupdate.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini index b78a6bdb366ec..a1c6fa45ddf45 100644 --- a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini +++ b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini @@ -46,6 +46,7 @@ COM_JOOMLAUPDATE_VIEW_DEFAULT_METHOD="Installation method" COM_JOOMLAUPDATE_VIEW_DEFAULT_NOUPDATES="No updates available." COM_JOOMLAUPDATE_VIEW_DEFAULT_NOUPDATESNOTICE="You already have the latest Joomla version, %s." COM_JOOMLAUPDATE_VIEW_DEFAULT_PACKAGE="Update package URL" +COM_JOOMLAUPDATE_VIEW_DEFAULT_PACKAGE_REINSTALL="Reinstall package URL" COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_ONLINE="Live Update" COM_JOOMLAUPDATE_VIEW_DEFAULT_TAB_UPLOAD="Upload & Update" COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATE_NOTICE="Before you update Joomla, ensure that the installed extensions are available for the new Joomla version." From 37b4cfbdb46c6987a5d56250eee5540755e33b56 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 16:17:18 +0100 Subject: [PATCH 189/352] Update en-GB.com_joomlaupdate.ini --- administrator/language/en-GB/en-GB.com_joomlaupdate.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini index a1c6fa45ddf45..52562701486db 100644 --- a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini +++ b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini @@ -28,7 +28,7 @@ COM_JOOMLAUPDATE_VIEW_COMPLETE_HEADING="Joomla Version Update Status" COM_JOOMLAUPDATE_VIEW_COMPLETE_MESSAGE="Your site has been successfully updated. Your Joomla version is now %s." COM_JOOMLAUPDATE_VIEW_DEFAULT_DOWNLOAD_IN_PROGRESS="Downloading update file. Please wait ..." COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_DOWNLOAD_URL="We can't find a download URL" -COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_DOWNLOAD_URL_DESC="An update to Joomla %s was found, but it wasn't possible to fetch the download URL for that update. There are two possibilities why this happens:
    - Your host doesn't support the minimum requirements for Joomla %s and there is no alternative download for your configuration available.
    - There is a problem with Joomla Update Server.

    Please try to download the update package from the official Joomla download page and use the Upload and Install tab." +COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_DOWNLOAD_URL_DESC="An update to Joomla %1$s was found, but it wasn't possible to fetch the download URL for that update. There are two possibilities why this happens:
    - Your host doesn't support the minimum requirements for Joomla %1$s and there is no alternative download for your configuration available.
    - There is a problem with Joomla Update Server.

    Please try to download the update package from the official Joomla download page and use the Upload and Install tab." COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_DIRECTORY="FTP folder" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_HOSTNAME="FTP host" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_PASSWORD="FTP password" From 636d1d6acde3d65acf813a1439dedfc3579f7095 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 16:18:04 +0100 Subject: [PATCH 190/352] Update default_noupdate.php --- .../com_joomlaupdate/views/default/tmpl/default_noupdate.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php index e20051e6cbf11..8b9e29bd42c03 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php @@ -16,6 +16,6 @@

    - updateInfo['latest'], $this->updateInfo['latest'], 'https://www.joomla.org/download.html'); ?> + updateInfo['latest'], 'https://www.joomla.org/download.html'); ?>

    From f9d4bce796a74286facfe18257425bb074f64cbb Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 16:18:18 +0100 Subject: [PATCH 191/352] Rename default_noupdate.php to default_nodownload.php --- .../default/tmpl/{default_noupdate.php => default_nodownload.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename administrator/components/com_joomlaupdate/views/default/tmpl/{default_noupdate.php => default_nodownload.php} (100%) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php similarity index 100% rename from administrator/components/com_joomlaupdate/views/default/tmpl/default_noupdate.php rename to administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php From ea36fcead0f97208609be34818c2d5aee2b86946 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 16:18:51 +0100 Subject: [PATCH 192/352] Update default.php --- .../components/com_joomlaupdate/views/default/tmpl/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php index 08f9c9a2eee0f..63b56778fb98f 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php @@ -41,7 +41,7 @@ updateInfo['object']->downloadurl->_data)) : ?> - loadTemplate('noupdate'); ?> + loadTemplate('nodownload'); ?> updateInfo['hasUpdate']) : ?> loadTemplate('reinstall'); ?> From 2e14033023e92be84ff211b322048eb4c10a47f5 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 16:21:24 +0100 Subject: [PATCH 193/352] Update default_nodownload.php --- .../com_joomlaupdate/views/default/tmpl/default_nodownload.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php index 8b9e29bd42c03..cd59429dba91d 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php @@ -16,6 +16,5 @@

    - updateInfo['latest'], 'https://www.joomla.org/download.html'); ?> -

    + updateInfo['latest']); From 1083ba837d0426b0d0f6c5aae2ca0d8c9056e1db Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 16:22:44 +0100 Subject: [PATCH 194/352] Update en-GB.com_joomlaupdate.ini --- administrator/language/en-GB/en-GB.com_joomlaupdate.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini index 52562701486db..672fc70dcf1db 100644 --- a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini +++ b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini @@ -28,7 +28,7 @@ COM_JOOMLAUPDATE_VIEW_COMPLETE_HEADING="Joomla Version Update Status" COM_JOOMLAUPDATE_VIEW_COMPLETE_MESSAGE="Your site has been successfully updated. Your Joomla version is now %s." COM_JOOMLAUPDATE_VIEW_DEFAULT_DOWNLOAD_IN_PROGRESS="Downloading update file. Please wait ..." COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_DOWNLOAD_URL="We can't find a download URL" -COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_DOWNLOAD_URL_DESC="An update to Joomla %1$s was found, but it wasn't possible to fetch the download URL for that update. There are two possibilities why this happens:
    - Your host doesn't support the minimum requirements for Joomla %1$s and there is no alternative download for your configuration available.
    - There is a problem with Joomla Update Server.

    Please try to download the update package from the official Joomla download page and use the Upload and Install tab." +COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_DOWNLOAD_URL_DESC="An update to Joomla %1$s was found, but it wasn't possible to fetch the download URL for that update. There are two possibilities why this happens:
    - Your host doesn't support the minimum requirements for Joomla %1$s and there is no alternative download for your configuration available.
    - There is a problem with Joomla Update Server.

    Please try to download the update package from the official Joomla download page and use the Upload and Install tab." COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_DIRECTORY="FTP folder" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_HOSTNAME="FTP host" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_PASSWORD="FTP password" From 76c45d4bebae3bc061ad0083f1a6b69cc1aa907d Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 16:23:17 +0100 Subject: [PATCH 195/352] Update default_nodownload.php --- .../com_joomlaupdate/views/default/tmpl/default_nodownload.php | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php index cd59429dba91d..5f583b0e62d8d 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php @@ -17,4 +17,5 @@

    updateInfo['latest']); +

    From de9a2f852ad048fd7f013c6c901c1b002eb82284 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 16:28:04 +0100 Subject: [PATCH 196/352] Update default_upload.php --- .../com_joomlaupdate/views/default/tmpl/default_upload.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php index 898c09dd6cd4f..fbe06c4a54370 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php @@ -66,15 +66,15 @@

    -warnings)) : ?> +warnings != 0)) : ?>
    - 'warning0')); ?> - warnings as $message) : ?> + 'warning' . $i)); ?> + warnings as $message) : ?> From 764182388a639f4df093a28864f5428197442c2b Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 16:58:13 +0100 Subject: [PATCH 197/352] Update view.html.php --- .../components/com_joomlaupdate/views/upload/view.html.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/administrator/components/com_joomlaupdate/views/upload/view.html.php b/administrator/components/com_joomlaupdate/views/upload/view.html.php index 506c06454c767..b4b600ffd307a 100644 --- a/administrator/components/com_joomlaupdate/views/upload/view.html.php +++ b/administrator/components/com_joomlaupdate/views/upload/view.html.php @@ -37,9 +37,6 @@ public function display($tpl = null) $language->load('com_installer', JPATH_ADMINISTRATOR, 'en-GB', false, true); $language->load('com_installer', JPATH_ADMINISTRATOR, null, true); - $language->load('mod_login', JPATH_ADMINISTRATOR, 'en-GB', false, true); - $language->load('mod_login', JPATH_ADMINISTRATOR, null, true); - // Import com_login's model if (!class_exists('LoginModelLogin')) { From 985a310394cf823704f248068a130b910ce8b012 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 18:41:36 +0100 Subject: [PATCH 198/352] Update joomlaupdate.xml --- administrator/components/com_joomlaupdate/joomlaupdate.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/components/com_joomlaupdate/joomlaupdate.xml b/administrator/components/com_joomlaupdate/joomlaupdate.xml index ac30d7ee2d184..30a995211326a 100644 --- a/administrator/components/com_joomlaupdate/joomlaupdate.xml +++ b/administrator/components/com_joomlaupdate/joomlaupdate.xml @@ -11,6 +11,7 @@ COM_JOOMLAUPDATE_XML_DESCRIPTION + access.xml config.xml controller.php joomlaupdate.php From fcd8d0a09566529afda5020c1e09e09aa14af1a4 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 19:02:46 +0100 Subject: [PATCH 199/352] Update joomlaupdate.xml --- administrator/components/com_joomlaupdate/joomlaupdate.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/components/com_joomlaupdate/joomlaupdate.xml b/administrator/components/com_joomlaupdate/joomlaupdate.xml index 30a995211326a..86ac0fd7f9058 100644 --- a/administrator/components/com_joomlaupdate/joomlaupdate.xml +++ b/administrator/components/com_joomlaupdate/joomlaupdate.xml @@ -10,6 +10,7 @@ 3.5.2 COM_JOOMLAUPDATE_XML_DESCRIPTION + com_joomlaupdate access.xml config.xml From 2454ce41c193d521de8427d25341b0bc258d0413 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 19:06:38 +0100 Subject: [PATCH 200/352] Update joomlaupdate.xml --- administrator/components/com_joomlaupdate/joomlaupdate.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/joomlaupdate.xml b/administrator/components/com_joomlaupdate/joomlaupdate.xml index 86ac0fd7f9058..2d833ced52406 100644 --- a/administrator/components/com_joomlaupdate/joomlaupdate.xml +++ b/administrator/components/com_joomlaupdate/joomlaupdate.xml @@ -10,7 +10,7 @@ 3.5.2 COM_JOOMLAUPDATE_XML_DESCRIPTION - com_joomlaupdate + com_joomlaupdate access.xml config.xml From 3e8f66a0e51cf7763c63aaeaf24711aead694305 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 19:33:05 +0100 Subject: [PATCH 201/352] Update joomlaupdate.xml --- administrator/components/com_joomlaupdate/joomlaupdate.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/administrator/components/com_joomlaupdate/joomlaupdate.xml b/administrator/components/com_joomlaupdate/joomlaupdate.xml index 2d833ced52406..b730be4b42145 100644 --- a/administrator/components/com_joomlaupdate/joomlaupdate.xml +++ b/administrator/components/com_joomlaupdate/joomlaupdate.xml @@ -9,6 +9,9 @@ www.joomla.org 3.5.2 COM_JOOMLAUPDATE_XML_DESCRIPTION + + js + com_joomlaupdate From df19cc3049ec5fd2399619134da5e490a21cf969 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 23:19:09 +0100 Subject: [PATCH 202/352] Add the media folder to the build.xml thanks @mbabker --- build.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build.xml b/build.xml index 8760b18d01e86..67d058303ab73 100644 --- a/build.xml +++ b/build.xml @@ -149,7 +149,10 @@ - + + + + From 34581a8a41ea8821a580761a0f292e8ac4b0b554 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 23:21:51 +0100 Subject: [PATCH 203/352] Update default_nodownload.php --- .../views/default/tmpl/default_nodownload.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php index 5f583b0e62d8d..6e6264080aa26 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php @@ -12,10 +12,10 @@ ?>
    - - - -

    - updateInfo['latest']); -

    + + + +

    + updateInfo['latest']); +

    From 89e197614e0b0f57719ede85060320e9a7511fe9 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 23:22:16 +0100 Subject: [PATCH 204/352] Update default_nodownload.php --- .../com_joomlaupdate/views/default/tmpl/default_nodownload.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php index 6e6264080aa26..19278421142ba 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_nodownload.php @@ -16,6 +16,6 @@

    - updateInfo['latest']); + updateInfo['latest']); ?>

    From 5cfd4a76413529f793d808e24d04a6a74a62f535 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sat, 26 Mar 2016 23:25:30 +0100 Subject: [PATCH 205/352] Update default_nodownload.php From daeb9abe02452953ec4a5484eb368e380393ea58 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sun, 27 Mar 2016 11:22:50 +0200 Subject: [PATCH 206/352] Update default.php --- .../components/com_joomlaupdate/views/default/tmpl/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php index 63b56778fb98f..eae06982fc9e6 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default.php @@ -39,7 +39,7 @@ - updateInfo['object']->downloadurl->_data)) : ?> + updateInfo['object']->downloadurl->_data) && $this->updateInfo['installed'] < $this->updateInfo['latest']) : ?> loadTemplate('nodownload'); ?> updateInfo['hasUpdate']) : ?> From 103930453593f20a948ee4e7418fd02148fd8986 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Sun, 27 Mar 2016 11:53:40 +0100 Subject: [PATCH 207/352] update quote this is correct for en-GB --- administrator/language/en-GB/en-GB.com_joomlaupdate.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini index 672fc70dcf1db..2ef11974fe574 100644 --- a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini +++ b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini @@ -63,7 +63,7 @@ COM_JOOMLAUPDATE_VIEW_UPDATE_DOWNLOADFAILED="Download of update package failed." COM_JOOMLAUPDATE_VIEW_UPDATE_FILESEXTRACTED="Files extracted" COM_JOOMLAUPDATE_VIEW_UPDATE_INPROGRESS="Updating your Joomla files. Please wait ..." COM_JOOMLAUPDATE_VIEW_UPDATE_PERCENT="Percent complete" -COM_JOOMLAUPDATE_VIEW_UPLOAD_CAPTIVE_INTRO_BODY="Make sure that the update file you have uploaded comes from the official Joomla download page. Afterwards, please confirm that you want to install it by re-entering the login information for your site „%s“ below." +COM_JOOMLAUPDATE_VIEW_UPLOAD_CAPTIVE_INTRO_BODY="Make sure that the update file you have uploaded comes from the official Joomla download page. Afterwards, please confirm that you want to install it by re-entering the login information for your site "%s" below." COM_JOOMLAUPDATE_VIEW_UPLOAD_CAPTIVE_INTRO_HEAD="Are you sure you want to install the file you uploaded?" COM_JOOMLAUPDATE_VIEW_UPLOAD_PACKAGE_FILE="Joomla package file" COM_JOOMLAUPDATE_XML_DESCRIPTION="Updates Joomla to the latest version with one click." From 6083ee5463316757291973b40eb09bf55481bff9 Mon Sep 17 00:00:00 2001 From: Michael Babker Date: Sun, 27 Mar 2016 00:27:07 -0400 Subject: [PATCH 208/352] Massive review and cleanup of JCache --- libraries/joomla/cache/cache.php | 133 ++++----- libraries/joomla/cache/controller.php | 44 ++- .../joomla/cache/controller/callback.php | 49 ++-- libraries/joomla/cache/controller/output.php | 23 +- libraries/joomla/cache/controller/page.php | 37 +-- libraries/joomla/cache/controller/view.php | 26 +- libraries/joomla/cache/storage.php | 130 +++++---- libraries/joomla/cache/storage/apc.php | 83 +++--- libraries/joomla/cache/storage/apcu.php | 62 ++--- libraries/joomla/cache/storage/cachelite.php | 141 ++++------ libraries/joomla/cache/storage/file.php | 158 +++++------ libraries/joomla/cache/storage/helper.php | 2 +- libraries/joomla/cache/storage/memcache.php | 157 +++++------ libraries/joomla/cache/storage/memcached.php | 145 ++++------ libraries/joomla/cache/storage/redis.php | 87 +++--- libraries/joomla/cache/storage/wincache.php | 58 ++-- libraries/joomla/cache/storage/xcache.php | 95 ++----- tests/unit/core/case/cache.php | 168 +++++++++++ .../cache/storage/JCacheStorageApcTest.php | 48 +--- .../cache/storage/JCacheStorageApcuTest.php | 43 +-- .../storage/JCacheStorageCacheliteTest.php | 86 +++--- .../cache/storage/JCacheStorageFileTest.php | 185 ++----------- .../cache/storage/JCacheStorageMainTest.php | 262 ------------------ .../storage/JCacheStorageMemcacheTest.php | 56 +--- .../storage/JCacheStorageMemcachedTest.php | 68 +---- .../cache/storage/JCacheStorageRedisTest.php | 64 +---- .../storage/JCacheStorageWincacheTest.php | 77 +---- .../cache/storage/JCacheStorageXCacheTest.php | 103 ------- .../cache/storage/JCacheStorageXcacheTest.php | 35 +++ tests/unit/tmp/.gitignore | 7 +- 30 files changed, 951 insertions(+), 1681 deletions(-) create mode 100644 tests/unit/core/case/cache.php delete mode 100644 tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageMainTest.php delete mode 100644 tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXCacheTest.php create mode 100644 tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXcacheTest.php diff --git a/libraries/joomla/cache/cache.php b/libraries/joomla/cache/cache.php index b6a2fbd9da641..b2f63b6cbf70c 100644 --- a/libraries/joomla/cache/cache.php +++ b/libraries/joomla/cache/cache.php @@ -9,6 +9,8 @@ defined('JPATH_PLATFORM') or die; +use Joomla\String\StringHelper; + /** * Joomla! Cache base object * @@ -17,13 +19,17 @@ class JCache { /** - * @var object Storage handler + * Storage handler + * + * @var JCacheStorage[] * @since 11.1 */ public static $_handler = array(); /** - * @var array Options + * Cache options + * + * @var array * @since 11.1 */ public $_options; @@ -31,7 +37,7 @@ class JCache /** * Constructor * - * @param array $options options + * @param array $options Cache options * * @since 11.1 */ @@ -40,15 +46,16 @@ public function __construct($options) $conf = JFactory::getConfig(); $this->_options = array( - 'cachebase' => $conf->get('cache_path', JPATH_CACHE), - 'lifetime' => (int) $conf->get('cachetime'), - 'language' => $conf->get('language', 'en-GB'), - 'storage' => $conf->get('cache_handler', ''), + 'cachebase' => $conf->get('cache_path', JPATH_CACHE), + 'lifetime' => (int) $conf->get('cachetime'), + 'language' => $conf->get('language', 'en-GB'), + 'storage' => $conf->get('cache_handler', ''), 'defaultgroup' => 'default', - 'locking' => true, - 'locktime' => 15, - 'checkTime' => true, - 'caching' => ($conf->get('caching') >= 1) ? true : false); + 'locking' => true, + 'locktime' => 15, + 'checkTime' => true, + 'caching' => ($conf->get('caching') >= 1) ? true : false + ); // Overwrite default options with given options foreach ($options as $option => $value) @@ -71,7 +78,7 @@ public function __construct($options) * @param string $type The cache object type to instantiate * @param array $options The array of options * - * @return JCache A JCache object + * @return JCacheController * * @since 11.1 */ @@ -83,7 +90,7 @@ public static function getInstance($type = 'output', $options = array()) /** * Get the storage handlers * - * @return array An array of available storage handlers + * @return array * * @since 11.1 */ @@ -94,7 +101,7 @@ public static function getStores() // Get an iterator and loop trough the driver classes. $iterator = new DirectoryIterator(__DIR__ . '/storage'); - /* @type $file DirectoryIterator */ + /** @type $file DirectoryIterator */ foreach ($iterator as $file) { $fileName = $file->getFilename(); @@ -142,7 +149,7 @@ public function setCaching($enabled) /** * Get caching state * - * @return boolean Caching state + * @return boolean * * @since 11.1 */ @@ -166,12 +173,12 @@ public function setLifeTime($lt) } /** - * Get cached data by id and group + * Get cached data by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return mixed boolean False on failure or a cached data string + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ @@ -194,7 +201,7 @@ public function get($id, $group = null) /** * Get a list of all cached data * - * @return mixed Boolean false on failure or an object with a list of cache groups and data + * @return mixed Boolean false on failure or an object with a list of cache groups and data * * @since 11.1 */ @@ -212,13 +219,13 @@ public function getAll() } /** - * Store the cached data by id and group + * Store the cached data by ID and group * * @param mixed $data The data to store - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True if cache stored + * @return boolean * * @since 11.1 */ @@ -241,12 +248,12 @@ public function store($data, $id, $group = null) } /** - * Remove a cached data entry by id and group + * Remove a cached data entry by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ @@ -269,8 +276,8 @@ public function remove($id, $group = null) /** * Clean cache for a group given a mode. * - * group mode : cleans all cache in the group - * notgroup mode : cleans all cache not in the group + * group mode : cleans all cache in the group + * notgroup mode : cleans all cache not in the group * * @param string $group The cache data group * @param string $mode The mode for cleaning cache [group|notgroup] @@ -298,7 +305,7 @@ public function clean($group = null, $mode = 'group') /** * Garbage collect expired cache data * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ @@ -318,11 +325,11 @@ public function gc() /** * Set lock flag on cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param string $locktime The default locktime for locking the cache. * - * @return object Properties are lock and locklooped + * @return stdClass Object with properties of lock and locklooped * * @since 11.1 */ @@ -337,8 +344,10 @@ public function lock($id, $group = null, $locktime = null) // Get the default locktime $locktime = ($locktime) ? $locktime : $this->_options['locktime']; - // Allow storage handlers to perform locking on their own - // NOTE drivers with lock need also unlock or unlocking will fail because of false $id + /* + * Allow storage handlers to perform locking on their own + * NOTE drivers with lock need also unlock or unlocking will fail because of false $id + */ $handler = $this->_getStorage(); if (!($handler instanceof Exception) && $this->_options['locking'] == true && $this->_options['caching'] == true) @@ -358,7 +367,7 @@ public function lock($id, $group = null, $locktime = null) $this->_options['lifetime'] = $locktime; $looptime = $locktime * 10; - $id2 = $id . '_lock'; + $id2 = $id . '_lock'; if ($this->_options['locking'] == true && $this->_options['caching'] == true) { @@ -366,7 +375,7 @@ public function lock($id, $group = null, $locktime = null) } else { - $data_lock = false; + $data_lock = false; $returning->locked = false; } @@ -374,8 +383,7 @@ public function lock($id, $group = null, $locktime = null) { $lock_counter = 0; - // Loop until you find that the lock has been released. - // That implies that data get from other thread has finished + // Loop until you find that the lock has been released. That implies that data get from other thread has finished while ($data_lock !== false) { if ($lock_counter > $looptime) @@ -405,10 +413,10 @@ public function lock($id, $group = null, $locktime = null) /** * Unset lock flag on cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ @@ -444,7 +452,7 @@ public function unlock($id, $group = null) /** * Get the cache storage handler * - * @return JCacheStorage A JCacheStorage object + * @return JCacheStorage * * @since 11.1 */ @@ -474,12 +482,13 @@ public function &_getStorage() */ public static function getWorkarounds($data, $options = array()) { - $app = JFactory::getApplication(); + $app = JFactory::getApplication(); $document = JFactory::getDocument(); - $body = null; + $body = null; // Get the document head out of the cache. - if (isset($options['mergehead']) && $options['mergehead'] == 1 && isset($data['head']) && !empty($data['head'])) + if (isset($options['mergehead']) && $options['mergehead'] == 1 && isset($data['head']) && !empty($data['head']) + && method_exists($document, 'mergeHeadData')) { $document->mergeHeadData($data['head']); } @@ -498,8 +507,7 @@ public static function getWorkarounds($data, $options = array()) if (isset($data['pathway']) && is_array($data['pathway'])) { // Push the pathway data into the pathway object. - $pathway = $app->getPathWay(); - $pathway->setPathway($data['pathway']); + $app->getPathway()->setPathway($data['pathway']); } // @todo check if the following is needed, seems like it should be in page cache @@ -522,8 +530,7 @@ public static function getWorkarounds($data, $options = array()) } } - // The following code searches for a token in the cached page and replaces it with the - // proper token. + // The following code searches for a token in the cached page and replaces it with the proper token. if (isset($data['body'])) { $token = JSession::getFormToken(); @@ -539,7 +546,7 @@ public static function getWorkarounds($data, $options = array()) } /** - * Create workarounded data to be cached + * Create workarounds for data to be cached * * @param string $data Cached data * @param array $options Array of options @@ -577,7 +584,7 @@ public static function setWorkarounds($data, $options = array()) $loptions['modulemode'] = $options['modulemode']; } - $app = JFactory::getApplication(); + $app = JFactory::getApplication(); $document = JFactory::getDocument(); if ($loptions['nomodules'] != 1) @@ -606,7 +613,7 @@ public static function setWorkarounds($data, $options = array()) if ($loptions['modulemode'] == 1) { $headnow = $document->getHeadData(); - $unset = array('title', 'description', 'link', 'links', 'metaTags'); + $unset = array('title', 'description', 'link', 'links', 'metaTags'); foreach ($unset as $un) { @@ -640,7 +647,7 @@ public static function setWorkarounds($data, $options = array()) if ($oldScriptStr != $currentScriptStr) { // Save only the appended declaration. - $newvalue[strtolower($type)] = JString::substr($currentScriptStr, JString::strlen($oldScriptStr)); + $newvalue[strtolower($type)] = StringHelper::substr($currentScriptStr, StringHelper::strlen($oldScriptStr)); } } } @@ -669,8 +676,7 @@ public static function setWorkarounds($data, $options = array()) // Pathway data if ($app->isSite() && $loptions['nopathway'] != 1) { - $pathway = $app->getPathWay(); - $cached['pathway'] = is_array($data) && isset($data['pathway']) ? $data['pathway'] : $pathway->getPathway(); + $cached['pathway'] = is_array($data) && isset($data['pathway']) ? $data['pathway'] : $app->getPathway()->getPathway(); } if ($loptions['nomodules'] != 1) @@ -704,9 +710,9 @@ public static function setWorkarounds($data, $options = array()) } /** - * Create safe id for cached data from url parameters set by plugins and framework + * Create a safe ID for cached data from URL parameters * - * @return string md5 encoded cacheid + * @return string MD5 encoded cache ID * * @since 11.1 */ @@ -751,24 +757,22 @@ public static function makeId() return md5(serialize($safeuriaddon)); } - /*** Set prefix cache key if device calls for separate caching + /** + * Set a prefix cache key if device calls for separate caching * - * @return string Platform specific prefix + * @return string * - * @since 3.5 + * @since 3.5 */ public static function getPlatformPrefix() { - $conf = JFactory::getConfig(); - // No prefix when Global Config is set to no platfom specific prefix - if (!$conf->get('cache_platformprefix', '0')) + if (!JFactory::getConfig()->get('cache_platformprefix', '0')) { return ''; } - jimport('joomla.application.web.client'); - $webclient = new JApplicationWebClient(); + $webclient = new JApplicationWebClient; if ($webclient->mobile) { @@ -779,10 +783,9 @@ public static function getPlatformPrefix() } /** - * Add a directory where JCache should search for handlers. You may - * either pass a string or an array of directories. + * Add a directory where JCache should search for handlers. You may either pass a string or an array of directories. * - * @param string $path A path to search. + * @param array|string $path A path to search. * * @return array An array with directory elements * diff --git a/libraries/joomla/cache/controller.php b/libraries/joomla/cache/controller.php index e51d87320d02e..839eef17c55c9 100644 --- a/libraries/joomla/cache/controller.php +++ b/libraries/joomla/cache/controller.php @@ -55,7 +55,7 @@ public function __construct($options) } /** - * Magic method to proxy JCacheControllerMethods + * Magic method to proxy JCacheController method calls to JCache * * @param string $name Name of the function * @param array $arguments Array of arguments for the function @@ -77,7 +77,7 @@ public function __call($name, $arguments) * @param string $type The cache object type to instantiate; default is output. * @param array $options Array of options * - * @return JCache A JCache object + * @return JCacheController * * @since 11.1 * @throws RuntimeException @@ -95,11 +95,17 @@ public static function getInstance($type = 'output', $options = array()) // Search for the class file in the JCache include paths. jimport('joomla.filesystem.path'); - if ($path = JPath::find(self::addIncludePath(), strtolower($type) . '.php')) + $path = JPath::find(self::addIncludePath(), strtolower($type) . '.php'); + + if ($path === false) { - include_once $path; + throw new RuntimeException('Unable to load Cache Controller: ' . $type, 500); } - else + + include_once $path; + + // The class should now be loaded + if (!class_exists($class)) { throw new RuntimeException('Unable to load Cache Controller: ' . $type, 500); } @@ -137,12 +143,11 @@ public function setLifeTime($lt) } /** - * Add a directory where JCache should search for controllers. You may - * either pass a string or an array of directories. + * Add a directory where JCache should search for controllers. You may either pass a string or an array of directories. * - * @param string $path A path to search. + * @param array|string $path A path to search. * - * @return array An array with directory elements + * @return array An array with directory elements * * @since 11.1 */ @@ -165,12 +170,12 @@ public static function addIncludePath($path = '') } /** - * Get stored cached data by id and group + * Get stored cached data by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return mixed False on no result, cached object otherwise + * @return mixed Boolean false on no result, cached object otherwise * * @since 11.1 */ @@ -180,9 +185,6 @@ public function get($id, $group = null) if ($data === false) { - $locktest = new stdClass; - $locktest->locked = null; - $locktest->locklooped = null; $locktest = $this->cache->lock($id, $group); if ($locktest->locked == true && $locktest->locklooped == true) @@ -207,10 +209,10 @@ public function get($id, $group = null) } /** - * Store data to cache by id and group + * Store data to cache by ID and group * * @param mixed $data The data to store - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param boolean $wrkarounds True to use wrkarounds * @@ -220,10 +222,6 @@ public function get($id, $group = null) */ public function store($data, $id, $group = null, $wrkarounds = true) { - $locktest = new stdClass; - $locktest->locked = null; - $locktest->locklooped = null; - $locktest = $this->cache->lock($id, $group); if ($locktest->locked == false && $locktest->locklooped == true) @@ -231,13 +229,13 @@ public function store($data, $id, $group = null, $wrkarounds = true) $locktest = $this->cache->lock($id, $group); } - $sucess = $this->cache->store(serialize($data), $id, $group); + $success = $this->cache->store(serialize($data), $id, $group); if ($locktest->locked == true) { $this->cache->unlock($id, $group); } - return $sucess; + return $success; } } diff --git a/libraries/joomla/cache/controller/callback.php b/libraries/joomla/cache/controller/callback.php index e5bcc3909844b..4e5b58f922ef1 100644 --- a/libraries/joomla/cache/controller/callback.php +++ b/libraries/joomla/cache/controller/callback.php @@ -19,8 +19,7 @@ class JCacheControllerCallback extends JCacheController /** * Executes a cacheable callback if not found in cache else returns cached output and result * - * Since arguments to this function are read with func_get_args you can pass any number of - * arguments to this method + * Since arguments to this function are read with func_get_args you can pass any number of arguments to this method * as long as the first argument passed is the callback definition. * * The callback definition can be in several forms: @@ -35,7 +34,7 @@ class JCacheControllerCallback extends JCacheController public function call() { // Get callback and arguments - $args = func_get_args(); + $args = func_get_args(); $callback = array_shift($args); return $this->get($callback, $args); @@ -46,7 +45,7 @@ public function call() * * @param mixed $callback Callback or string shorthand for a callback * @param array $args Callback arguments - * @param mixed $id Cache id + * @param mixed $id Cache ID * @param boolean $wrkarounds True to use wrkarounds * @param array $woptions Workaround options * @@ -80,10 +79,6 @@ public function get($callback, $args = array(), $id = false, $wrkarounds = false global $$object_123456789; $callback = array($$object_123456789, $method); } - else - { - // We have just a standard function -- do nothing - } if (!$id) { @@ -93,8 +88,8 @@ public function get($callback, $args = array(), $id = false, $wrkarounds = false $data = $this->cache->get($id); - $locktest = new stdClass; - $locktest->locked = null; + $locktest = new stdClass; + $locktest->locked = null; $locktest->locklooped = null; if ($data === false) @@ -111,10 +106,10 @@ public function get($callback, $args = array(), $id = false, $wrkarounds = false if ($data !== false) { - $cached = unserialize(trim($data)); + $cached = unserialize(trim($data)); $coptions['mergehead'] = isset($woptions['mergehead']) ? $woptions['mergehead'] : 0; - $output = ($wrkarounds == false) ? $cached['output'] : JCache::getWorkarounds($cached['output'], $coptions); - $result = $cached['result']; + $output = ($wrkarounds == false) ? $cached['output'] : JCache::getWorkarounds($cached['output'], $coptions); + $result = $cached['result']; if ($locktest->locked == true) { @@ -125,11 +120,11 @@ public function get($callback, $args = array(), $id = false, $wrkarounds = false { if (!is_array($args)) { - $Args = !empty($args) ? array(&$args) : array(); + $referenceArgs = !empty($args) ? array(&$args) : array(); } else { - $Args = &$args; + $referenceArgs = &$args; } if ($locktest->locked == false) @@ -154,19 +149,17 @@ public function get($callback, $args = array(), $id = false, $wrkarounds = false ob_start(); ob_implicit_flush(false); - $result = call_user_func_array($callback, $Args); - $output = ob_get_contents(); - - ob_end_clean(); - - $cached = array(); + $result = call_user_func_array($callback, $referenceArgs); + $output = ob_get_clean(); $coptions['nopathway'] = isset($woptions['nopathway']) ? $woptions['nopathway'] : 1; - $coptions['nohead'] = isset($woptions['nohead']) ? $woptions['nohead'] : 1; + $coptions['nohead'] = isset($woptions['nohead']) ? $woptions['nohead'] : 1; $coptions['nomodules'] = isset($woptions['nomodules']) ? $woptions['nomodules'] : 1; - $cached['output'] = ($wrkarounds == false) ? $output : JCache::setWorkarounds($output, $coptions); - $cached['result'] = $result; + $cached = array( + 'output' => ($wrkarounds == false) ? $output : JCache::setWorkarounds($output, $coptions), + 'result' => $result + ); // Store the cache data $this->cache->store(serialize($cached), $id); @@ -183,12 +176,12 @@ public function get($callback, $args = array(), $id = false, $wrkarounds = false } /** - * Generate a callback cache id + * Generate a callback cache ID * * @param callback $callback Callback to cache * @param array $args Arguments to the callback method to cache * - * @return string MD5 Hash : function cache id + * @return string MD5 Hash * * @since 11.1 */ @@ -196,8 +189,8 @@ protected function _makeId($callback, $args) { if (is_array($callback) && is_object($callback[0])) { - $vars = get_object_vars($callback[0]); - $vars[] = strtolower(get_class($callback[0])); + $vars = get_object_vars($callback[0]); + $vars[] = strtolower(get_class($callback[0])); $callback[0] = $vars; } diff --git a/libraries/joomla/cache/controller/output.php b/libraries/joomla/cache/controller/output.php index 5f420946a5960..48d2cea7e11e3 100644 --- a/libraries/joomla/cache/controller/output.php +++ b/libraries/joomla/cache/controller/output.php @@ -35,7 +35,7 @@ class JCacheControllerOutput extends JCacheController /** * Object to test locked state * - * @var object + * @var stdClass * @since 11.1 */ protected $_locktest = null; @@ -43,10 +43,10 @@ class JCacheControllerOutput extends JCacheController /** * Start the cache * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True if the cache is hit (false else) + * @return boolean * * @since 11.1 */ @@ -55,8 +55,8 @@ public function start($id, $group = null) // If we have data in cache use that. $data = $this->cache->get($id, $group); - $this->_locktest = new stdClass; - $this->_locktest->locked = null; + $this->_locktest = new stdClass; + $this->_locktest->locked = null; $this->_locktest->locklooped = null; if ($data === false) @@ -101,21 +101,20 @@ public function start($id, $group = null) /** * Stop the cache buffer and store the cached data * - * @return boolean True if cache stored + * @return boolean True if the cache data was stored * * @since 11.1 */ public function end() { // Get data from output buffer and echo it - $data = ob_get_contents(); - ob_end_clean(); + $data = ob_get_clean(); echo $data; - // Get id and group and reset them placeholders - $id = $this->_id; - $group = $this->_group; - $this->_id = null; + // Get the ID and group and reset the placeholders + $id = $this->_id; + $group = $this->_group; + $this->_id = null; $this->_group = null; // Get the storage handler and store the cached data diff --git a/libraries/joomla/cache/controller/page.php b/libraries/joomla/cache/controller/page.php index 6527115f99ba0..53197e5906886 100644 --- a/libraries/joomla/cache/controller/page.php +++ b/libraries/joomla/cache/controller/page.php @@ -17,19 +17,25 @@ class JCacheControllerPage extends JCacheController { /** - * @var integer ID property for the cache page object. + * ID property for the cache page object. + * + * @var integer * @since 11.1 */ protected $_id; /** - * @var string Cache group + * Cache group + * + * @var string * @since 11.1 */ protected $_group; /** - * @var object Cache lock test + * Cache lock test + * + * @var stdClass * @since 11.1 */ protected $_locktest = null; @@ -37,10 +43,10 @@ class JCacheControllerPage extends JCacheController /** * Get the cached page data * - * @param boolean $id The cache data id + * @param boolean $id The cache data ID * @param string $group The cache data group * - * @return boolean True if the cache is hit (false else) + * @return mixed Boolean false on no result, cached object otherwise * * @since 11.1 */ @@ -71,8 +77,8 @@ public function get($id = false, $group = 'page') // We got a cache hit... set the etag header and echo the page data $data = $this->cache->get($id, $group); - $this->_locktest = new stdClass; - $this->_locktest->locked = null; + $this->_locktest = new stdClass; + $this->_locktest->locked = null; $this->_locktest->locklooped = null; if ($data === false) @@ -101,7 +107,7 @@ public function get($id = false, $group = 'page') return $data; } - // Set id and group placeholders + // Set ID and group placeholders $this->_id = $id; $this->_group = $group; @@ -112,11 +118,11 @@ public function get($id = false, $group = 'page') * Stop the cache buffer and store the cached data * * @param mixed $data The data to store - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param boolean $wrkarounds True to use wrkarounds * - * @return boolean True if cache stored + * @return boolean * * @since 11.1 */ @@ -145,7 +151,8 @@ public function store($data, $id, $group = null, $wrkarounds = true) if ($wrkarounds) { $data = JCache::setWorkarounds( - $data, array( + $data, + array( 'nopathway' => 1, 'nohead' => 1, 'nomodules' => 1, @@ -175,11 +182,10 @@ public function store($data, $id, $group = null, $wrkarounds = true) /** * Generate a page cache id * - * @return string MD5 Hash : page cache id + * @return string MD5 Hash * * @since 11.1 - * @todo Discuss whether this should be coupled to a data hash or a request - * hash ... perhaps hashed with a serialized request + * @todo Discuss whether this should be coupled to a data hash or a request hash ... perhaps hashed with a serialized request */ protected function _makeId() { @@ -187,8 +193,7 @@ protected function _makeId() } /** - * There is no change in page data so send an - * unmodified header and die gracefully + * There is no change in page data so send an unmodified header and die gracefully * * @return void * diff --git a/libraries/joomla/cache/controller/view.php b/libraries/joomla/cache/controller/view.php index 8c1800cca7d28..9d2880cb5c48f 100644 --- a/libraries/joomla/cache/controller/view.php +++ b/libraries/joomla/cache/controller/view.php @@ -21,7 +21,7 @@ class JCacheControllerView extends JCacheController * * @param object $view The view object to cache output for * @param string $method The method name of the view method to cache output for - * @param mixed $id The cache data id + * @param mixed $id The cache data ID * @param boolean $wrkarounds True to enable workarounds. * * @return boolean True if the cache is hit (false else) @@ -38,23 +38,24 @@ public function get($view, $method = 'display', $id = false, $wrkarounds = true) $data = $this->cache->get($id); - $locktest = new stdClass; - $locktest->locked = null; + $locktest = new stdClass; + $locktest->locked = null; $locktest->locklooped = null; if ($data === false) { $locktest = $this->cache->lock($id, null); - // If the loop is completed and returned true it means the lock has been set. - // If looped is true try to get the cached data again; it could exist now. + /* + * If the loop is completed and returned true it means the lock has been set. + * If looped is true try to get the cached data again; it could exist now. + */ if ($locktest->locked == true && $locktest->locklooped == true) { $data = $this->cache->get($id); } - // False means that locking is either turned off or maxtime has been exceeded. - // Execute the view. + // False means that locking is either turned off or maxtime has been exceeded. Execute the view. } if ($data !== false) @@ -79,9 +80,7 @@ public function get($view, $method = 'display', $id = false, $wrkarounds = true) return true; } - /* - * No hit so we have to execute the view - */ + // No hit so we have to execute the view if (method_exists($view, $method)) { // If previous lock failed try again @@ -94,8 +93,7 @@ public function get($view, $method = 'display', $id = false, $wrkarounds = true) ob_start(); ob_implicit_flush(false); $view->$method(); - $data = ob_get_contents(); - ob_end_clean(); + $data = ob_get_clean(); echo $data; /* @@ -118,12 +116,12 @@ public function get($view, $method = 'display', $id = false, $wrkarounds = true) } /** - * Generate a view cache id. + * Generate a view cache ID. * * @param object &$view The view object to cache output for * @param string $method The method name to cache for the view object * - * @return string MD5 Hash : view cache id + * @return string MD5 Hash * * @since 11.1 */ diff --git a/libraries/joomla/cache/storage.php b/libraries/joomla/cache/storage.php index 5a7e7a88ab737..ca681cdba0169 100644 --- a/libraries/joomla/cache/storage.php +++ b/libraries/joomla/cache/storage.php @@ -13,47 +13,62 @@ * Abstract cache storage handler * * @since 11.1 + * @note As of 4.0 this class will be abstract */ class JCacheStorage { /** - * @var string Rawname + * The raw object name + * + * @var string * @since 11.1 */ protected $rawname; /** - * @var datetime Now + * Time that the cache storage handler was instantiated + * + * @var integer * @since 11.1 */ public $_now; /** - * @var integer Cache lifetime + * Cache lifetime + * + * @var integer * @since 11.1 */ public $_lifetime; /** - * @var boolean Locking + * Flag if locking is enabled + * + * @var boolean * @since 11.1 */ public $_locking; /** - * @var string Language + * Language code + * + * @var string * @since 11.1 */ public $_language; /** - * @var string Application name. + * Application name + * + * @var string * @since 11.1 */ public $_application; /** - * @var string Hash + * Object hash + * + * @var string * @since 11.1 */ public $_hash; @@ -68,12 +83,13 @@ class JCacheStorage public function __construct($options = array()) { $config = JFactory::getConfig(); - $this->_hash = md5($config->get('secret')); + + $this->_hash = md5($config->get('secret')); $this->_application = (isset($options['application'])) ? $options['application'] : null; - $this->_language = (isset($options['language'])) ? $options['language'] : 'en-GB'; - $this->_locking = (isset($options['locking'])) ? $options['locking'] : true; - $this->_lifetime = (isset($options['lifetime'])) ? $options['lifetime'] * 60 : $config->get('cachetime') * 60; - $this->_now = (isset($options['now'])) ? $options['now'] : time(); + $this->_language = (isset($options['language'])) ? $options['language'] : 'en-GB'; + $this->_locking = (isset($options['locking'])) ? $options['locking'] : true; + $this->_lifetime = (isset($options['lifetime'])) ? $options['lifetime'] * 60 : $config->get('cachetime') * 60; + $this->_now = (isset($options['now'])) ? $options['now'] : time(); // Set time threshold value. If the lifetime is not set, default to 60 (0 is BAD) // _threshold is now available ONLY as a legacy (it's deprecated). It's no longer used in the core. @@ -89,13 +105,12 @@ public function __construct($options = array()) } /** - * Returns a cache storage handler object, only creating it - * if it doesn't already exist. + * Returns a cache storage handler object. * * @param string $handler The cache storage handler to instantiate * @param array $options Array of handler options * - * @return JCacheStorage A JCacheStorage instance + * @return JCacheStorage * * @since 11.1 * @throws UnexpectedValueException @@ -105,12 +120,12 @@ public static function getInstance($handler = null, $options = array()) { static $now = null; + // @deprecated 4.0 This class path is autoloaded, manual inclusion is no longer necessary self::addIncludePath(JPATH_PLATFORM . '/joomla/cache/storage'); if (!isset($handler)) { - $conf = JFactory::getConfig(); - $handler = $conf->get('cache_handler'); + $handler = JFactory::getConfig()->get('cache_handler'); if (empty($handler)) { @@ -135,11 +150,17 @@ public static function getInstance($handler = null, $options = array()) // Search for the class file in the JCacheStorage include paths. jimport('joomla.filesystem.path'); - if ($path = JPath::find(self::addIncludePath(), strtolower($handler) . '.php')) + $path = JPath::find(self::addIncludePath(), strtolower($handler) . '.php'); + + if ($path === false) { - include_once $path; + throw new RuntimeException(sprintf('Unable to load Cache Storage: %s', $handler)); } - else + + include_once $path; + + // The class should now be loaded + if (!class_exists($class)) { throw new RuntimeException(sprintf('Unable to load Cache Storage: %s', $handler)); } @@ -149,13 +170,13 @@ public static function getInstance($handler = null, $options = array()) } /** - * Get cached data by id and group + * Get cached data by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param boolean $checkTime True to verify cache time expiration threshold * - * @return mixed Boolean false on failure or a cached data object + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ @@ -167,29 +188,23 @@ public function get($id, $group, $checkTime = true) /** * Get all cached data * - * @return mixed Boolean false on failure or a cached data object + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 - * @todo Review this method. The docblock doesn't fit what it actually does. */ public function getAll() { - if (!class_exists('JCacheStorageHelper', false)) - { - include_once JPATH_PLATFORM . '/joomla/cache/storage/helper.php'; - } - - return; + return false; } /** - * Store the data to cache by id and group + * Store the data to cache by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param string $data The data to store in cache * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ @@ -199,12 +214,12 @@ public function store($id, $group, $data) } /** - * Remove a cached data entry by id and group + * Remove a cached data entry by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ @@ -216,12 +231,13 @@ public function remove($id, $group) /** * Clean cache for a group given a mode. * + * group mode : cleans all cache in the group + * notgroup mode : cleans all cache not in the group + * * @param string $group The cache data group * @param string $mode The mode for cleaning cache [group|notgroup] - * group mode : cleans all cache in the group - * notgroup mode : cleans all cache not in the group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ @@ -233,7 +249,7 @@ public function clean($group, $mode = null) /** * Garbage collect expired cache data * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ @@ -245,9 +261,9 @@ public function gc() /** * Test to see if the storage handler is available. * - * @return boolean True on success, false otherwise + * @return boolean * - * @since 12.1 + * @since 12.1 */ public static function isSupported() { @@ -257,14 +273,14 @@ public static function isSupported() /** * Test to see if the storage handler is available. * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 * @deprecated 12.3 (Platform) & 4.0 (CMS) */ public static function test() { - JLog::add('JCacheStorage::test() is deprecated. Use JCacheStorage::isSupported() instead.', JLog::WARNING, 'deprecated'); + JLog::add(__METHOD__ . '() is deprecated. Use JCacheStorage::isSupported() instead.', JLog::WARNING, 'deprecated'); return static::isSupported(); } @@ -272,11 +288,11 @@ public static function test() /** * Lock cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param integer $locktime Cached item max lock time * - * @return boolean True on success, false otherwise. + * @return mixed Boolean false if locking failed or an object containing properties lock and locklooped * * @since 11.1 */ @@ -288,10 +304,10 @@ public function lock($id, $group, $locktime) /** * Unlock cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ @@ -301,29 +317,27 @@ public function unlock($id, $group = null) } /** - * Get a cache_id string from an id/group pair + * Get a cache ID string from an ID/group pair * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return string The cache_id string + * @return string * * @since 11.1 */ protected function _getCacheId($id, $group) { - $prefix = JCache::getPlatformPrefix(); - $name = md5($this->_application . '-' . $id . '-' . $this->_language); + $name = md5($this->_application . '-' . $id . '-' . $this->_language); $this->rawname = $this->_hash . '-' . $name; - return $prefix . $this->_hash . '-cache-' . $group . '-' . $name; + return JCache::getPlatformPrefix() . $this->_hash . '-cache-' . $group . '-' . $name; } /** - * Add a directory where JCacheStorage should search for handlers. You may - * either pass a string or an array of directories. + * Add a directory where JCacheStorage should search for handlers. You may either pass a string or an array of directories. * - * @param string $path A path to search. + * @param array|string $path A path to search. * * @return array An array with directory elements * diff --git a/libraries/joomla/cache/storage/apc.php b/libraries/joomla/cache/storage/apc.php index e6aade9a170a9..7b7097ad65e41 100644 --- a/libraries/joomla/cache/storage/apc.php +++ b/libraries/joomla/cache/storage/apc.php @@ -18,44 +18,40 @@ class JCacheStorageApc extends JCacheStorage { /** - * Get cached data from APC by id and group + * Get cached data by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param boolean $checkTime True to verify cache time expiration threshold * - * @return mixed Boolean False on failure or a cached data string + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ public function get($id, $group, $checkTime = true) { - $cache_id = $this->_getCacheId($id, $group); - - return apc_fetch($cache_id); + return apc_fetch($this->_getCacheId($id, $group)); } /** * Get all cached data * - * @return array data + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ public function getAll() { - parent::getAll(); - $allinfo = apc_cache_info('user'); - $keys = $allinfo['cache_list']; - $secret = $this->_hash; + $keys = $allinfo['cache_list']; + $secret = $this->_hash; $data = array(); foreach ($keys as $key) { // If APCu is being used for this adapter, the internal key name changed with APCu 4.0.7 from key to info - $name = isset($key['info']) ? $key['info'] : $key['key']; + $name = isset($key['info']) ? $key['info'] : $key['key']; $namearr = explode('-', $name); if ($namearr !== false && $namearr[0] == $secret && $namearr[1] == 'cache') @@ -81,38 +77,34 @@ public function getAll() } /** - * Store the data to APC by id and group + * Store the data to cache by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param string $data The data to store in cache * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ public function store($id, $group, $data) { - $cache_id = $this->_getCacheId($id, $group); - - return apc_store($cache_id, $data, $this->_lifetime); + return apc_store($this->_getCacheId($id, $group), $data, $this->_lifetime); } /** - * Remove a cached data entry by id and group + * Remove a cached data entry by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ public function remove($id, $group) { - $cache_id = $this->_getCacheId($id, $group); - - return apc_delete($cache_id); + return apc_delete($this->_getCacheId($id, $group)); } /** @@ -124,15 +116,15 @@ public function remove($id, $group) * @param string $group The cache data group * @param string $mode The mode for cleaning cache [group|notgroup] * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ public function clean($group, $mode = null) { $allinfo = apc_cache_info('user'); - $keys = $allinfo['cache_list']; - $secret = $this->_hash; + $keys = $allinfo['cache_list']; + $secret = $this->_hash; foreach ($keys as $key) { @@ -149,17 +141,17 @@ public function clean($group, $mode = null) } /** - * Force garbage collect expired cache data as items are removed only on fetch! + * Garbage collect expired cache data * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ public function gc() { $allinfo = apc_cache_info('user'); - $keys = $allinfo['cache_list']; - $secret = $this->_hash; + $keys = $allinfo['cache_list']; + $secret = $this->_hash; foreach ($keys as $key) { @@ -174,9 +166,9 @@ public function gc() } /** - * Test to see if the cache storage is available. + * Test to see if the storage handler is available. * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 12.1 */ @@ -194,19 +186,19 @@ public static function isSupported() } /** - * Lock cached item - override parent as this is more efficient + * Lock cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param integer $locktime Cached item max lock time * - * @return object Properties are lock and locklooped + * @return mixed Boolean false if locking failed or an object containing properties lock and locklooped * * @since 11.1 */ public function lock($id, $group, $locktime) { - $returning = new stdClass; + $returning = new stdClass; $returning->locklooped = false; $looptime = $locktime * 10; @@ -219,13 +211,12 @@ public function lock($id, $group, $locktime) { $lock_counter = 0; - // Loop until you find that the lock has been released. - // That implies that data get from other thread has finished + // Loop until you find that the lock has been released. That implies that data get from other thread has finished while ($data_lock === false) { if ($lock_counter > $looptime) { - $returning->locked = false; + $returning->locked = false; $returning->locklooped = true; break; } @@ -242,21 +233,17 @@ public function lock($id, $group, $locktime) } /** - * Unlock cached item - override parent for cacheid compatibility with lock + * Unlock cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ public function unlock($id, $group = null) { - $cache_id = $this->_getCacheId($id, $group) . '_lock'; - - $unlock = apc_delete($cache_id); - - return $unlock; + return apc_delete($this->_getCacheId($id, $group) . '_lock'); } } diff --git a/libraries/joomla/cache/storage/apcu.php b/libraries/joomla/cache/storage/apcu.php index 2904977db28f8..b01fd8a7f15f8 100644 --- a/libraries/joomla/cache/storage/apcu.php +++ b/libraries/joomla/cache/storage/apcu.php @@ -18,34 +18,30 @@ class JCacheStorageApcu extends JCacheStorage { /** - * Get cached data from APCu by id and group + * Get cached data by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param boolean $checkTime True to verify cache time expiration threshold * - * @return mixed Boolean False on failure or a cached data string + * @return mixed Boolean false on failure or a cached data object * * @since 3.5 */ public function get($id, $group, $checkTime = true) { - $cache_id = $this->_getCacheId($id, $group); - - return apcu_fetch($cache_id); + return apcu_fetch($this->_getCacheId($id, $group)); } /** * Get all cached data * - * @return array + * @return mixed Boolean false on failure or a cached data object * * @since 3.5 */ public function getAll() { - parent::getAll(); - $allinfo = apcu_cache_info(); $keys = $allinfo['cache_list']; $secret = $this->_hash; @@ -55,7 +51,7 @@ public function getAll() foreach ($keys as $key) { // The internal key name changed with APCu 4.0.7 from key to info - $name = isset($key['info']) ? $key['info'] : $key['key']; + $name = isset($key['info']) ? $key['info'] : $key['key']; $namearr = explode('-', $name); if ($namearr !== false && $namearr[0] == $secret && $namearr[1] == 'cache') @@ -81,30 +77,28 @@ public function getAll() } /** - * Store the data to APCu by id and group + * Store the data to cache by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param string $data The data to store in cache * - * @return boolean True on success, false otherwise + * @return boolean * * @since 3.5 */ public function store($id, $group, $data) { - $cache_id = $this->_getCacheId($id, $group); - - return apcu_store($cache_id, $data, $this->_lifetime); + return apcu_store($this->_getCacheId($id, $group), $data, $this->_lifetime); } /** - * Remove a cached data entry by id and group + * Remove a cached data entry by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 3.5 */ @@ -112,7 +106,7 @@ public function remove($id, $group) { $cache_id = $this->_getCacheId($id, $group); - // The apcu_delete function returns false if the id does not exist + // The apcu_delete function returns false if the ID does not exist if (apcu_exists($cache_id)) { return apcu_delete($cache_id); @@ -130,15 +124,15 @@ public function remove($id, $group) * @param string $group The cache data group * @param string $mode The mode for cleaning cache [group|notgroup] * - * @return boolean True on success, false otherwise + * @return boolean * * @since 3.5 */ public function clean($group, $mode = null) { $allinfo = apcu_cache_info(); - $keys = $allinfo['cache_list']; - $secret = $this->_hash; + $keys = $allinfo['cache_list']; + $secret = $this->_hash; foreach ($keys as $key) { @@ -155,9 +149,9 @@ public function clean($group, $mode = null) } /** - * Force garbage collect expired cache data as items are removed only on fetch! + * Garbage collect expired cache data * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 3.5 */ @@ -182,9 +176,9 @@ public function gc() } /** - * Test to see if the cache storage is available. + * Test to see if the storage handler is available. * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 3.5 */ @@ -202,13 +196,13 @@ public static function isSupported() } /** - * Lock cached item - override parent as this is more efficient + * Lock cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param integer $locktime Cached item max lock time * - * @return stdClass Properties are lock and locklooped + * @return mixed Boolean false if locking failed or an object containing properties lock and locklooped * * @since 3.5 */ @@ -250,12 +244,12 @@ public function lock($id, $group, $locktime) } /** - * Unlock cached item - override parent for cacheid compatibility with lock + * Unlock cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 3.5 */ @@ -263,7 +257,7 @@ public function unlock($id, $group = null) { $cache_id = $this->_getCacheId($id, $group) . '_lock'; - // The apcu_delete function returns false if the id does not exist + // The apcu_delete function returns false if the ID does not exist if (apcu_exists($cache_id)) { return apcu_delete($cache_id); diff --git a/libraries/joomla/cache/storage/cachelite.php b/libraries/joomla/cache/storage/cachelite.php index c02439a318cc5..3390ddb610fef 100644 --- a/libraries/joomla/cache/storage/cachelite.php +++ b/libraries/joomla/cache/storage/cachelite.php @@ -18,9 +18,9 @@ class JCacheStorageCachelite extends JCacheStorage { /** - * Static cache of the Cache_Lite instance + * Singleton Cache_Lite instance * - * @var object + * @var Cache_Lite * @since 11.1 */ protected static $CacheLiteInstance = null; @@ -47,28 +47,27 @@ public function __construct($options = array()) $this->_root = $options['cachebase']; $cloptions = array( - 'cacheDir' => $this->_root . '/', - 'lifeTime' => $this->_lifetime, - 'fileLocking' => $this->_locking, + 'cacheDir' => $this->_root . '/', + 'lifeTime' => $this->_lifetime, + 'fileLocking' => $this->_locking, 'automaticCleaningFactor' => isset($options['autoclean']) ? $options['autoclean'] : 200, - 'fileNameProtection' => false, - 'hashedDirectoryLevel' => 0, - 'caching' => $options['caching']); + 'fileNameProtection' => false, + 'hashedDirectoryLevel' => 0, + 'caching' => $options['caching'] + ); - if (self::$CacheLiteInstance === null) + if (static::$CacheLiteInstance === null) { $this->initCache($cloptions); } } /** - * Instantiates the appropriate CacheLite object. - * Only initializes the engine if it does not already exist. - * Note this is a protected method + * Instantiates the Cache_Lite object. Only initializes the engine if it does not already exist. * * @param array $cloptions optional parameters * - * @return object + * @return Cache_Lite * * @since 11.1 */ @@ -79,45 +78,44 @@ protected function initCache($cloptions) require_once 'Cache/Lite.php'; } - self::$CacheLiteInstance = new Cache_Lite($cloptions); + static::$CacheLiteInstance = new Cache_Lite($cloptions); - return self::$CacheLiteInstance; + return static::$CacheLiteInstance; } /** - * Get cached data from a file by id and group + * Get cached data by ID and group * - * @param string $id The cache data id. - * @param string $group The cache data group. - * @param boolean $checkTime True to verify cache time expiration threshold. + * @param string $id The cache data ID + * @param string $group The cache data group + * @param boolean $checkTime True to verify cache time expiration threshold * - * @return mixed Boolean false on failure or a cached data string. + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ public function get($id, $group, $checkTime = true) { - self::$CacheLiteInstance->setOption('cacheDir', $this->_root . '/' . $group . '/'); + static::$CacheLiteInstance->setOption('cacheDir', $this->_root . '/' . $group . '/'); + + // This call is needed to ensure $this->rawname is set $this->_getCacheId($id, $group); - $data = self::$CacheLiteInstance->get($this->rawname, $group); - return $data; + return static::$CacheLiteInstance->get($this->rawname, $group); } /** * Get all cached data * - * @return array + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ public function getAll() { - parent::getAll(); - - $path = $this->_root; + $path = $this->_root; $folders = new DirectoryIterator($path); - $data = array(); + $data = array(); foreach ($folders as $folder) { @@ -150,13 +148,13 @@ public function getAll() } /** - * Store the data to a file by id and group + * Store the data to cache by ID and group * - * @param string $id The cache data id. - * @param string $group The cache data group. - * @param string $data The data to store in cache. + * @param string $id The cache data ID + * @param string $group The cache data group + * @param string $data The data to store in cache * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ @@ -178,55 +176,44 @@ public function store($id, $group, $data) return false; } - self::$CacheLiteInstance->setOption('cacheDir', $this->_root . '/' . $group . '/'); + static::$CacheLiteInstance->setOption('cacheDir', $this->_root . '/' . $group . '/'); + + // This call is needed to ensure $this->rawname is set $this->_getCacheId($id, $group); - $success = self::$CacheLiteInstance->save($data, $this->rawname, $group); - if ($success == true) - { - return $success; - } - else - { - return false; - } + return static::$CacheLiteInstance->save($data, $this->rawname, $group); } /** - * Remove a cached data file by id and group + * Remove a cached data entry by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ public function remove($id, $group) { - self::$CacheLiteInstance->setOption('cacheDir', $this->_root . '/' . $group . '/'); + static::$CacheLiteInstance->setOption('cacheDir', $this->_root . '/' . $group . '/'); + + // This call is needed to ensure $this->rawname is set $this->_getCacheId($id, $group); - $success = self::$CacheLiteInstance->remove($this->rawname, $group); - if ($success == true) - { - return $success; - } - else - { - return false; - } + return static::$CacheLiteInstance->remove($this->rawname, $group); } /** * Clean cache for a group given a mode. * - * @param string $group The cache data group. - * @param string $mode The mode for cleaning cache [group|notgroup]. * group mode : cleans all cache in the group * notgroup mode : cleans all cache not in the group * - * @return boolean True on success, false otherwise. + * @param string $group The cache data group + * @param string $mode The mode for cleaning cache [group|notgroup] + * + * @return boolean * * @since 11.1 */ @@ -238,16 +225,17 @@ public function clean($group, $mode = null) switch ($mode) { case 'notgroup': - $clmode = 'notingroup'; - $success = self::$CacheLiteInstance->clean($group, $clmode); + $clmode = 'notingroup'; + $success = static::$CacheLiteInstance->clean($group, $clmode); break; case 'group': if (is_dir($this->_root . '/' . $group)) { $clmode = $group; - self::$CacheLiteInstance->setOption('cacheDir', $this->_root . '/' . $group . '/'); - $success = self::$CacheLiteInstance->clean($group, $clmode); + static::$CacheLiteInstance->setOption('cacheDir', $this->_root . '/' . $group . '/'); + $success = static::$CacheLiteInstance->clean($group, $clmode); + // Remove sub-folders of folder; disable all filtering $folders = JFolder::folders($this->_root . '/' . $group, '.', false, true, array(), array()); @@ -277,8 +265,8 @@ public function clean($group, $mode = null) if (is_dir($this->_root . '/' . $group)) { $clmode = $group; - self::$CacheLiteInstance->setOption('cacheDir', $this->_root . '/' . $group . '/'); - $success = self::$CacheLiteInstance->clean($group, $clmode); + static::$CacheLiteInstance->setOption('cacheDir', $this->_root . '/' . $group . '/'); + $success = static::$CacheLiteInstance->clean($group, $clmode); } else { @@ -288,29 +276,22 @@ public function clean($group, $mode = null) break; } - if ($success == true) - { - return $success; - } - else - { - return false; - } + return $success; } /** * Garbage collect expired cache data * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ public function gc() { $result = true; - self::$CacheLiteInstance->setOption('automaticCleaningFactor', 1); - self::$CacheLiteInstance->setOption('hashedDirectoryLevel', 1); - $success1 = self::$CacheLiteInstance->_cleanDir($this->_root . '/', false, 'old'); + static::$CacheLiteInstance->setOption('automaticCleaningFactor', 1); + static::$CacheLiteInstance->setOption('hashedDirectoryLevel', 1); + $success1 = static::$CacheLiteInstance->_cleanDir($this->_root . '/', false, 'old'); if (!($dh = opendir($this->_root . '/'))) { @@ -325,7 +306,7 @@ public function gc() if (is_dir($file2)) { - $result = ($result && (self::$CacheLiteInstance->_cleanDir($file2 . '/', false, 'old'))); + $result = ($result && (static::$CacheLiteInstance->_cleanDir($file2 . '/', false, 'old'))); } } } @@ -336,9 +317,9 @@ public function gc() } /** - * Test to see if the cache storage is available. + * Test to see if the storage handler is available. * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 12.1 */ diff --git a/libraries/joomla/cache/storage/file.php b/libraries/joomla/cache/storage/file.php index 94bf0a2ad17c9..5d5d5719dd7a5 100644 --- a/libraries/joomla/cache/storage/file.php +++ b/libraries/joomla/cache/storage/file.php @@ -13,6 +13,7 @@ * File cache storage handler * * @since 11.1 + * @note For performance reasons this class does not use the Filesystem package's API */ class JCacheStorageFile extends JCacheStorage { @@ -37,16 +38,14 @@ public function __construct($options = array()) $this->_root = $options['cachebase']; } - // NOTE: raw php calls are up to 100 times faster than JFile or JFolder - /** - * Get cached data from a file by id and group + * Get cached data by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param boolean $checkTime True to verify cache time expiration threshold * - * @return mixed Boolean false on failure or a cached data string + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ @@ -70,23 +69,19 @@ public function get($id, $group, $checkTime = true) return $data; } - else - { - return false; - } + + return false; } /** * Get all cached data * - * @return array The cached data + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ public function getAll() { - parent::getAll(); - $path = $this->_root; $folders = $this->_folders($path); $data = array(); @@ -108,13 +103,13 @@ public function getAll() } /** - * Store the data to a file by id and group + * Store the data to cache by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param string $data The data to store in cache * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ @@ -137,23 +132,16 @@ public function store($id, $group, $data) } // Data integrity check - if ($written && ($data == file_get_contents($path))) - { - return true; - } - else - { - return false; - } + return $written && ($data == file_get_contents($path)); } /** - * Remove a cached data file by id and group + * Remove a cached data entry by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ @@ -172,12 +160,13 @@ public function remove($id, $group) /** * Clean cache for a group given a mode. * + * group mode : cleans all cache in the group + * notgroup mode : cleans all cache not in the group + * * @param string $group The cache data group * @param string $mode The mode for cleaning cache [group|notgroup] - * group mode : cleans all cache in the group - * notgroup mode : cleans all cache not in the group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ @@ -203,23 +192,26 @@ public function clean($group, $mode = null) $return |= $this->_deleteFolder($this->_root . '/' . $folders[$i]); } } + break; + case 'group' : default : if (is_dir($this->_root . '/' . $folder)) { $return = $this->_deleteFolder($this->_root . '/' . $folder); } + break; } - return $return; + return (bool) $return; } /** * Garbage collect expired cache data * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ @@ -240,37 +232,35 @@ public function gc() } } - return $result; + return (bool) $result; } /** - * Test to see if the cache storage is available. + * Test to see if the storage handler is available. * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 12.1 */ public static function isSupported() { - $conf = JFactory::getConfig(); - - return is_writable($conf->get('cache_path', JPATH_CACHE)); + return is_writable(JFactory::getConfig()->get('cache_path', JPATH_CACHE)); } /** * Lock cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param integer $locktime Cached item max lock time * - * @return boolean True on success, false otherwise. + * @return mixed Boolean false if locking failed or an object containing properties lock and locklooped * * @since 11.1 */ public function lock($id, $group, $locktime) { - $returning = new stdClass; + $returning = new stdClass; $returning->locklooped = false; $looptime = $locktime * 10; @@ -315,10 +305,10 @@ public function lock($id, $group, $locktime) /** * Unlock cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ @@ -331,23 +321,20 @@ public function unlock($id, $group = null) { $ret = @flock($_fileopen, LOCK_UN); @fclose($_fileopen); - } - else - { - // Expect true if $_fileopen is false. Ref: http://issues.joomla.org/tracker/joomla-cms/2535 - $ret = true; + + return $ret; } - return $ret; + return true; } /** - * Check to make sure cache is still valid, if not, delete it. + * Check if a cache object has expired * - * @param string $id Cache key to expire. - * @param string $group The cache data group. + * @param string $id Cache ID to check + * @param string $group The cache data group * - * @return boolean False if not valid + * @return boolean True if the cache ID is valid * * @since 11.1 */ @@ -374,12 +361,12 @@ protected function _checkExpire($id, $group) } /** - * Get a cache file path from an id/group pair + * Get a cache file path from an ID/group pair * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return string The cache file path + * @return boolean|string The path to the data object or boolean false if the cache directory does not exist * * @since 11.1 */ @@ -410,7 +397,7 @@ protected function _getFilePath($id, $group) * * @param string $path The path to the folder to delete. * - * @return boolean True on success. + * @return boolean * * @since 11.1 */ @@ -420,7 +407,7 @@ protected function _deleteFolder($path) if (!$path || !is_dir($path) || empty($this->_root)) { // Bad programmer! Bad, bad programmer! - JLog::add('JCacheStorageFile::_deleteFolder ' . JText::_('JLIB_FILESYSTEM_ERROR_DELETE_BASE_DIRECTORY'), JLog::WARNING, 'jerror'); + JLog::add(__METHOD__ . ' ' . JText::_('JLIB_FILESYSTEM_ERROR_DELETE_BASE_DIRECTORY'), JLog::WARNING, 'jerror'); return false; } @@ -432,7 +419,7 @@ protected function _deleteFolder($path) if ($pos === false || $pos > 0) { - JLog::add('JCacheStorageFile::_deleteFolder' . JText::sprintf('JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER', $path), JLog::WARNING, 'jerror'); + JLog::add(__METHOD__ . ' ' . JText::sprintf('JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER', $path), JLog::WARNING, 'jerror'); return false; } @@ -453,16 +440,10 @@ protected function _deleteFolder($path) { $file = $this->_cleanPath($file); - // In case of restricted permissions we zap it one way or the other - // as long as the owner is either the webserver or the ftp - if (@unlink($file)) + // In case of restricted permissions we zap it one way or the other as long as the owner is either the webserver or the ftp + if (@unlink($file) !== true) { - // Do nothing - } - else - { - $filename = basename($file); - JLog::add('JCacheStorageFile::_deleteFolder' . JText::sprintf('JLIB_FILESYSTEM_DELETE_FAILED', $filename), JLog::WARNING, 'jerror'); + JLog::add(__METHOD__ . ' ' . JText::sprintf('JLIB_FILESYSTEM_DELETE_FAILED', basename($file)), JLog::WARNING, 'jerror'); return false; } @@ -488,20 +469,15 @@ protected function _deleteFolder($path) } } - // In case of restricted permissions we zap it one way or the other - // as long as the owner is either the webserver or the ftp + // In case of restricted permissions we zap it one way or the other as long as the owner is either the webserver or the ftp if (@rmdir($path)) { - $ret = true; + return true; } - else - { - JLog::add('JCacheStorageFile::_deleteFolder' . JText::sprintf('JLIB_FILESYSTEM_ERROR_FOLDER_DELETE', $path), JLog::WARNING, 'jerror'); - $ret = false; - } + JLog::add(__METHOD__ . ' ' . JText::sprintf('JLIB_FILESYSTEM_ERROR_FOLDER_DELETE', $path), JLog::WARNING, 'jerror'); - return $ret; + return false; } /** @@ -520,14 +496,12 @@ protected function _cleanPath($path, $ds = DIRECTORY_SEPARATOR) if (empty($path)) { - $path = $this->_root; - } - else - { - // Remove double slashes and backslahses and convert all slashes and backslashes to DIRECTORY_SEPARATOR - $path = preg_replace('#[/\\\\]+#', $ds, $path); + return $this->_root; } + // Remove double slashes and backslahses and convert all slashes and backslashes to DIRECTORY_SEPARATOR + $path = preg_replace('#[/\\\\]+#', $ds, $path); + return $path; } @@ -536,19 +510,17 @@ protected function _cleanPath($path, $ds = DIRECTORY_SEPARATOR) * * @param string $path The path of the folder to read. * @param string $filter A filter for file names. - * @param mixed $recurse True to recursively search into sub-folders, or an - * integer to specify the maximum depth. + * @param mixed $recurse True to recursively search into sub-folders, or an integer to specify the maximum depth. * @param boolean $fullpath True to return the full path to the file. - * @param array $exclude Array with names of files which should not be shown in - * the result. + * @param array $exclude Array with names of files which should not be shown in the result. * @param array $excludefilter Array of folder names to exclude * - * @return array Files in the given folder. + * @return array Files in the given folder. * * @since 11.1 */ - protected function _filesInFolder($path, $filter = '.', $recurse = false, $fullpath = false - , $exclude = array('.svn', 'CVS', '.DS_Store', '__MACOSX'), $excludefilter = array('^\..*', '.*~')) + protected function _filesInFolder($path, $filter = '.', $recurse = false, $fullpath = false, + $exclude = array('.svn', 'CVS', '.DS_Store', '__MACOSX'), $excludefilter = array('^\..*', '.*~')) { $arr = array(); @@ -558,7 +530,7 @@ protected function _filesInFolder($path, $filter = '.', $recurse = false, $fullp // Is the path a folder? if (!is_dir($path)) { - JLog::add('JCacheStorageFile::_filesInFolder' . JText::sprintf('JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER', $path), JLog::WARNING, 'jerror'); + JLog::add(__METHOD__ . ' ' . JText::sprintf('JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER', $path), JLog::WARNING, 'jerror'); return false; } @@ -637,8 +609,8 @@ protected function _filesInFolder($path, $filter = '.', $recurse = false, $fullp * * @since 11.1 */ - protected function _folders($path, $filter = '.', $recurse = false, $fullpath = false - , $exclude = array('.svn', 'CVS', '.DS_Store', '__MACOSX'), $excludefilter = array('^\..*')) + protected function _folders($path, $filter = '.', $recurse = false, $fullpath = false, $exclude = array('.svn', 'CVS', '.DS_Store', '__MACOSX'), + $excludefilter = array('^\..*')) { $arr = array(); @@ -648,7 +620,7 @@ protected function _folders($path, $filter = '.', $recurse = false, $fullpath = // Is the path a folder? if (!is_dir($path)) { - JLog::add('JCacheStorageFile::_folders' . JText::sprintf('JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER', $path), JLog::WARNING, 'jerror'); + JLog::add(__METHOD__ . ' ' . JText::sprintf('JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER', $path), JLog::WARNING, 'jerror'); return false; } diff --git a/libraries/joomla/cache/storage/helper.php b/libraries/joomla/cache/storage/helper.php index 1f79a04437ae4..f1c8cd537bd88 100644 --- a/libraries/joomla/cache/storage/helper.php +++ b/libraries/joomla/cache/storage/helper.php @@ -63,7 +63,7 @@ public function __construct($group) */ public function updateSize($size) { - $this->size = number_format($this->size + $size, 2, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR')); + $this->size = number_format((float) $this->size + (float) $size, 2, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR')); $this->count++; } } diff --git a/libraries/joomla/cache/storage/memcache.php b/libraries/joomla/cache/storage/memcache.php index da07ba5f2e2e2..cdc6af541f408 100644 --- a/libraries/joomla/cache/storage/memcache.php +++ b/libraries/joomla/cache/storage/memcache.php @@ -52,45 +52,31 @@ public function __construct($options = array()) { parent::__construct($options); - if (self::$_db === null) + if (static::isSupported() && static::$_db === null) { $this->getConnection(); } } /** - * Return memcache connection object + * Create the Memcache connection * - * @return mixed Memcache connection object if present + * @return void * * @since 11.1 * @throws RuntimeException */ protected function getConnection() { - if ((extension_loaded('memcache') && class_exists('Memcache')) != true) - { - return false; - } - - $config = JFactory::getConfig(); + $config = JFactory::getConfig(); $this->_persistent = $config->get('memcache_persist', true); - $this->_compress = $config->get('memcache_compress', false) == false ? 0 : MEMCACHE_COMPRESSED; - - /* - * This will be an array of loveliness - * @todo: multiple servers - * $servers = (isset($params['servers'])) ? $params['servers'] : array(); - */ - $server = array(); - $server['host'] = $config->get('memcache_server_host', 'localhost'); - $server['port'] = $config->get('memcache_server_port', 11211); + $this->_compress = $config->get('memcache_compress', false) == false ? 0 : MEMCACHE_COMPRESSED; // Create the memcache connection - self::$_db = new Memcache; - self::$_db->addServer($server['host'], $server['port'], $this->_persistent); + static::$_db = new Memcache; + static::$_db->addserver($config->get('memcache_server_host', 'localhost'), $config->get('memcache_server_port', 11211), $this->_persistent); - $memcachetest = @self::$_db->connect($server['host'], $server['port']); + $memcachetest = @static::$_db->connect($server['host'], $server['port']); if ($memcachetest == false) { @@ -98,46 +84,40 @@ protected function getConnection() } // Memcahed has no list keys, we do our own accounting, initialise key index - if (self::$_db->get($this->_hash . '-index') === false) + if (static::$_db->get($this->_hash . '-index') === false) { - $empty = array(); - self::$_db->set($this->_hash . '-index', $empty, $this->_compress, 0); + static::$_db->set($this->_hash . '-index', array(), $this->_compress, 0); } return; } /** - * Get cached data from memcache by id and group + * Get cached data by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param boolean $checkTime True to verify cache time expiration threshold * - * @return mixed Boolean false on failure or a cached data string + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ public function get($id, $group, $checkTime = true) { - $cache_id = $this->_getCacheId($id, $group); - $back = self::$_db->get($cache_id); - - return $back; + return static::$_db->get($this->_getCacheId($id, $group)); } /** * Get all cached data * - * @return array data + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ public function getAll() { - parent::getAll(); - - $keys = self::$_db->get($this->_hash . '-index'); + $keys = static::$_db->get($this->_hash . '-index'); $secret = $this->_hash; $data = array(); @@ -177,13 +157,13 @@ public function getAll() } /** - * Store the data to memcache by id and group + * Store the data to cache by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param string $data The data to store in cache * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ @@ -196,45 +176,37 @@ public function store($id, $group, $data) return false; } - $index = self::$_db->get($this->_hash . '-index'); + $index = static::$_db->get($this->_hash . '-index'); if ($index === false) { $index = array(); } - $tmparr = new stdClass; + $tmparr = new stdClass; $tmparr->name = $cache_id; $tmparr->size = strlen($data); - $config = JFactory::getConfig(); - $lifetime = (int) $config->get('cachetime', 15); - - if ($this->_lifetime == $lifetime) - { - $this->_lifetime = $lifetime * 60; - } - $index[] = $tmparr; - self::$_db->replace($this->_hash . '-index', $index, 0, 0); + static::$_db->replace($this->_hash . '-index', $index, 0, 0); $this->unlockindex(); // Prevent double writes, write only if it doesn't exist else replace - if (!self::$_db->replace($cache_id, $data, $this->_compress, $this->_lifetime)) + if (!static::$_db->replace($cache_id, $data, $this->_compress, $this->_lifetime)) { - self::$_db->set($cache_id, $data, $this->_compress, $this->_lifetime); + static::$_db->set($cache_id, $data, $this->_compress, $this->_lifetime); } return true; } /** - * Remove a cached data entry by id and group + * Remove a cached data entry by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ @@ -247,7 +219,7 @@ public function remove($id, $group) return false; } - $index = self::$_db->get($this->_hash . '-index'); + $index = static::$_db->get($this->_hash . '-index'); if ($index === false) { @@ -264,21 +236,22 @@ public function remove($id, $group) break; } - self::$_db->replace($this->_hash . '-index', $index, 0, 0); + static::$_db->replace($this->_hash . '-index', $index, 0, 0); $this->unlockindex(); - return self::$_db->delete($cache_id); + return static::$_db->delete($cache_id); } /** * Clean cache for a group given a mode. * - * @param string $group The cache data group - * @param string $mode The mode for cleaning cache [group|notgroup] * group mode : cleans all cache in the group * notgroup mode : cleans all cache not in the group * - * @return boolean True on success, false otherwise + * @param string $group The cache data group + * @param string $mode The mode for cleaning cache [group|notgroup] + * + * @return boolean * * @since 11.1 */ @@ -289,7 +262,7 @@ public function clean($group, $mode = null) return false; } - $index = self::$_db->get($this->_hash . '-index'); + $index = static::$_db->get($this->_hash . '-index'); if ($index === false) { @@ -302,21 +275,21 @@ public function clean($group, $mode = null) { if (strpos($value->name, $secret . '-cache-' . $group . '-') === 0 xor $mode != 'group') { - self::$_db->delete($value->name, 0); + static::$_db->delete($value->name, 0); unset($index[$key]); } } - self::$_db->replace($this->_hash . '-index', $index, 0, 0); + static::$_db->replace($this->_hash . '-index', $index, 0, 0); $this->unlockindex(); return true; } /** - * Test to see if the cache storage is available. + * Test to see if the storage handler is available. * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 12.1 */ @@ -332,29 +305,25 @@ public static function isSupported() // Now check if we can connect to the specified Memcache server $config = JFactory::getConfig(); - $host = $config->get('memcache_server_host', 'localhost'); - $port = $config->get('memcache_server_port', 11211); $memcache = new Memcache; - $memcachetest = @$memcache->connect($host, $port); - - return $memcachetest; + return @$memcache->connect($config->get('memcache_server_host', 'localhost'), $config->get('memcache_server_port', 11211)); } /** - * Lock cached item - override parent as this is more efficient + * Lock cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param integer $locktime Cached item max lock time * - * @return boolean True on success, false otherwise. + * @return mixed Boolean false if locking failed or an object containing properties lock and locklooped * * @since 11.1 */ public function lock($id, $group, $locktime) { - $returning = new stdClass; + $returning = new stdClass; $returning->locklooped = false; $looptime = $locktime * 10; @@ -366,28 +335,28 @@ public function lock($id, $group, $locktime) return false; } - $index = self::$_db->get($this->_hash . '-index'); + $index = static::$_db->get($this->_hash . '-index'); if ($index === false) { $index = array(); } - $tmparr = new stdClass; + $tmparr = new stdClass; $tmparr->name = $cache_id; $tmparr->size = 1; + $index[] = $tmparr; - self::$_db->replace($this->_hash . '-index', $index, 0, 0); + static::$_db->replace($this->_hash . '-index', $index, 0, 0); $this->unlockindex(); - $data_lock = self::$_db->add($cache_id . '_lock', 1, false, $locktime); + $data_lock = static::$_db->add($cache_id . '_lock', 1, false, $locktime); if ($data_lock === false) { $lock_counter = 0; - // Loop until you find that the lock has been released. - // That implies that data get from other thread has finished + // Loop until you find that the lock has been released. That implies that data get from other thread has finished while ($data_lock === false) { if ($lock_counter > $looptime) @@ -398,7 +367,7 @@ public function lock($id, $group, $locktime) } usleep(100); - $data_lock = self::$_db->add($cache_id . '_lock', 1, false, $locktime); + $data_lock = static::$_db->add($cache_id . '_lock', 1, false, $locktime); $lock_counter++; } } @@ -409,12 +378,12 @@ public function lock($id, $group, $locktime) } /** - * Unlock cached item - override parent for cacheid compatibility with lock + * Unlock cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ @@ -427,7 +396,7 @@ public function unlock($id, $group = null) return false; } - $index = self::$_db->get($this->_hash . '-index'); + $index = static::$_db->get($this->_hash . '-index'); if ($index === false) { @@ -444,23 +413,23 @@ public function unlock($id, $group = null) break; } - self::$_db->replace($this->_hash . '-index', $index, 0, 0); + static::$_db->replace($this->_hash . '-index', $index, 0, 0); $this->unlockindex(); - return self::$_db->delete($cache_id); + return static::$_db->delete($cache_id); } /** * Lock cache index * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ protected function lockindex() { - $looptime = 300; - $data_lock = self::$_db->add($this->_hash . '-index_lock', 1, false, 30); + $looptime = 300; + $data_lock = static::$_db->add($this->_hash . '-index_lock', 1, false, 30); if ($data_lock === false) { @@ -476,7 +445,7 @@ protected function lockindex() } usleep(100); - $data_lock = self::$_db->add($this->_hash . '-index_lock', 1, false, 30); + $data_lock = static::$_db->add($this->_hash . '-index_lock', 1, false, 30); $lock_counter++; } } @@ -487,12 +456,12 @@ protected function lockindex() /** * Unlock cache index * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ protected function unlockindex() { - return self::$_db->delete($this->_hash . '-index_lock'); + return static::$_db->delete($this->_hash . '-index_lock'); } } diff --git a/libraries/joomla/cache/storage/memcached.php b/libraries/joomla/cache/storage/memcached.php index 83fb2e37530c5..1f48df394647f 100644 --- a/libraries/joomla/cache/storage/memcached.php +++ b/libraries/joomla/cache/storage/memcached.php @@ -52,101 +52,80 @@ public function __construct($options = array()) { parent::__construct($options); - if (self::$_db === null) + if (static::isSupported() && static::$_db === null) { $this->getConnection(); } } /** - * Return memcached connection object + * Create the Memcached connection * - * @return object memcached connection object + * @return void * * @since 12.1 * @throws RuntimeException */ protected function getConnection() { - if ((extension_loaded('memcached') && class_exists('Memcached')) != true) - { - return false; - } - - $config = JFactory::getConfig(); + $config = JFactory::getConfig(); $this->_persistent = $config->get('memcached_persist', true); - $this->_compress = $config->get('memcached_compress', false) == false ? 0 : Memcached::OPT_COMPRESSION; - - /* - * This will be an array of loveliness - * @todo: multiple servers - * $servers = (isset($params['servers'])) ? $params['servers'] : array(); - */ - $server = array(); - $server['host'] = $config->get('memcached_server_host', 'localhost'); - $server['port'] = $config->get('memcached_server_port', 11211); + $this->_compress = $config->get('memcached_compress', false) == false ? 0 : Memcached::OPT_COMPRESSION; // Create the memcache connection if ($this->_persistent) { - $session = JFactory::getSession(); - self::$_db = new Memcached($session->getId()); + static::$_db = new Memcached(JFactory::getSession()->getId()); } else { - self::$_db = new Memcached; + static::$_db = new Memcached; } - $memcachedtest = self::$_db->addServer($server['host'], $server['port']); + $memcachedtest = static::$_db->addServer($config->get('memcached_server_host', 'localhost'), $config->get('memcached_server_port', 11211)); if ($memcachedtest == false) { throw new RuntimeException('Could not connect to memcached server', 404); } - self::$_db->setOption(Memcached::OPT_COMPRESSION, $this->_compress); + static::$_db->setOption(Memcached::OPT_COMPRESSION, $this->_compress); // Memcached has no list keys, we do our own accounting, initialise key index - if (self::$_db->get($this->_hash . '-index') === false) + if (static::$_db->get($this->_hash . '-index') === false) { - $empty = array(); - self::$_db->set($this->_hash . '-index', $empty, 0); + static::$_db->set($this->_hash . '-index', array(), 0); } - - return; } /** - * Get cached data from memcached by id and group + * Get cached data by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param boolean $checkTime True to verify cache time expiration threshold * - * @return mixed Boolean false on failure or a cached data string + * @return mixed Boolean false on failure or a cached data object * * @since 12.1 */ public function get($id, $group, $checkTime = true) { $cache_id = $this->_getCacheId($id, $group); - $back = self::$_db->get($cache_id); - return $back; + return static::$_db->get($cache_id); } /** * Get all cached data * - * @return array data + * @return mixed Boolean false on failure or a cached data object * * @since 12.1 */ public function getAll() { - parent::getAll(); - - $keys = self::$_db->get($this->_hash . '-index'); + $keys = static::$_db->get($this->_hash . '-index'); $secret = $this->_hash; $data = array(); @@ -186,13 +165,13 @@ public function getAll() } /** - * Store the data to memcached by id and group + * Store the data to cache by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param string $data The data to store in cache * - * @return boolean True on success, false otherwise + * @return boolean * * @since 12.1 */ @@ -205,36 +184,37 @@ public function store($id, $group, $data) return false; } - $index = self::$_db->get($this->_hash . '-index'); + $index = static::$_db->get($this->_hash . '-index'); if ($index === false) { $index = array(); } - $tmparr = new stdClass; + $tmparr = new stdClass; $tmparr->name = $cache_id; $tmparr->size = strlen($data); + $index[] = $tmparr; - self::$_db->replace($this->_hash . '-index', $index, 0); + static::$_db->replace($this->_hash . '-index', $index, 0); $this->unlockindex(); // Prevent double writes, write only if it doesn't exist else replace - if (!self::$_db->replace($cache_id, $data, $this->_lifetime)) + if (!static::$_db->replace($cache_id, $data, $this->_lifetime)) { - self::$_db->set($cache_id, $data, $this->_lifetime); + static::$_db->set($cache_id, $data, $this->_lifetime); } return true; } /** - * Remove a cached data entry by id and group + * Remove a cached data entry by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 12.1 */ @@ -247,7 +227,7 @@ public function remove($id, $group) return false; } - $index = self::$_db->get($this->_hash . '-index'); + $index = static::$_db->get($this->_hash . '-index'); if ($index === false) { @@ -264,21 +244,22 @@ public function remove($id, $group) break; } - self::$_db->replace($this->_hash . '-index', $index, 0); + static::$_db->replace($this->_hash . '-index', $index, 0); $this->unlockindex(); - return self::$_db->delete($cache_id); + return static::$_db->delete($cache_id); } /** * Clean cache for a group given a mode. * - * @param string $group The cache data group - * @param string $mode The mode for cleaning cache [group|notgroup] * group mode : cleans all cache in the group * notgroup mode : cleans all cache not in the group * - * @return boolean True on success, false otherwise + * @param string $group The cache data group + * @param string $mode The mode for cleaning cache [group|notgroup] + * + * @return boolean * * @since 12.1 */ @@ -289,7 +270,7 @@ public function clean($group, $mode = null) return false; } - $index = self::$_db->get($this->_hash . '-index'); + $index = static::$_db->get($this->_hash . '-index'); if ($index === false) { @@ -302,21 +283,21 @@ public function clean($group, $mode = null) { if (strpos($value->name, $secret . '-cache-' . $group . '-') === 0 xor $mode != 'group') { - self::$_db->delete($value->name, 0); + static::$_db->delete($value->name, 0); unset($index[$key]); } } - self::$_db->replace($this->_hash . '-index', $index, 0); + static::$_db->replace($this->_hash . '-index', $index, 0); $this->unlockindex(); return true; } /** - * Test to see if the cache storage is available. + * Test to see if the storage handler is available. * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 12.1 */ @@ -333,23 +314,19 @@ public static function isSupported() // Now check if we can connect to the specified Memcached server $config = JFactory::getConfig(); - $host = $config->get('memcached_server_host', 'localhost'); - $port = $config->get('memcached_server_port', 11211); $memcached = new Memcached; - $memcachedtest = @$memcached->addServer($host, $port); - - return $memcachedtest; + return @$memcached->addServer($config->get('memcached_server_host', 'localhost'), $config->get('memcached_server_port', 11211)); } /** - * Lock cached item - override parent as this is more efficient + * Lock cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param integer $locktime Cached item max lock time * - * @return boolean True on success, false otherwise. + * @return mixed Boolean false if locking failed or an object containing properties lock and locklooped * * @since 12.1 */ @@ -367,7 +344,7 @@ public function lock($id, $group, $locktime) return false; } - $index = self::$_db->get($this->_hash . '-index'); + $index = static::$_db->get($this->_hash . '-index'); if ($index === false) { @@ -379,11 +356,11 @@ public function lock($id, $group, $locktime) $tmparr->size = 1; $index[] = $tmparr; - self::$_db->replace($this->_hash . '-index', $index, 0); + static::$_db->replace($this->_hash . '-index', $index, 0); $this->unlockindex(); - $data_lock = self::$_db->add($cache_id . '_lock', 1, $locktime); + $data_lock = static::$_db->add($cache_id . '_lock', 1, $locktime); if ($data_lock === false) { @@ -401,7 +378,7 @@ public function lock($id, $group, $locktime) } usleep(100); - $data_lock = self::$_db->add($cache_id . '_lock', 1, $locktime); + $data_lock = static::$_db->add($cache_id . '_lock', 1, $locktime); $lock_counter++; } } @@ -412,12 +389,12 @@ public function lock($id, $group, $locktime) } /** - * Unlock cached item - override parent for cacheid compatibility with lock + * Unlock cached item * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 12.1 */ @@ -430,7 +407,7 @@ public function unlock($id, $group = null) return false; } - $index = self::$_db->get($this->_hash . '-index'); + $index = static::$_db->get($this->_hash . '-index'); if ($index === false) { @@ -447,23 +424,23 @@ public function unlock($id, $group = null) break; } - self::$_db->replace($this->_hash . '-index', $index, 0); + static::$_db->replace($this->_hash . '-index', $index, 0); $this->unlockindex(); - return self::$_db->delete($cache_id); + return static::$_db->delete($cache_id); } /** * Lock cache index * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 12.1 */ protected function lockindex() { - $looptime = 300; - $data_lock = self::$_db->add($this->_hash . '-index_lock', 1, 30); + $looptime = 300; + $data_lock = static::$_db->add($this->_hash . '-index_lock', 1, 30); if ($data_lock === false) { @@ -479,7 +456,7 @@ protected function lockindex() } usleep(100); - $data_lock = self::$_db->add($this->_hash . '-index_lock', 1, 30); + $data_lock = static::$_db->add($this->_hash . '-index_lock', 1, 30); $lock_counter++; } } @@ -490,12 +467,12 @@ protected function lockindex() /** * Unlock cache index * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 12.1 */ protected function unlockindex() { - return self::$_db->delete($this->_hash . '-index_lock'); + return static::$_db->delete($this->_hash . '-index_lock'); } } diff --git a/libraries/joomla/cache/storage/redis.php b/libraries/joomla/cache/storage/redis.php index a27687e6ba2d8..c5464de3b740a 100644 --- a/libraries/joomla/cache/storage/redis.php +++ b/libraries/joomla/cache/storage/redis.php @@ -12,9 +12,7 @@ /** * Redis cache storage handler for PECL * - * @package Joomla.Platform - * @subpackage Cache - * @since 3.4 + * @since 3.4 */ class JCacheStorageRedis extends JCacheStorage { @@ -52,13 +50,11 @@ public function __construct($options = array()) } /** - * Return redis connection object + * Create the Redis connection * - * @return mixed Redis connection object on success, void or boolean on failure + * @return Redis|boolean Redis connection object on success, boolean on failure * * @since 3.4 - * - * @throws RuntimeException */ protected function getConnection() { @@ -67,8 +63,8 @@ protected function getConnection() return false; } - $config = JFactory::getConfig(); - $app = JFactory::getApplication(); + $config = JFactory::getConfig(); + $app = JFactory::getApplication(); $this->_persistent = $config->get('redis_persist', true); @@ -115,7 +111,7 @@ protected function getConnection() JError::raiseWarning(500, 'Redis connection failed'); } - return; + return false; } if ($auth == false) @@ -125,7 +121,7 @@ protected function getConnection() JError::raiseWarning(500, 'Redis authentication failed'); } - return; + return false; } $select = static::$_redis->select($server['db']); @@ -139,7 +135,7 @@ protected function getConnection() JError::raiseWarning(500, 'Redis failed to select database'); } - return; + return false; } try @@ -155,20 +151,20 @@ protected function getConnection() JError::raiseWarning(500, 'Redis ping failed'); } - return; + return false; } return static::$_redis; } /** - * Get cached data from redis by id and group + * Get cached data by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param boolean $checkTime True to verify cache time expiration threshold * - * @return mixed Boolean false on failure or a cached data string + * @return mixed Boolean false on failure or a cached data object * * @since 3.4 */ @@ -179,16 +175,13 @@ public function get($id, $group, $checkTime = true) return false; } - $cache_id = $this->_getCacheId($id, $group); - $back = static::$_redis->get($cache_id); - - return $back; + return static::$_redis->get($this->_getCacheId($id, $group)); } /** * Get all cached data * - * @return array Array of cached data + * @return mixed Boolean false on failure or a cached data object * * @since 3.4 */ @@ -199,8 +192,6 @@ public function getAll() return false; } - parent::getAll(); - $allKeys = static::$_redis->keys('*'); $data = array(); $secret = $this->_hash; @@ -234,13 +225,13 @@ public function getAll() } /** - * Store the data to Redis by id and group + * Store the data to cache by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param string $data The data to store in cache * - * @return boolean True on success, false otherwise + * @return boolean * * @since 3.4 */ @@ -251,33 +242,18 @@ public function store($id, $group, $data) return false; } - $cache_id = $this->_getCacheId($id, $group); - $tmparr = new stdClass; - $tmparr->name = $cache_id; - $tmparr->size = strlen($data); - - $config = JFactory::getConfig(); - $lifetime = (int) $config->get('cachetime', 15); - - if ($this->_lifetime == $lifetime) - { - $this->_lifetime = $lifetime * 60; - } - - $index[] = $tmparr; - - static::$_redis->setex($cache_id, 3600, $data); + static::$_redis->setex($this->_getCacheId($id, $group), $this->_lifetime, $data); return true; } /** - * Remove a cached data entry by id and group + * Remove a cached data entry by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 3.4 */ @@ -288,20 +264,19 @@ public function remove($id, $group) return false; } - $cache_id = $this->_getCacheId($id, $group); - - return (bool) static::$_redis->delete($cache_id); + return (bool) static::$_redis->delete($this->_getCacheId($id, $group)); } /** * Clean cache for a group given a mode. * + * group mode : cleans all cache in the group + * notgroup mode : cleans all cache not in the group + * * @param string $group The cache data group * @param string $mode The mode for cleaning cache [group|notgroup] - * group mode : cleans all cache in the group - * notgroup mode : cleans all cache not in the group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 3.4 */ @@ -338,9 +313,9 @@ public function clean($group, $mode = null) } /** - * Test to see if the cache storage is available. + * Test to see if the storage handler is available. * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 3.4 */ @@ -350,14 +325,14 @@ public static function isSupported() } /** - * Test to see if the Redis connection is up + * Test to see if the Redis connection is available. * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 3.4 */ public static function isConnected() { - return (bool) static::$_redis; + return static::$_redis instanceof Redis; } } diff --git a/libraries/joomla/cache/storage/wincache.php b/libraries/joomla/cache/storage/wincache.php index ce33e534d05be..04c80281a251d 100644 --- a/libraries/joomla/cache/storage/wincache.php +++ b/libraries/joomla/cache/storage/wincache.php @@ -10,7 +10,7 @@ defined('JPATH_PLATFORM') or die; /** - * WINCACHE cache storage handler + * WinCache cache storage handler * * @see http://php.net/manual/en/book.wincache.php * @since 11.1 @@ -18,35 +18,30 @@ class JCacheStorageWincache extends JCacheStorage { /** - * Get cached data from WINCACHE by id and group + * Get cached data by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param boolean $checkTime True to verify cache time expiration threshold * - * @return mixed Boolean false on failure or a cached data string + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ public function get($id, $group, $checkTime = true) { - $cache_id = $this->_getCacheId($id, $group); - $cache_content = wincache_ucache_get($cache_id); - - return $cache_content; + return wincache_ucache_get($this->_getCacheId($id, $group)); } /** * Get all cached data * - * @return array data + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ public function getAll() { - parent::getAll(); - $allinfo = wincache_ucache_info(); $keys = $allinfo['ucache_entries']; $secret = $this->_hash; @@ -88,49 +83,46 @@ public function getAll() } /** - * Store the data to WINCACHE by id and group + * Store the data to cache by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param string $data The data to store in cache * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ public function store($id, $group, $data) { - $cache_id = $this->_getCacheId($id, $group); - - return wincache_ucache_set($cache_id, $data, $this->_lifetime); + return wincache_ucache_set($this->_getCacheId($id, $group), $data, $this->_lifetime); } /** - * Remove a cached data entry by id and group + * Remove a cached data entry by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ public function remove($id, $group) { - $cache_id = $this->_getCacheId($id, $group); - - return wincache_ucache_delete($cache_id); + return wincache_ucache_delete($this->_getCacheId($id, $group)); } /** * Clean cache for a group given a mode. * - * @param string $group The cache data group - * @param string $mode The mode for cleaning cache [group|notgroup] * group mode : cleans all cache in the group * notgroup mode : cleans all cache not in the group * - * @return boolean True on success, false otherwise + * @param string $group The cache data group + * @param string $mode The mode for cleaning cache [group|notgroup] + * + * @return boolean * * @since 11.1 */ @@ -152,9 +144,9 @@ public function clean($group, $mode = null) } /** - * Force garbage collect expired cache data as items are removed only on get/add/delete/info etc + * Garbage collect expired cache data * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 11.1 */ @@ -171,19 +163,19 @@ public function gc() wincache_ucache_get($key['key_name']); } } + + return true; } /** - * Test to see if the cache storage is available. + * Test to see if the storage handler is available. * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 12.1 */ public static function isSupported() { - $test = extension_loaded('wincache') && function_exists('wincache_ucache_get') && !strcmp(ini_get('wincache.ucenabled'), '1'); - - return $test; + return extension_loaded('wincache') && function_exists('wincache_ucache_get') && !strcmp(ini_get('wincache.ucenabled'), '1'); } } diff --git a/libraries/joomla/cache/storage/xcache.php b/libraries/joomla/cache/storage/xcache.php index 867a6678b57eb..e8efa687c7b68 100644 --- a/libraries/joomla/cache/storage/xcache.php +++ b/libraries/joomla/cache/storage/xcache.php @@ -18,20 +18,20 @@ class JCacheStorageXcache extends JCacheStorage { /** - * Get cached data by id and group + * Get cached data by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param boolean $checkTime True to verify cache time expiration threshold * - * @return mixed Boolean false on failure or a cached data string + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 */ public function get($id, $group, $checkTime = true) { // Make sure XCache is configured properly - if (self::isSupported() == false) + if (static::isSupported() == false) { return false; } @@ -50,25 +50,22 @@ public function get($id, $group, $checkTime = true) /** * Get all cached data * - * This requires the php.ini setting xcache.admin.enable_auth = Off. - * - * @return array data + * @return mixed Boolean false on failure or a cached data object * * @since 11.1 + * @note This requires the php.ini setting xcache.admin.enable_auth = Off. */ public function getAll() { - parent::getAll(); - // Make sure XCache is configured properly - if (self::isSupported() == false) + if (static::isSupported() == false) { return array(); } $allinfo = xcache_list(XC_TYPE_VAR, 0); - $keys = $allinfo['cache_list']; - $secret = $this->_hash; + $keys = $allinfo['cache_list']; + $secret = $this->_hash; $data = array(); @@ -99,44 +96,41 @@ public function getAll() } /** - * Store the data by id and group + * Store the data to cache by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * @param string $data The data to store in cache * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ public function store($id, $group, $data) { // Make sure XCache is configured properly - if (self::isSupported() == false) + if (static::isSupported() == false) { return false; } - $cache_id = $this->_getCacheId($id, $group); - $store = xcache_set($cache_id, $data, $this->_lifetime); - - return $store; + return xcache_set($this->_getCacheId($id, $group), $data, $this->_lifetime); } /** - * Remove a cached data entry by id and group + * Remove a cached data entry by ID and group * - * @param string $id The cache data id + * @param string $id The cache data ID * @param string $group The cache data group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ public function remove($id, $group) { // Make sure XCache is configured properly - if (self::isSupported() == false) + if (static::isSupported() == false) { return false; } @@ -154,28 +148,27 @@ public function remove($id, $group) /** * Clean cache for a group given a mode. * - * This requires the php.ini setting xcache.admin.enable_auth = Off. + * group mode : cleans all cache in the group + * notgroup mode : cleans all cache not in the group * * @param string $group The cache data group * @param string $mode The mode for cleaning cache [group|notgroup] - * group mode : cleans all cache in the group - * notgroup mode : cleans all cache not in the group * - * @return boolean True on success, false otherwise + * @return boolean * * @since 11.1 */ public function clean($group, $mode = null) { // Make sure XCache is configured properly - if (self::isSupported() == false) + if (static::isSupported() == false) { return true; } $allinfo = xcache_list(XC_TYPE_VAR, 0); - $keys = $allinfo['cache_list']; - $secret = $this->_hash; + $keys = $allinfo['cache_list']; + $secret = $this->_hash; foreach ($keys as $key) { @@ -189,45 +182,9 @@ public function clean($group, $mode = null) } /** - * Garbage collect expired cache data - * - * This is a dummy, since xcache has built in garbage collector, turn it - * on in php.ini by changing default xcache.gc_interval setting from - * 0 to 3600 (=1 hour) - * - * @return boolean True on success, false otherwise. - * - * @since 11.1 - */ - public function gc() - { - /* - $now = time(); - - $cachecount = xcache_count(XC_TYPE_VAR); - - for ($i = 0; $i < $cachecount; $i ++) { - - $allinfo = xcache_list(XC_TYPE_VAR, $i); - $keys = $allinfo ['cache_list']; - - foreach($keys as $key) { - - if (strstr($key['name'], $this->_hash)) { - if (($key['ctime'] + $this->_lifetime ) < $this->_now) xcache_unset($key['name']); - } - } - } - - */ - - return true; - } - - /** - * Test to see if the cache storage is available. + * Test to see if the storage handler is available. * - * @return boolean True on success, false otherwise. + * @return boolean * * @since 12.1 */ diff --git a/tests/unit/core/case/cache.php b/tests/unit/core/case/cache.php new file mode 100644 index 0000000000000..9c3eef9b677cb --- /dev/null +++ b/tests/unit/core/case/cache.php @@ -0,0 +1,168 @@ +saveFactoryState(); + + JFactory::$application = $this->getMockCmsApp(); + JFactory::$session = $this->getMockSession(); + + $this->id = bin2hex(random_bytes(8)); + } + + /** + * Tears down the fixture, for example, close a network connection. + * This method is called after a test is executed. + * + * @return void + */ + protected function tearDown() + { + $this->restoreFactoryState(); + + if ($this->handler instanceof JCacheStorage) + { + $this->handler->clean($this->group); + } + + parent::tearDown(); + } + + /** + * Check if the adapter is blacklisted in an environment + * + * @param string $name The name of the adapter + * + * @return boolean + */ + protected function isBlacklisted($name) + { + // Memcached & Redis test as supported on the Jenkins server but data processing fails, temporarily block them only in this environment + return in_array($name, array('memcached', 'redis')) && isset($_ENV['BUILD_TAG']) && strpos($_ENV['BUILD_TAG'], 'jenkins-cms-') === 0; + } + + /** + * @testdox Data is correctly stored to and retrieved from the cache storage handler + */ + public function testCacheHit() + { + $data = 'testData'; + + $this->assertTrue($this->handler->store($this->id, $this->group, $data), 'Initial Store Failed'); + $this->assertSame($this->handler->get($this->id, $this->group), $data, 'Failed retrieving data from the cache store'); + } + + /** + * @testdox Non-existing data cannot be retrieved from the cache storage handler + */ + public function testCacheMiss() + { + $this->assertFalse($this->handler->get($this->id, $this->group), 'No data should be returned from the cache store when the key has not been previously set.'); + } + + /** + * @testdox The cache handler correctly handles expired cache data + * + * @medium + */ + public function testCacheTimeout() + { + $data = 'testData'; + + $this->handler->_lifetime = 2; + + $this->assertTrue($this->handler->store($this->id, $this->group, $data), 'Initial Store Failed'); + + sleep(5); + + $this->assertFalse($this->handler->get($this->id, $this->group), 'No data should be returned from the cache store when expired.'); + } + + /** + * @testdox Data is removed from the cache store + */ + public function testCacheRemove() + { + $data = 'testData'; + + $this->assertTrue($this->handler->store($this->id, $this->group, $data), 'Initial Store Failed'); + $this->assertTrue($this->handler->remove($this->id, $this->group), 'Removal Failed'); + $this->assertFalse($this->handler->get($this->id, $this->group), 'No data should be returned from the cache store after being removed.'); + } + + /** + * @testdox Data within a group is removed from the cache store + */ + public function testCacheClearGroup() + { + $data = 'testData'; + + $this->assertTrue($this->handler->store($this->id, $this->group, $data), 'Initial Store Failed'); + $this->assertTrue($this->handler->clean($this->group, 'group'), 'Removal Failed'); + $this->assertFalse($this->handler->get($this->id, $this->group), 'No data should be returned from the cache store after being removed.'); + } + + /** + * @testdox Data not within the specified group is removed from the cache store + */ + public function testCacheClearNotGroup() + { + $data = 'testData'; + $secondId = bin2hex(random_bytes(8)); + $secondGroup = 'group2'; + + $this->assertTrue($this->handler->store($this->id, $this->group, $data), 'Initial Store Failed'); + $this->assertTrue($this->handler->store($secondId, $data, $secondGroup), 'Initial Store Failed'); + $this->assertTrue($this->handler->clean($this->group, 'notgroup'), 'Removal Failed'); + $this->assertSame($this->handler->get($this->id, $this->group), $data, 'Data in the group specified in JCacheStorage::clean() should still exist'); + $this->assertFalse($this->handler->get($secondId, $secondGroup), 'Data in the groups not specified in JCacheStorage::clean() should not exist'); + } + + /** + * @testdox The cache handler is supported in this environment + */ + public function testIsSupported() + { + $this->assertTrue($this->handler->isSupported(), 'Claims the cache handler is not supported.'); + } +} diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageApcTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageApcTest.php index a3ad342dd505f..ece53115fc9ea 100644 --- a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageApcTest.php +++ b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageApcTest.php @@ -9,24 +9,9 @@ /** * Test class for JCacheStorageApc. - * Generated by PHPUnit on 2009-10-08 at 21:44:48. - * - * @package Joomla.UnitTest - * @subpackage Cache - * @since 11.1 */ -class JCacheStorageApcTest extends PHPUnit_Framework_TestCase +class JCacheStorageApcTest extends TestCaseCache { - /** - * @var JCacheStorageApc - */ - protected $object; - - /** - * @var boolean - */ - protected $extensionAvailable; - /** * Sets up the fixture, for example, opens a network connection. * This method is called before a test is executed. @@ -35,31 +20,28 @@ class JCacheStorageApcTest extends PHPUnit_Framework_TestCase */ protected function setUp() { + if (!JCacheStorageApc::isSupported() || $this->isBlacklisted('apc')) + { + $this->markTestSkipped('The APC cache handler is not supported on this system.'); + } + parent::setUp(); - $this->extensionAvailable = JCacheStorageApc::isSupported(); + $this->handler = new JCacheStorageApc; - if ($this->extensionAvailable) - { - $this->object = JCacheStorage::getInstance('apc'); - } - else - { - $this->markTestSkipped('This caching method is not supported on this system.'); - } + // Override the lifetime because the JCacheStorage API multiplies it by 60 (converts minutes to seconds) + $this->handler->_lifetime = 2; } /** - * Testing isSupported(). + * Overrides TestCaseCache::testCacheTimeout to skip the test due to an environment incompatibility * - * @return void + * @testdox The cache handler correctly handles expired cache data + * + * @ticket https://bugs.php.net/bug.php?id=58084 */ - public function testIsSupported() + public function testCacheTimeout() { - $this->assertEquals( - $this->extensionAvailable, - $this->object->isSupported(), - 'Claims APC is not loaded.' - ); + $this->markTestSkipped('The APC cache TTL is not working in a single process/request. See https://bugs.php.net/bug.php?id=58084'); } } diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageApcuTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageApcuTest.php index d656b8cc6cfa4..82cb12a405381 100644 --- a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageApcuTest.php +++ b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageApcuTest.php @@ -10,18 +10,8 @@ /** * Test class for JCacheStorageApcu. */ -class JCacheStorageApcuTest extends PHPUnit_Framework_TestCase +class JCacheStorageApcuTest extends TestCaseCache { - /** - * @var JCacheStorageApcu - */ - protected $object; - - /** - * @var boolean - */ - protected $extensionAvailable; - /** * Sets up the fixture, for example, opens a network connection. * This method is called before a test is executed. @@ -30,31 +20,28 @@ class JCacheStorageApcuTest extends PHPUnit_Framework_TestCase */ protected function setUp() { + if (!JCacheStorageApcu::isSupported() || $this->isBlacklisted('apcu')) + { + $this->markTestSkipped('The APCu cache handler is not supported on this system.'); + } + parent::setUp(); - $this->extensionAvailable = JCacheStorageApcu::isSupported(); + $this->handler = new JCacheStorageApcu; - if ($this->extensionAvailable) - { - $this->object = JCacheStorage::getInstance('apcu'); - } - else - { - $this->markTestSkipped('This caching method is not supported on this system.'); - } + // Override the lifetime because the JCacheStorage API multiplies it by 60 (converts minutes to seconds) + $this->handler->_lifetime = 2; } /** - * Testing isSupported(). + * Overrides TestCaseCache::testCacheTimeout to skip the test due to an environment incompatibility * - * @return void + * @testdox The cache handler correctly handles expired cache data + * + * @ticket https://bugs.php.net/bug.php?id=58084 */ - public function testIsSupported() + public function testCacheTimeout() { - $this->assertEquals( - $this->extensionAvailable, - $this->object->isSupported(), - 'Claims APCu is not loaded.' - ); + $this->markTestSkipped('The APC cache TTL is not working in a single process/request. See https://bugs.php.net/bug.php?id=58084'); } } diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageCacheliteTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageCacheliteTest.php index b80e1f7558c93..529c7b7ff3e1f 100644 --- a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageCacheliteTest.php +++ b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageCacheliteTest.php @@ -1,71 +1,71 @@ isBlacklisted('cachelite')) + { + $this->markTestSkipped('The Cache_Lite cache handler is not supported on this system.'); + } + parent::setUp(); - $this->extensionAvailable = JCacheStorageCachelite::isSupported(); + $this->handler = new JCacheStorageCachelite(array('caching' => true, 'cachebase' => JPATH_TESTS . '/tmp')); - if ($this->extensionAvailable) - { - $options = array( - 'cachebase' => JPATH_TESTS . '/tmp', - 'caching' => true - ); - - $this->object = JCacheStorage::getInstance('cachelite', $options); - } - else - { - $this->markTestSkipped('This caching method is not supported on this system.'); - } + // Override the lifetime because the JCacheStorage API multiplies it by 60 (converts minutes to seconds) + $this->handler->_lifetime = 2; } /** - * Testing isSupported(). + * Tears down the fixture, for example, close a network connection. + * This method is called after a test is executed. * * @return void */ - public function testIsSupported() + protected function tearDown() + { + parent::tearDown(); + + // Reset the Cache_Lite instance. + TestReflection::setValue('JCacheStorageCachelite', 'CacheLiteInstance', null); + } + + /** + * Overrides TestCaseCache::testCacheTimeout to deal with the adapter's stored time values in this test + * + * @testdox The cache handler correctly handles expired cache data + * + * @medium + */ + public function testCacheTimeout() { - $this->assertEquals( - $this->extensionAvailable, - $this->object->isSupported(), - 'Claims Cache_Lite is not loaded.' - ); + /** @var Cache_Lite $cacheLiteInstance */ + $cacheLiteInstance = TestReflection::getValue('JCacheStorageCachelite', 'CacheLiteInstance'); + $cacheLiteInstance->_lifeTime = 2; + + $data = 'testData'; + + $this->assertTrue($this->handler->store($this->id, $this->group, $data), 'Initial Store Failed'); + + sleep(5); + + $this->assertFalse($this->handler->get($this->id, $this->group), 'No data should be returned from the cache store when expired.'); } } diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageFileTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageFileTest.php index 2d36c08a040f5..0e8228d3d28dc 100644 --- a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageFileTest.php +++ b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageFileTest.php @@ -9,198 +9,47 @@ /** * Test class for JCacheStorageFile. - * - * @package Joomla.UnitTest - * @subpackage Cache - * - * @since 11.1 */ -class JCacheStorageFileTest extends PHPUnit_Framework_TestCase +class JCacheStorageFileTest extends TestCaseCache { - /** - * @var JCacheStorageFile - */ - protected $object; - - /** - * @var boolean - */ - protected $extensionAvailable; - /** * Sets up the fixture, for example, opens a network connection. * This method is called before a test is executed. * - * @return void + * @return void */ protected function setUp() { - parent::setUp(); - - $this->extensionAvailable = JCacheStorageFile::isSupported(); - - if ($this->extensionAvailable) - { - $this->object = JCacheStorage::getInstance('file', array('cachebase' => JPATH_BASE . '/cache')); - } - else + if (!JCacheStorageFile::isSupported() || $this->isBlacklisted('file')) { - $this->markTestSkipped('This caching method is not supported on this system.'); + $this->markTestSkipped('The file cache handler is not supported on this system.'); } - } - /** - * Test Cases for get() / store() - * - * @return array - */ - public function casesStore() - { - return array( - 'souls' => array( - 42, - '_testing', - 'And this is the cache that tries men\'s souls', - true, - ), - 'again' => array( - 43, - '_testing', - 'The summer coder and the sunshine developer.', - true, - ), - ); - } + parent::setUp(); - /** - * Testing store() and get() - * - * @param string $id element ID - * @param string $group group - * @param string $data string to be cached - * @param string $checktime True to verify cache time expiration threshold - * - * @return void - * - * @dataProvider casesStore - */ - public function testStoreAndGet($id, $group, $data, $checktime) - { - $this->assertTrue( - $this->object->store($id, $group, $data), - 'Should store the data properly' - ); + $this->handler = new JCacheStorageFile(array('cachebase' => JPATH_CACHE)); - $this->assertEquals( - $data, - $this->object->get($id, $group, $checktime), - 'Should retrieve the data properly' - ); + // Override the lifetime because the JCacheStorage API multiplies it by 60 (converts minutes to seconds) + $this->handler->_lifetime = 2; } /** - * Test... + * Overrides TestCaseCache::testCacheTimeout to deal with the adapter's stored time values in this test * - * @return void - */ - public function testGetAll() - { - $this->markTestIncomplete('This test has not been implemented yet.'); - } - - /** - * Testing remove() - * - * @return void - */ - public function testRemove() - { - $this->object->store(42, '_testing', 'And this is the cache that tries men\'s souls'); - - $this->assertEquals( - 'And this is the cache that tries men\'s souls', - $this->object->get(42, '_testing', true) - ); - - $this->assertTrue( - $this->object->remove(42, '_testing') - ); - - $this->assertFalse( - $this->object->get(42, '_testing', true) - ); - } - - /** - * Test clean() + * @testdox The cache handler correctly handles expired cache data * - * @return void + * @medium */ - public function testClean() + public function testCacheTimeout() { - $this->object->store(42, '_testing', 'And this is the cache that tries men\'s souls'); - $this->object->store(43, '_testing', 'The summer coder and the sunshine developer.'); - $this->object->store(44, '_nottesting', 'Now is the time for all good developers to cry'); - $this->object->store(45, '_testing', 'Do not go gentle into that good night'); - - $this->assertEquals( - 'And this is the cache that tries men\'s souls', - $this->object->get(42, '_testing', true) - ); - - $this->assertTrue( - $this->object->clean('_testing', 'group') - ); + $data = 'testData'; - $this->assertFalse( - $this->object->get(42, '_testing', true) - ); + $this->assertTrue($this->handler->store($this->id, $this->group, $data), 'Initial Store Failed'); - $this->assertFalse( - $this->object->get(43, '_testing', true) - ); + sleep(5); - $this->assertEquals( - 'Now is the time for all good developers to cry', - $this->object->get(44, '_nottesting', true) - ); + $this->handler->_now = time(); - $this->assertFalse( - $this->object->get(45, '_testing', true) - ); - - $this->assertTrue( - (bool) $this->object->clean('_testing', 'notgroup') - ); - - $this->assertFalse( - $this->object->get(44, '_nottesting', true) - ); - } - - /** - * Test gc() - * - * @return void - */ - public function testGc() - { - $this->assertTrue( - (bool) $this->object->gc() - ); - } - - /** - * Testing isSupported(). - * - * @return void - */ - public function testIsSupported() - { - $this->assertEquals( - $this->extensionAvailable, - $this->object->isSupported(), - 'Claims File is not loaded.' - ); + $this->assertFalse($this->handler->get($this->id, $this->group), 'No data should be returned from the cache store when expired.'); } } diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageMainTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageMainTest.php deleted file mode 100644 index 0816f78555c75..0000000000000 --- a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageMainTest.php +++ /dev/null @@ -1,262 +0,0 @@ -saveFactoryState(); - - JFactory::$application = $this->getMockCmsApp(); - JFactory::$session = $this->getMockSession(); - - require_once dirname(__DIR__) . '/controller/JCacheControllerRaw.php'; - } - - /** - * Tears down the fixture, for example, close a network connection. - * This method is called after a test is executed. - * - * @return void - * - * @since 3.4 - */ - protected function tearDown() - { - $this->restoreFactoryState(); - - parent::tearDown(); - } - - /** - * Test provider - * - * @return array - */ - public static function provider() - { - static $ret = array(); - - if (empty($ret)) - { - $names = JCache::getStores(); - - foreach ($names as $name) - { - // Memcached tests as supported on the Jenkins server but data processing fails, temporarily block it only in this environment - if (in_array($name, array('memcached', 'redis')) && isset($_ENV['BUILD_TAG']) && strpos($_ENV['BUILD_TAG'], 'jenkins-cms-') === 0) - { - continue; - } - - $ret["$name adapter"] = array($name); - } - } - - return $ret; - } - - /** - * Test... - * - * @param string $store The store. - * - * @return void - * - * @dataProvider provider - */ - public function testCacheHit($store) - { - $id = 'randomTestID'; - $group = '_testing'; - $data = 'testData'; - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $this->assertTrue($cache->store($data, $id, $group), 'Initial Store Failed'); - unset($cache); - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $new = $cache->get($id, $group); - $this->assertSame($new, $data, 'Expected: ' . $data . ' Actual: ' . $new); - unset($cache); - } - - /** - * Test... - * - * @param string $store The store. - * - * @return void - * - * @dataProvider provider - */ - public function testCacheMiss($store) - { - $id = 'randomTestID2423423'; - $group = '_testing'; - $data = 'testData'; - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $new = $cache->get($id, $group); - $this->assertFalse($new, 'Expected: false Actual: ' . $new); - unset($cache); - } - - /** - * Test... - * - * @medium - * - * @dataProvider provider - * - * @param string $store The store. - * - * @return void - */ - public function testCacheTimeout($store) - { - $id = 'randomTestID'; - $group = '_testing'; - $data = 'testData'; - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $cache->setLifeTime(2); - $this->assertTrue($cache->store($data, $id, $group), 'Initial Store Failed'); - unset($cache); - - sleep(5); - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setLifeTime(2); - $new = $cache->get($id, $group); - $this->assertFalse($new, 'Expected: false Actual: ' . ((string) $new)); - unset($cache); - } - - /** - * Test... - * - * @param string $store The store. - * - * @return void - * - * @dataProvider provider - */ - public function testCacheRemove($store) - { - $id = 'randomTestID'; - $group = '_testing'; - $data = 'testData'; - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $this->assertTrue($cache->store($data, $id, $group), 'Initial Store Failed'); - unset($cache); - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $test = $cache->remove($id, $group); - $this->assertTrue($test, 'Removal Failed'); - unset($cache); - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $new = $cache->get($id, $group); - $this->assertFalse($new, 'Expected: false Actual: ' . ((string) $new)); - unset($cache); - } - - /** - * Test... - * - * @param string $store The store. - * - * @return void - * - * @dataProvider provider - */ - public function testCacheClearGroup($store) - { - $id = 'randomTestID'; - $group = '_testing'; - $data = 'testData'; - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $this->assertTrue($cache->store($data, $id, $group), 'Initial Store Failed'); - unset($cache); - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $this->assertTrue($cache->clean($group), 'Clean Failed'); - unset($cache); - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $new = $cache->get($id, $group); - $this->assertFalse($new, 'Expected: false Actual: ' . ((string) $new)); - unset($cache); - } - - /** - * Test... - * - * @param string $store The store. - * - * @return void - * - * @dataProvider provider - */ - public function testCacheClearNotGroup($store) - { - $id = 'randomTestID'; - $group = '_testing'; - $data = 'testData'; - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $this->assertTrue($cache->store($data, $id, $group), 'Initial Store Failed'); - unset($cache); - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $this->assertTrue((bool) $cache->clean($group, 'notgroup'), 'Clean Failed'); - unset($cache); - - $cache = JCache::getInstance('', array('storage' => $store)); - $cache->setCaching(true); - $new = $cache->get($id, $group); - $this->assertSame($new, $data, 'Expected: ' . $data . ' Actual: ' . ((string) $new)); - unset($cache); - } -} diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageMemcacheTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageMemcacheTest.php index 53792ebba5953..808874895976f 100644 --- a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageMemcacheTest.php +++ b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageMemcacheTest.php @@ -9,23 +9,9 @@ /** * Test class for JCacheStorageMemcache. - * - * @package Joomla.UnitTest - * @subpackage Cache - * @since 11.1 */ -class JCacheStorageMemcacheTest extends PHPUnit_Framework_TestCase +class JCacheStorageMemcacheTest extends TestCaseCache { - /** - * @var JCacheStorageMemcache - */ - protected $object; - - /** - * @var boolean - */ - protected $extensionAvailable; - /** * Sets up the fixture, for example, opens a network connection. * This method is called before a test is executed. @@ -34,42 +20,16 @@ class JCacheStorageMemcacheTest extends PHPUnit_Framework_TestCase */ protected function setUp() { - $this->extensionAvailable = JCacheStorageMemcache::isSupported(); - - if ($this->extensionAvailable) + if (!JCacheStorageMemcache::isSupported() || $this->isBlacklisted('memcache')) { - $this->object = JCacheStorage::getInstance('memcache'); + $this->markTestSkipped('The Memcache cache handler is not supported on this system.'); } - else - { - $this->markTestSkipped('This caching method is not supported on this system.'); - } - } - /** - * Testing gc(). - * - * @return void - */ - public function testGc() - { - $this->assertTrue( - $this->object->gc(), - 'Should return default true' - ); - } + parent::setUp(); - /** - * Testing isSupported(). - * - * @return void - */ - public function testIsSupported() - { - $this->assertEquals( - $this->extensionAvailable, - $this->object->isSupported(), - 'Claims Memcache is not loaded.' - ); + $this->handler = new JCacheStorageMemcache; + + // Override the lifetime because the JCacheStorage API multiplies it by 60 (converts minutes to seconds) + $this->handler->_lifetime = 2; } } diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageMemcachedTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageMemcachedTest.php index b5593b394e399..046bebcb65374 100644 --- a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageMemcachedTest.php +++ b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageMemcachedTest.php @@ -9,23 +9,9 @@ /** * Test class for JCacheStorageMemcached. - * - * @package Joomla.UnitTest - * @subpackage Cache - * @since 11.1 */ -class JCacheStorageMemcachedTest extends TestCase +class JCacheStorageMemcachedTest extends TestCaseCache { - /** - * @var JCacheStorageMemcached - */ - protected $object; - - /** - * @var boolean - */ - protected $extensionAvailable; - /** * Sets up the fixture, for example, opens a network connection. * This method is called before a test is executed. @@ -34,56 +20,16 @@ class JCacheStorageMemcachedTest extends TestCase */ protected function setUp() { - $this->extensionAvailable = JCacheStorageMemcached::isSupported(); - - $this->saveFactoryState(); - - if ($this->extensionAvailable) - { - JFactory::$session = $this->getMockSession(); - $this->object = JCacheStorage::getInstance('memcached'); - } - else + if (!JCacheStorageMemcached::isSupported() || $this->isBlacklisted('memcached')) { - $this->markTestSkipped('This caching method is not supported on this system.'); + $this->markTestSkipped('The Memcached cache handler is not supported on this system.'); } - } - /** - * Tears down the fixture, for example, closes a network connection. - * This method is called after a test is executed. - * - * @return void - */ - protected function tearDown() - { - $this->restoreFactoryState(); - } + parent::setUp(); - /** - * Testing gc(). - * - * @return void - */ - public function testGc() - { - $this->assertTrue( - $this->object->gc(), - 'Should return default true' - ); - } + $this->handler = new JCacheStorageMemcached; - /** - * Testing isSupported(). - * - * @return void - */ - public function testIsSupported() - { - $this->assertEquals( - $this->extensionAvailable, - $this->object->isSupported(), - 'Claims Memcache is not loaded.' - ); + // Override the lifetime because the JCacheStorage API multiplies it by 60 (converts minutes to seconds) + $this->handler->_lifetime = 2; } } diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageRedisTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageRedisTest.php index 720ac9ef3e32d..eb554d64e4ccb 100644 --- a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageRedisTest.php +++ b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageRedisTest.php @@ -9,75 +9,27 @@ /** * Test class for JCacheStorageRedis. - * - * @package Joomla.UnitTest - * @subpackage Cache - * @since 3.4 */ -class JCacheStorageRedisTest extends TestCase +class JCacheStorageRedisTest extends TestCaseCache { - /** - * @var JCacheStorageRedis - */ - protected $object; - - /** - * @var boolean - */ - protected $extensionAvailable; - /** * Sets up the fixture, for example, opens a network connection. * This method is called before a test is executed. * * @return void - * - * @since 3.4 */ protected function setUp() { - parent::setUp(); - - $this->saveFactoryState(); - - JFactory::$application = $this->getMockCmsApp(); - - $this->extensionAvailable = JCacheStorageRedis::isSupported(); - - if ($this->extensionAvailable) - { - $this->object = JCacheStorage::getInstance('redis'); - } - else + if (!JCacheStorageRedis::isSupported() || $this->isBlacklisted('redis')) { - $this->markTestSkipped('This caching method is not supported on this system.'); + $this->markTestSkipped('The Redis cache handler is not supported on this system.'); } - } - /** - * Tears down the fixture, for example, close a network connection. - * This method is called after a test is executed. - * - * @return void - * - * @since 3.4 - */ - protected function tearDown() - { - $this->restoreFactoryState(); - } + parent::setUp(); - /** - * Testing isSupported(). - * - * @return void - */ - public function testIsSupported() - { - $this->assertEquals( - $this->extensionAvailable, - $this->object->isSupported(), - 'Claims APC is not loaded.' - ); + $this->handler = new JCacheStorageRedis; + + // Override the lifetime because the JCacheStorage API multiplies it by 60 (converts minutes to seconds) + $this->handler->_lifetime = 2; } } diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageWincacheTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageWincacheTest.php index 090a2f58a974c..d126b3362d72e 100644 --- a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageWincacheTest.php +++ b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageWincacheTest.php @@ -1,31 +1,17 @@ extensionAvailable = JCacheStorageWincache::isSupported(); - - if ($this->extensionAvailable) + if (!JCacheStorageWincache::isSupported() || $this->isBlacklisted('wincache')) { - $this->object = JCacheStorage::getInstance('wincache'); + $this->markTestSkipped('The WinCache cache handler is not supported on this system.'); } - else - { - $this->markTestSkipped('This caching method is not supported on this system.'); - } - } - /** - * Testing isSupported(). - * - * @return void - */ - public function testIsSupported() - { - $this->assertEquals( - $this->extensionAvailable, - $this->object->isSupported(), - 'Claims Wincache is not loaded.' - ); - } + parent::setUp(); - /** - * Testing lock(). - * - * @return void - */ - public function testLock() - { - $this->assertFalse( - $this->object->lock(), - 'Should return default false' - ); - } + $this->handler = new JCacheStorageWincache; - /** - * Testing unlock(). - * - * @return void - */ - public function testUnlock() - { - $this->assertFalse( - $this->object->unlock(), - 'Should return default false' - ); + // Override the lifetime because the JCacheStorage API multiplies it by 60 (converts minutes to seconds) + $this->handler->_lifetime = 2; } } diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXCacheTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXCacheTest.php deleted file mode 100644 index 4df693b70b9c1..0000000000000 --- a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXCacheTest.php +++ /dev/null @@ -1,103 +0,0 @@ -extensionAvailable = JCacheStorageXcache::isSupported(); - - if ($this->extensionAvailable) - { - $this->object = JCacheStorage::getInstance('xcache'); - } - else - { - $this->markTestSkipped('This caching method is not supported on this system.'); - } - } - - /** - * Testing gc(). - * - * @return void - */ - public function testGc() - { - $this->assertTrue( - $this->object->gc(), - 'Should return default true' - ); - } - - /** - * Testing isSupported(). - * - * @return void - */ - public function testIsSupported() - { - $this->assertEquals( - $this->extensionAvailable, - $this->object->isSupported(), - 'Claims Wincache is not loaded.' - ); - } - - /** - * Testing lock(). - * - * @return void - */ - public function testLock() - { - $this->assertFalse( - $this->object->lock(), - 'Should return default false' - ); - } - - /** - * Testing unlock(). - * - * @return void - */ - public function testUnlock() - { - $this->assertFalse( - $this->object->unlock(), - 'Should return default false' - ); - } -} diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXcacheTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXcacheTest.php new file mode 100644 index 0000000000000..f8bdbdf52e966 --- /dev/null +++ b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXcacheTest.php @@ -0,0 +1,35 @@ +isBlacklisted('xcache')) + { + $this->markTestSkipped('The XCache cache handler is not supported on this system.'); + } + + parent::setUp(); + + $this->handler = new JCacheStorageXcache; + + // Override the lifetime because the JCacheStorage API multiplies it by 60 (converts minutes to seconds) + $this->handler->_lifetime = 2; + } +} diff --git a/tests/unit/tmp/.gitignore b/tests/unit/tmp/.gitignore index 2f05f0e7bc237..d6b7ef32c8478 100644 --- a/tests/unit/tmp/.gitignore +++ b/tests/unit/tmp/.gitignore @@ -1,5 +1,2 @@ -/cache/*.php -/cache/_testing -/media -/themes -/error.* +* +!.gitignore From 9228a8674c558e12d6af931e2b8785effa1bbbb8 Mon Sep 17 00:00:00 2001 From: Michael Babker Date: Sun, 27 Mar 2016 14:07:20 -0400 Subject: [PATCH 209/352] Add fix for #8707 --- libraries/joomla/cache/cache.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/libraries/joomla/cache/cache.php b/libraries/joomla/cache/cache.php index b2f63b6cbf70c..73c1fc32786f3 100644 --- a/libraries/joomla/cache/cache.php +++ b/libraries/joomla/cache/cache.php @@ -239,8 +239,6 @@ public function store($data, $id, $group = null) if (!($handler instanceof Exception) && $this->_options['caching']) { - $handler->_lifetime = $this->_options['lifetime']; - return $handler->store($id, $group, $data); } From 16a8f9146e3c365a6987c793b694c47d015907ac Mon Sep 17 00:00:00 2001 From: Roland Dalmulder Date: Sun, 27 Mar 2016 22:00:44 +0200 Subject: [PATCH 210/352] Updated description --- administrator/components/com_config/model/application.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_config/model/application.php b/administrator/components/com_config/model/application.php index 42c937c980fed..ba9d509739d88 100644 --- a/administrator/components/com_config/model/application.php +++ b/administrator/components/com_config/model/application.php @@ -118,7 +118,7 @@ public function save($data) return false; } - // Check if we need to verify the SSL certificate + // Check if we can set the Force SSL option if ((int) $data['force_ssl'] !== 0 && (int) $data['force_ssl'] !== (int) JFactory::getConfig()->get('force_ssl', '0')) { try From 36b18498ea54d99f96b0cbf653d88e10a4f139fa Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sun, 27 Mar 2016 22:16:17 +0200 Subject: [PATCH 211/352] Fixed count thanks @andrepereiradasilva --- .../com_joomlaupdate/views/default/tmpl/default_upload.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php b/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php index fbe06c4a54370..e4ab4a09e6919 100644 --- a/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php +++ b/administrator/components/com_joomlaupdate/views/default/tmpl/default_upload.php @@ -66,7 +66,7 @@

    -warnings != 0)) : ?> +warnings)) : ?>
    From ea5f2496f72dccb5ccd24d951ac487362dbe2ca1 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Sun, 27 Mar 2016 23:06:54 +0200 Subject: [PATCH 212/352] add language file to the package in build.xml --- build.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.xml b/build.xml index 67d058303ab73..0fbf1c0272936 100644 --- a/build.xml +++ b/build.xml @@ -153,6 +153,10 @@ + + + + From e246dddf7f894fdd03ad4417b117127c9014f8be Mon Sep 17 00:00:00 2001 From: Tuan Pham Ngoc Date: Tue, 29 Mar 2016 18:38:34 +0700 Subject: [PATCH 213/352] Update permissions.js Allow using underscore character in permission name --- media/system/js/permissions.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/media/system/js/permissions.js b/media/system/js/permissions.js index 1fbfd28d062b2..b954f79887d4c 100644 --- a/media/system/js/permissions.js +++ b/media/system/js/permissions.js @@ -8,7 +8,6 @@ function sendPermissions(event) { icon.setAttribute('style', 'background: url(../media/system/images/modal/spinner.gif); display: inline-block; width: 16px; height: 16px'); //get values and prepare GET-Parameter - var id = this.id.split('_'); var asset = 'not'; var component = getUrlParam('component'); var extension = getUrlParam('extension'); @@ -33,7 +32,11 @@ function sendPermissions(event) { title = document.getElementById('jform_title').value; } - var data = '&comp=' + asset + '&action=' + id[2] + '&rule=' + id[3] + '&value=' + value + '&title=' + title; + var id = this.id.replace('jform_rules_', ''); + var lastUnderscoreIndex = id.lastIndexOf('_'); + var action = id.substring(0, lastUnderscoreIndex); + var rule = id.substring(lastUnderscoreIndex + 1); + var data = '&comp=' + asset + '&action=' + action + '&rule=' + rule + '&value=' + value + '&title=' + title; var url = 'index.php?option=com_config&task=config.store&format=raw' + data; // doing ajax request From 8eb95776354e01435219b6b3b155b6eb63a91829 Mon Sep 17 00:00:00 2001 From: Tuan Pham Ngoc Date: Tue, 29 Mar 2016 18:42:12 +0700 Subject: [PATCH 214/352] Update permissions.min.js Minimize the modified javascript file --- media/system/js/permissions.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/media/system/js/permissions.min.js b/media/system/js/permissions.min.js index db176c031f10c..450947a89ab8b 100644 --- a/media/system/js/permissions.min.js +++ b/media/system/js/permissions.min.js @@ -1 +1 @@ -function sendPermissions(e){var t=document.getElementById("icon_"+this.id);t.removeAttribute("class"),t.setAttribute("style","background: url(../media/system/images/modal/spinner.gif); display: inline-block; width: 16px; height: 16px");var a=this.id.split("_"),r="not",l=getUrlParam("component"),s=getUrlParam("extension"),o=getUrlParam("option"),i=getUrlParam("view"),n=l,m=this.value;"com_config"==o&&0==l&&0==s?r="root.1":0==s&&"component"==i?r=l:0!=s&&0!=i?(r=s+"."+i+"."+getUrlParam("id"),n=document.getElementById("jform_title").value):0==s&&0!=i&&(r=o+"."+i+"."+getUrlParam("id"),n=document.getElementById("jform_title").value);var c="&comp="+r+"&action="+a[2]+"&rule="+a[3]+"&value="+m+"&title="+n,u="index.php?option=com_config&task=config.store&format=raw"+c;jQuery.ajax({type:"GET",url:u,datatype:"JSON"}).success(function(a){var r=e.target,l=JSON.parse(a);if("true"==l.data)t.removeAttribute("style"),t.setAttribute("class","icon-save"),"1"==m?jQuery(r).parents().next("td").find("span").removeClass("label label-important").addClass("label label-success").html("Allowed"):jQuery(r).parents().next("td").find("span").removeClass("label label-success").addClass("label label-important").html("Not Allowed.");else{var s={error:[Joomla.JText._("JLIB_RULES_DATABASE_FAILURE ")]};Joomla.renderMessages(s),t.removeAttribute("style"),t.setAttribute("class","icon-cancel")}if(0==l.message){var s={error:[Joomla.JText._("JLIB_RULES_SAVE_BEFORE_CHANGE_PERMISSIONS")]};Joomla.renderMessages(s),t.removeAttribute("style"),t.setAttribute("class","icon-cancel")}}).fail(function(){var e={error:[Joomla.JText._("JLIB_RULES_REQUEST_FAILURE")]};Joomla.renderMessages(e),t.removeAttribute("style"),t.setAttribute("class","icon-cancel")})}function getUrlParam(e){for(var t=window.location.search.substring(1),a=t.split("&"),r=0;r Date: Wed, 30 Mar 2016 03:53:53 +0300 Subject: [PATCH 215/352] mootools modal needs the field id --- layouts/joomla/form/field/user.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/joomla/form/field/user.php b/layouts/joomla/form/field/user.php index 0905e6651b2de..01b4d399d6f30 100644 --- a/layouts/joomla/form/field/user.php +++ b/layouts/joomla/form/field/user.php @@ -47,7 +47,7 @@ */ $link = 'index.php?option=com_users&view=users&layout=modal&tmpl=component&required=' - . ($required ? 1 : 0) . '&field={field-user-id}' + . ($required ? 1 : 0) . '&field=' . htmlspecialchars($id, ENT_COMPAT, 'UTF-8') . (isset($groups) ? ('&groups=' . base64_encode(json_encode($groups))) : '') . (isset($excluded) ? ('&excluded=' . base64_encode(json_encode($excluded))) : ''); From 7a5f52ee7c55333559d3d89cef38dff6f9540501 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 30 Mar 2016 11:39:50 +0200 Subject: [PATCH 216/352] Update behavior.php I corrected & to & amp; in row 657, otherwise you do not get the accessibility validation - // W3C // DTD XHTML 1.0 // EN + AIR --- libraries/cms/html/behavior.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/cms/html/behavior.php b/libraries/cms/html/behavior.php index b710be04b9bdf..e2b0dca336f42 100644 --- a/libraries/cms/html/behavior.php +++ b/libraries/cms/html/behavior.php @@ -654,7 +654,7 @@ public static function keepalive() // If we are in the frontend or logged in as a user, we can use the ajax component to reduce the load if (JFactory::getApplication()->isSite() || !JFactory::getUser()->guest) { - $url = JUri::base(true) . '/index.php?option=com_ajax&format=json'; + $url = JUri::base(true) . '/index.php?option=com_ajax&format=json'; } else { From ecc682e98e39b54fced921429177df85483c8010 Mon Sep 17 00:00:00 2001 From: Jean-Marie Simonet Date: Wed, 30 Mar 2016 16:02:15 +0200 Subject: [PATCH 217/352] Use advancedSelect for mod_languages and finder --- components/com_finder/helpers/html/filter.php | 6 +++--- components/com_finder/views/search/tmpl/default.php | 2 +- modules/mod_finder/tmpl/default.php | 2 +- modules/mod_languages/tmpl/default.php | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/com_finder/helpers/html/filter.php b/components/com_finder/helpers/html/filter.php index 8584475b0acd0..01fb03f77423c 100644 --- a/components/com_finder/helpers/html/filter.php +++ b/components/com_finder/helpers/html/filter.php @@ -383,7 +383,7 @@ public static function select($idxQuery, $options) $html .= ''; $html .= '
    '; $html .= JHtml::_( - 'select.genericlist', $branches[$bk]->nodes, 't[]', 'class="inputbox"', 'id', 'title', $active, + 'select.genericlist', $branches[$bk]->nodes, 't[]', 'class="inputbox advancedSelect"', 'id', 'title', $active, 'tax-' . JFilterOutput::stringUrlSafe($bv->title) ); $html .= ''; @@ -438,7 +438,7 @@ public static function dates($idxQuery, $options) $html .= ''; $html .= '
    '; $html .= JHtml::_( - 'select.genericlist', $operators, 'w1', 'class="inputbox filter-date-operator"', 'value', 'text', $idxQuery->when1, 'finder-filter-w1' + 'select.genericlist', $operators, 'w1', 'class="inputbox filter-date-operator advancedSelect"', 'value', 'text', $idxQuery->when1, 'finder-filter-w1' ); $html .= JHtml::calendar($idxQuery->date1, 'd1', 'filter_date1', '%Y-%m-%d', $attribs); $html .= ''; @@ -450,7 +450,7 @@ public static function dates($idxQuery, $options) $html .= ''; $html .= '
    '; $html .= JHtml::_( - 'select.genericlist', $operators, 'w2', 'class="inputbox filter-date-operator"', 'value', 'text', $idxQuery->when2, 'finder-filter-w2' + 'select.genericlist', $operators, 'w2', 'class="inputbox filter-date-operator advancedSelect"', 'value', 'text', $idxQuery->when2, 'finder-filter-w2' ); $html .= JHtml::calendar($idxQuery->date2, 'd2', 'filter_date2', '%Y-%m-%d', $attribs); $html .= ''; diff --git a/components/com_finder/views/search/tmpl/default.php b/components/com_finder/views/search/tmpl/default.php index 9ae57d3682f57..592636ee80d4d 100644 --- a/components/com_finder/views/search/tmpl/default.php +++ b/components/com_finder/views/search/tmpl/default.php @@ -10,7 +10,7 @@ defined('_JEXEC') or die; JHtml::_('behavior.core'); -JHtml::_('formbehavior.chosen', 'select'); +JHtml::_('formbehavior.chosen'); JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::stylesheet('com_finder/finder.css', false, true, false); ?> diff --git a/modules/mod_finder/tmpl/default.php b/modules/mod_finder/tmpl/default.php index e6cc2b007f99c..75d8760226d26 100644 --- a/modules/mod_finder/tmpl/default.php +++ b/modules/mod_finder/tmpl/default.php @@ -12,7 +12,7 @@ JHtml::addIncludePath(JPATH_SITE . '/components/com_finder/helpers/html'); JHtml::_('jquery.framework'); -JHtml::_('formbehavior.chosen', 'select'); +JHtml::_('formbehavior.chosen'); JHtml::_('bootstrap.tooltip'); // Load the smart search component language file. diff --git a/modules/mod_languages/tmpl/default.php b/modules/mod_languages/tmpl/default.php index 83e5f2a2f6f40..414d18e3473cc 100644 --- a/modules/mod_languages/tmpl/default.php +++ b/modules/mod_languages/tmpl/default.php @@ -12,7 +12,7 @@ JHtml::_('stylesheet', 'mod_languages/template.css', array(), true); if ($params->get('dropdown', 1)) { - JHtml::_('formbehavior.chosen', 'select'); + JHtml::_('formbehavior.chosen'); } ?>
    @@ -22,7 +22,7 @@ get('dropdown', 1)) : ?> - From 57d3e4e7c1c1c135ddca89fe997c9253b3c9efc1 Mon Sep 17 00:00:00 2001 From: zero-24 Date: Wed, 30 Mar 2016 16:16:15 +0200 Subject: [PATCH 218/352] clean up application.xml --- .../com_config/model/form/application.xml | 51 ++++++++----------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/administrator/components/com_config/model/form/application.xml b/administrator/components/com_config/model/form/application.xml index 9ccd31971e44e..7ee947e7490a3 100644 --- a/administrator/components/com_config/model/form/application.xml +++ b/administrator/components/com_config/model/form/application.xml @@ -245,7 +245,6 @@ description="COM_CONFIG_FIELD_DATABASE_PREFIX_DESC" filter="string" size="10" /> -
    - - + name="mailonline" + type="radio" + class="btn-group btn-group-yesno" + default="1" + label="COM_CONFIG_FIELD_MAIL_MAILONLINE_LABEL" + description="COM_CONFIG_FIELD_MAIL_MAILONLINE_DESC" + filter="integer"> + + - - + name="massmailoff" + type="radio" + class="btn-group btn-group-yesno" + default="0" + label="COM_CONFIG_FIELD_MAIL_MASSMAILOFF_LABEL" + description="COM_CONFIG_FIELD_MAIL_MASSMAILOFF_DESC" + filter="integer"> + + + default=""> @@ -849,7 +843,6 @@ label="COM_CONFIG_FRONTEDITING_LABEL" description="COM_CONFIG_FRONTEDITING_DESC" filter="integer"> - @@ -949,8 +942,7 @@ type="helpsite" label="COM_CONFIG_FIELD_HELP_SERVER_LABEL" description="COM_CONFIG_FIELD_HELP_SERVER_DESC" - showDefault="false" - /> + showDefault="false" />
    + description="COM_CONFIG_TEXT_FILTERS_DESC"> Date: Wed, 30 Mar 2016 16:45:03 +0200 Subject: [PATCH 219/352] Clickable Intro Image of Featured Articles --- .../com_content/views/featured/tmpl/default_item.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/components/com_content/views/featured/tmpl/default_item.php b/components/com_content/views/featured/tmpl/default_item.php index 00cfb99c9e898..91021cf48deae 100644 --- a/components/com_content/views/featured/tmpl/default_item.php +++ b/components/com_content/views/featured/tmpl/default_item.php @@ -57,12 +57,7 @@ image_intro) && !empty($images->image_intro)) : ?> - float_intro)) ? $params->get('float_intro') : $images->float_intro; ?> -
    image_intro_caption): - echo 'class="caption"' . ' title="' . htmlspecialchars($images->image_intro_caption) . '"'; - endif; ?> - src="image_intro); ?>" alt="image_intro_alt); ?>"/>
    + item); ?> get('show_intro')) : ?> From 12edab7e21e8dd9758cdd0c23d2aa6dfcd7fd002 Mon Sep 17 00:00:00 2001 From: Jean-Marie Simonet Date: Wed, 30 Mar 2016 16:51:27 +0200 Subject: [PATCH 220/352] cs --- components/com_finder/helpers/html/filter.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/components/com_finder/helpers/html/filter.php b/components/com_finder/helpers/html/filter.php index 01fb03f77423c..bd74202362c77 100644 --- a/components/com_finder/helpers/html/filter.php +++ b/components/com_finder/helpers/html/filter.php @@ -383,7 +383,8 @@ public static function select($idxQuery, $options) $html .= ''; $html .= '
    '; $html .= JHtml::_( - 'select.genericlist', $branches[$bk]->nodes, 't[]', 'class="inputbox advancedSelect"', 'id', 'title', $active, + 'select.genericlist', + $branches[$bk]->nodes, 't[]', 'class="inputbox advancedSelect"', 'id', 'title', $active, 'tax-' . JFilterOutput::stringUrlSafe($bv->title) ); $html .= ''; @@ -438,7 +439,8 @@ public static function dates($idxQuery, $options) $html .= ''; $html .= '
    '; $html .= JHtml::_( - 'select.genericlist', $operators, 'w1', 'class="inputbox filter-date-operator advancedSelect"', 'value', 'text', $idxQuery->when1, 'finder-filter-w1' + 'select.genericlist', + $operators, 'w1', 'class="inputbox filter-date-operator advancedSelect"', 'value', 'text', $idxQuery->when1, 'finder-filter-w1' ); $html .= JHtml::calendar($idxQuery->date1, 'd1', 'filter_date1', '%Y-%m-%d', $attribs); $html .= ''; @@ -450,7 +452,8 @@ public static function dates($idxQuery, $options) $html .= ''; $html .= '
    '; $html .= JHtml::_( - 'select.genericlist', $operators, 'w2', 'class="inputbox filter-date-operator advancedSelect"', 'value', 'text', $idxQuery->when2, 'finder-filter-w2' + 'select.genericlist', + $operators, 'w2', 'class="inputbox filter-date-operator advancedSelect"', 'value', 'text', $idxQuery->when2, 'finder-filter-w2' ); $html .= JHtml::calendar($idxQuery->date2, 'd2', 'filter_date2', '%Y-%m-%d', $attribs); $html .= ''; From 8a8b53544cfba8bc062599620f346c879b07458a Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Thu, 31 Mar 2016 12:37:33 +0100 Subject: [PATCH 221/352] use correct mimetype for json --- .../com_config/controller/application/sendtestmail.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/administrator/components/com_config/controller/application/sendtestmail.php b/administrator/components/com_config/controller/application/sendtestmail.php index 3190f95897e70..a925a9d0884df 100644 --- a/administrator/components/com_config/controller/application/sendtestmail.php +++ b/administrator/components/com_config/controller/application/sendtestmail.php @@ -36,6 +36,9 @@ public function execute() $this->app->redirect('index.php'); } + header('Content-Disposition: inline; filename="sendmailtest.json"'); + header('Content-Type: application/json; charset=utf-8'); + $model = new ConfigModelApplication; echo new JResponseJson($model->sendTestMail()); JFactory::getApplication()->close(); From dff1296467f63e8c34dfe68f53fa5bd4d8d5b5f6 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Thu, 31 Mar 2016 15:19:49 +0100 Subject: [PATCH 222/352] follow recomendations. thanks @mbabker --- .../com_config/controller/application/sendtestmail.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/administrator/components/com_config/controller/application/sendtestmail.php b/administrator/components/com_config/controller/application/sendtestmail.php index a925a9d0884df..fd70e3ca4b859 100644 --- a/administrator/components/com_config/controller/application/sendtestmail.php +++ b/administrator/components/com_config/controller/application/sendtestmail.php @@ -36,11 +36,12 @@ public function execute() $this->app->redirect('index.php'); } - header('Content-Disposition: inline; filename="sendmailtest.json"'); - header('Content-Type: application/json; charset=utf-8'); + $this->app->mimeType = 'application/json'; + $this->app->setHeader('Content-Type', $this->app->mimeType . '; charset=' . $this->app->charSet); + $this->app->sendHeaders(); $model = new ConfigModelApplication; echo new JResponseJson($model->sendTestMail()); - JFactory::getApplication()->close(); + $this->app->close(); } } From 814ed4c654a104395ec18acf0ef26c9ab2c5bf5f Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Thu, 31 Mar 2016 15:36:48 +0100 Subject: [PATCH 223/352] handle json data in js --- media/system/js/sendtestmail-uncompressed.js | 28 ++++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/media/system/js/sendtestmail-uncompressed.js b/media/system/js/sendtestmail-uncompressed.js index bbe5ae3ff1b3f..8a149e8179c40 100644 --- a/media/system/js/sendtestmail-uncompressed.js +++ b/media/system/js/sendtestmail-uncompressed.js @@ -25,43 +25,43 @@ jQuery(document).ready(function ($) }; $.ajax({ + method: "POST", url: sendtestmail_url, - data: email_data + data: email_data, + dataType: "json" }) - .done(function (response) { - var data_response = $.parseJSON(response); var msg = {}; - if (data_response.data) + if (response.data) { - if (typeof data_response.messages == 'object') + if (typeof response.messages == 'object') { - if (typeof data_response.messages.success != 'undefined' && data_response.messages.success.length > 0) + if (typeof response.messages.success != 'undefined' && response.messages.success.length > 0) { - msg.success = [data_response.messages.success]; + msg.success = [response.messages.success]; } } } else { - if (typeof data_response.messages == 'object') + if (typeof response.messages == 'object') { - if (typeof data_response.messages.error != 'undefined' && data_response.messages.error.length > 0) + if (typeof response.messages.error != 'undefined' && response.messages.error.length > 0) { - msg.error = [data_response.messages.error]; + msg.error = [response.messages.error]; } - if (typeof data_response.messages.notice != 'undefined' && data_response.messages.notice.length > 0) + if (typeof response.messages.notice != 'undefined' && response.messages.notice.length > 0) { - msg.notice = [data_response.messages.notice]; + msg.notice = [response.messages.notice]; } - if (typeof data_response.messages.message != 'undefined' && data_response.messages.message.length > 0) + if (typeof response.messages.message != 'undefined' && response.messages.message.length > 0) { - msg.message = [data_response.messages.message]; + msg.message = [response.messages.message]; } } } From 962998dc3dfbade991c0300ee89969a32f139e88 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Thu, 31 Mar 2016 15:37:23 +0100 Subject: [PATCH 224/352] handle json data in js (mimified) --- media/system/js/sendtestmail.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/media/system/js/sendtestmail.js b/media/system/js/sendtestmail.js index fae9cd4daa2a6..b0373d018de2d 100644 --- a/media/system/js/sendtestmail.js +++ b/media/system/js/sendtestmail.js @@ -1,6 +1 @@ -/** - * @package Joomla.JavaScript - * @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved. - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ -jQuery(document).ready(function(e){e("#sendtestmail").click(function(){var s={smtpauth:e('input[name="jform[smtpauth]"]').val(),smtpuser:e('input[name="jform[smtpuser]"]').val(),smtppass:e('input[name="jform[smtppass]"]').val(),smtphost:e('input[name="jform[smtphost]"]').val(),smtpsecure:e('select[name="jform[smtpsecure]"]').val(),smtpport:e('input[name="jform[smtpport]"]').val(),mailfrom:e('input[name="jform[mailfrom]"]').val(),fromname:e('input[name="jform[fromname]"]').val(),mailer:e('select[name="jform[mailer]"]').val(),mailonline:e('input[name="jform[mailonline]"]:checked').val()};e.ajax({url:sendtestmail_url,data:s}).done(function(s){var m=e.parseJSON(s),a={};m.data?"object"==typeof m.messages&&"undefined"!=typeof m.messages.success&&m.messages.success.length>0&&(a.success=[m.messages.success]):"object"==typeof m.messages&&("undefined"!=typeof m.messages.error&&m.messages.error.length>0&&(a.error=[m.messages.error]),"undefined"!=typeof m.messages.notice&&m.messages.notice.length>0&&(a.notice=[m.messages.notice]),"undefined"!=typeof m.messages.message&&m.messages.message.length>0&&(a.message=[m.messages.message])),Joomla.renderMessages(a)}),window.scrollTo(0,0)})}); +jQuery(document).ready(function(e){e("#sendtestmail").click(function(){var s={smtpauth:e('input[name="jform[smtpauth]"]').val(),smtpuser:e('input[name="jform[smtpuser]"]').val(),smtppass:e('input[name="jform[smtppass]"]').val(),smtphost:e('input[name="jform[smtphost]"]').val(),smtpsecure:e('select[name="jform[smtpsecure]"]').val(),smtpport:e('input[name="jform[smtpport]"]').val(),mailfrom:e('input[name="jform[mailfrom]"]').val(),fromname:e('input[name="jform[fromname]"]').val(),mailer:e('select[name="jform[mailer]"]').val(),mailonline:e('input[name="jform[mailonline]"]:checked').val()};e.ajax({method:"POST",url:sendtestmail_url,data:s,dataType:"json"}).done(function(e){var s={};e.data?"object"==typeof e.messages&&"undefined"!=typeof e.messages.success&&e.messages.success.length>0&&(s.success=[e.messages.success]):"object"==typeof e.messages&&("undefined"!=typeof e.messages.error&&e.messages.error.length>0&&(s.error=[e.messages.error]),"undefined"!=typeof e.messages.notice&&e.messages.notice.length>0&&(s.notice=[e.messages.notice]),"undefined"!=typeof e.messages.message&&e.messages.message.length>0&&(s.message=[e.messages.message])),Joomla.renderMessages(s)}),window.scrollTo(0,0)})}); From 77abb6dae3e2c24dafd558f3f2cfb3575fbaed6e Mon Sep 17 00:00:00 2001 From: Nicola Galgano Date: Thu, 31 Mar 2016 19:51:51 +0200 Subject: [PATCH 225/352] Module edit backend get slow with a lot of menu items #9516 can confirm on postgresql side exaplain is quite the same should be only a mysql boost --- .../components/com_menus/helpers/menus.php | 36 +------------------ 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/administrator/components/com_menus/helpers/menus.php b/administrator/components/com_menus/helpers/menus.php index c1e1e73a64d26..91f9276b2cd4d 100644 --- a/administrator/components/com_menus/helpers/menus.php +++ b/administrator/components/com_menus/helpers/menus.php @@ -148,7 +148,7 @@ public static function getMenuLinks($menuType = null, $parentId = 0, $mode = 0, { $db = JFactory::getDbo(); $query = $db->getQuery(true) - ->select('a.id AS value, + ->select('DISTINCT(a.id) AS value, a.title AS text, a.alias, a.level, @@ -205,40 +205,6 @@ public static function getMenuLinks($menuType = null, $parentId = 0, $mode = 0, } $query->where('a.published != -2'); - - if (JLanguageMultilang::isEnabled()) - { - $query->group( - 'a.id , - a.title , - a.alias, - a.level, - a.menutype, - a.type, - a.published, - a.template_style_id, - a.checked_out, - a.language, - a.lft, - l.title , - l.image'); - } - else - { - $query->group( - 'a.id , - a.title , - a.alias, - a.level, - a.menutype, - a.type, - a.published, - a.template_style_id, - a.checked_out, - a.language, - a.lft'); - } - $query->order('a.lft ASC'); // Get the options. From 717a96accea7b5c306d62bd5e946e77fd983f690 Mon Sep 17 00:00:00 2001 From: matrikular Date: Thu, 31 Mar 2016 20:17:46 +0200 Subject: [PATCH 226/352] Revert dropdown behavior from parent menu items --- modules/mod_menu/tmpl/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mod_menu/tmpl/default.php b/modules/mod_menu/tmpl/default.php index 5c06a64120776..f6d541dc3b8ce 100644 --- a/modules/mod_menu/tmpl/default.php +++ b/modules/mod_menu/tmpl/default.php @@ -58,7 +58,7 @@ if ($item->parent) { - $class .= ' parent dropdown-submenu'; + $class .= ' parent'; } echo '
  • '; From 56f8d1bd86e7ac1db9b92ec66e5c7a487da75a9f Mon Sep 17 00:00:00 2001 From: matrikular Date: Thu, 31 Mar 2016 20:45:56 +0200 Subject: [PATCH 227/352] Revert dropdown behavior from parent menu items --- modules/mod_menu/tmpl/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mod_menu/tmpl/default.php b/modules/mod_menu/tmpl/default.php index f6d541dc3b8ce..07a9b220f2269 100644 --- a/modules/mod_menu/tmpl/default.php +++ b/modules/mod_menu/tmpl/default.php @@ -79,7 +79,7 @@ // The next item is deeper. if ($item->deeper) { - echo '
  • + data-user-field="escape($field);?>" onclick="if (window.parent) window.parent.jSelectUser(this);"> name; ?>
    + - + - items as $i => $language) : ?> + getShortVersion()); + foreach ($this->items as $i => $language) : + // Get language code and language image. + preg_match('#^pkg_([a-z]{2,3}-[A-Z]{2})$#', $language->element, $element); + $language->code = $element[1]; + ?> + + From 7c35aa5100a5075caff95d93f3ef129af19cfcf0 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sat, 2 Apr 2016 20:13:51 +0100 Subject: [PATCH 246/352] remove whitespace to make travis happy --- installation/view/languages/tmpl/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installation/view/languages/tmpl/default.php b/installation/view/languages/tmpl/default.php index b3380db58c763..7497477e4958e 100644 --- a/installation/view/languages/tmpl/default.php +++ b/installation/view/languages/tmpl/default.php @@ -88,7 +88,7 @@ class="btn btn-primary" getShortVersion()); - foreach ($this->items as $i => $language) : + foreach ($this->items as $i => $language) : // Get language code and language image. preg_match('#^pkg_([a-z]{2,3}-[A-Z]{2})$#', $language->element, $element); $language->code = $element[1]; From 36b37d6d198e335dad09e0c1501280f0d1f1f672 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 4 Apr 2016 11:55:10 +0100 Subject: [PATCH 247/352] add com_templates submenu --- administrator/modules/mod_menu/tmpl/default_enabled.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/administrator/modules/mod_menu/tmpl/default_enabled.php b/administrator/modules/mod_menu/tmpl/default_enabled.php index a9e6aabc3a43c..4dafa07788c2a 100644 --- a/administrator/modules/mod_menu/tmpl/default_enabled.php +++ b/administrator/modules/mod_menu/tmpl/default_enabled.php @@ -318,7 +318,11 @@ if ($tm) { - $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_TEMPLATE_MANAGER'), 'index.php?option=com_templates', 'class:themes')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_TEMPLATE_MANAGER'), 'index.php?option=com_templates', 'class:themes'), $tm); + + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_TEMPLATES_SUBMENU_STYLES'), 'index.php?option=com_templates&view=styles', 'class:themes')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_TEMPLATES_SUBMENU_TEMPLATES'), 'index.php?option=com_templates&view=templates', 'class:themes')); + $menu->getParent(); } if ($lm) From 39cea2a6b3256202bd831a0d2edd9d4957a828d6 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 4 Apr 2016 11:55:20 +0100 Subject: [PATCH 248/352] add com_templates submenu language strings --- administrator/language/en-GB/en-GB.mod_menu.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/administrator/language/en-GB/en-GB.mod_menu.ini b/administrator/language/en-GB/en-GB.mod_menu.ini index a769f3ca1f8f8..1cb5ecd798c22 100644 --- a/administrator/language/en-GB/en-GB.mod_menu.ini +++ b/administrator/language/en-GB/en-GB.mod_menu.ini @@ -15,6 +15,8 @@ MOD_MENU_COM_CONTENT_NEW_CATEGORY="Add New Category" MOD_MENU_COM_LANGUAGES_SUBMENU_CONTENT="Content Languages" MOD_MENU_COM_LANGUAGES_SUBMENU_INSTALLED="Installed" MOD_MENU_COM_LANGUAGES_SUBMENU_OVERRIDES="Overrides" +MOD_MENU_COM_TEMPLATES_SUBMENU_STYLES="Styles" +MOD_MENU_COM_TEMPLATES_SUBMENU_TEMPLATES="Templates" MOD_MENU_COM_USERS="Users" MOD_MENU_COM_USERS_ADD_GROUP="Add New Group" MOD_MENU_COM_USERS_ADD_LEVEL="Add New Access Level" From e70c00659349281d9b73330a8703629c400688ec Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 4 Apr 2016 14:38:43 +0100 Subject: [PATCH 249/352] supress warning from simplexml_load_file --- libraries/cms/application/helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/cms/application/helper.php b/libraries/cms/application/helper.php index 34e49aba0cd4d..67b3bb2f1b703 100644 --- a/libraries/cms/application/helper.php +++ b/libraries/cms/application/helper.php @@ -231,7 +231,7 @@ public static function parseXMLLangMetaFile($path) JLog::add('JApplicationHelper::parseXMLLangMetaFile is deprecated. Use JInstaller::parseXMLInstallFile instead.', JLog::WARNING, 'deprecated'); // Read the file to see if it's a valid component XML file - $xml = simplexml_load_file($path); + $xml = @simplexml_load_file($path); if (!$xml) { From 1035cab0da7e2bf42885d696d7e81ab5437b4604 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 4 Apr 2016 14:39:07 +0100 Subject: [PATCH 250/352] add message if unable to load language meta xml file --- .../com_languages/models/installed.php | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/administrator/components/com_languages/models/installed.php b/administrator/components/com_languages/models/installed.php index 2161cd87b6acd..c9117dfb07a0e 100644 --- a/administrator/components/com_languages/models/installed.php +++ b/administrator/components/com_languages/models/installed.php @@ -216,21 +216,25 @@ public function getData() // Compute all the languages. foreach ($langlist as $lang) { - $client = JApplicationHelper::getClientInfo($lang->client_id); - $clientPath = (int) $lang->client_id === 0 ? JPATH_SITE : JPATH_ADMINISTRATOR; + $client = JApplicationHelper::getClientInfo($lang->client_id); + $clientPath = (int) $lang->client_id === 0 ? JPATH_SITE : JPATH_ADMINISTRATOR; + $metafilePath = $clientPath . '/language/' . $lang->element . '/' . $lang->element . '.xml'; + + $info = JApplicationHelper::parseXMLLangMetaFile($metafilePath); + if (!is_array($info)) + { + $app = JFactory::getApplication(); + $app->enqueueMessage(JText::sprintf('COM_LANGUAGES_ERROR_LANGUAGE_METAFILE_MISSING', $lang->element, $metafilePath), 'warning'); + + continue; + } - $info = JApplicationHelper::parseXMLLangMetaFile($clientPath . '/language/' . $lang->element . '/' . $lang->element . '.xml'); $row = new StdClass; $row->language = $lang->element; $row->client_id = (int) $lang->client_id; $row->extension_id = (int) $lang->extension_id; - if (!is_array($info)) - { - continue; - } - foreach ($info as $key => $value) { $row->$key = $value; From 58e0fed68cc5ce520034f725534d6fade80975f1 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 4 Apr 2016 14:39:38 +0100 Subject: [PATCH 251/352] add language string --- administrator/language/en-GB/en-GB.com_languages.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/language/en-GB/en-GB.com_languages.ini b/administrator/language/en-GB/en-GB.com_languages.ini index ed2abb52e1aee..1c7f707415fbc 100644 --- a/administrator/language/en-GB/en-GB.com_languages.ini +++ b/administrator/language/en-GB/en-GB.com_languages.ini @@ -8,6 +8,7 @@ COM_LANGUAGES_CONFIGURATION="Languages: Options" COM_LANGUAGES_ERR_DELETE="Select a language to delete" COM_LANGUAGES_ERR_NO_LANGUAGE_SELECTED="No language selected." COM_LANGUAGES_ERROR_LANG_TAG="
    The Language Tag should contain 2 or 3 lowercase letters corresponding to the ISO language, a dash and 2 uppercase letters corresponding to the ISO country code.
    This should be the exact prefix used for the language installed or to be installed. Example: en-GB, srp-ME." +COM_LANGUAGES_ERROR_LANGUAGE_METAFILE_MISSING="Could not load %s language meta XML file from %s." COM_LANGUAGES_ERR_PUBLISH="Select a language to publish." COM_LANGUAGES_FIELD_DESCRIPTION_DESC="Enter a description for the language." COM_LANGUAGES_FIELD_IMAGE_DESC="Prefix of the image file for this language when using the "Use image flags" Language Switcher basic option. Example: if 'en' is chosen, then the image will be en.gif. Images and CSS for this module are in media/mod_languages/." From d5c0e394d8536da3607ad30a2fc0f770ff0891c0 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 4 Apr 2016 15:00:46 +0100 Subject: [PATCH 252/352] check before if file exists instead of suppressing the php warning --- libraries/cms/application/helper.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libraries/cms/application/helper.php b/libraries/cms/application/helper.php index 67b3bb2f1b703..9c9e70264d4cc 100644 --- a/libraries/cms/application/helper.php +++ b/libraries/cms/application/helper.php @@ -230,8 +230,14 @@ public static function parseXMLLangMetaFile($path) { JLog::add('JApplicationHelper::parseXMLLangMetaFile is deprecated. Use JInstaller::parseXMLInstallFile instead.', JLog::WARNING, 'deprecated'); + // Check if meta file exists. + if (!file_exists($path)) + { + return false; + } + // Read the file to see if it's a valid component XML file - $xml = @simplexml_load_file($path); + $xml = simplexml_load_file($path); if (!$xml) { From 46b472ff49ba3b91be8511fce187e4a022e0243b Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 4 Apr 2016 15:04:16 +0100 Subject: [PATCH 253/352] check also if xml file exists on JInstaller::parseXMLInstallFile() --- libraries/cms/installer/installer.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libraries/cms/installer/installer.php b/libraries/cms/installer/installer.php index 2ba6a6be16672..9d2039e9e88fd 100644 --- a/libraries/cms/installer/installer.php +++ b/libraries/cms/installer/installer.php @@ -2191,6 +2191,12 @@ public function loadMD5Sum($filename) */ public static function parseXMLInstallFile($path) { + // Check if xml file exists. + if (!file_exists($path)) + { + return false; + } + // Read the file to see if it's a valid component XML file $xml = simplexml_load_file($path); From 22b030f9d540a87a31d7f302eac536bc86a0ef10 Mon Sep 17 00:00:00 2001 From: Jelle Kok Date: Mon, 4 Apr 2016 23:32:38 +0200 Subject: [PATCH 254/352] move error message --- .../com_installer/views/warnings/tmpl/default.php | 5 +---- .../com_installer/views/warnings/view.html.php | 9 +++++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/administrator/components/com_installer/views/warnings/tmpl/default.php b/administrator/components/com_installer/views/warnings/tmpl/default.php index 5f48c4b25c589..debd56f6465ce 100644 --- a/administrator/components/com_installer/views/warnings/tmpl/default.php +++ b/administrator/components/com_installer/views/warnings/tmpl/default.php @@ -19,10 +19,7 @@
    - messages)) : ?> - enqueueMessage(JText::_('COM_INSTALLER_MSG_WARNINGS_NONE'), 'notice'); ?> - - enqueueMessage(JText::_('COM_INSTALLER_MSG_WARNINGS_NOTICE'), ''); ?> + messages)) : ?> 'warning0')); ?> messages as $message) : ?> diff --git a/administrator/components/com_installer/views/warnings/view.html.php b/administrator/components/com_installer/views/warnings/view.html.php index fa46df366367f..6045de8f60bce 100644 --- a/administrator/components/com_installer/views/warnings/view.html.php +++ b/administrator/components/com_installer/views/warnings/view.html.php @@ -32,6 +32,15 @@ public function display($tpl = null) $items = $this->get('Items'); $this->messages = &$items; parent::display($tpl); + + if (count($items) > 0) + { + JFactory::getApplication()->enqueueMessage(JText::_('COM_INSTALLER_MSG_WARNINGS_NOTICE'), ''); + } + else + { + JFactory::getApplication()->enqueueMessage(JText::_('COM_INSTALLER_MSG_WARNINGS_NONE'), 'notice'); + } } /** From 2d36d1df45866ea8d82e62d3dfc02108877d9cb2 Mon Sep 17 00:00:00 2001 From: Jelle Kok Date: Tue, 5 Apr 2016 00:17:41 +0200 Subject: [PATCH 255/352] update language string --- .../components/com_installer/views/warnings/view.html.php | 2 +- administrator/language/en-GB/en-GB.com_installer.ini | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_installer/views/warnings/view.html.php b/administrator/components/com_installer/views/warnings/view.html.php index 6045de8f60bce..5cee0fc778fa7 100644 --- a/administrator/components/com_installer/views/warnings/view.html.php +++ b/administrator/components/com_installer/views/warnings/view.html.php @@ -35,7 +35,7 @@ public function display($tpl = null) if (count($items) > 0) { - JFactory::getApplication()->enqueueMessage(JText::_('COM_INSTALLER_MSG_WARNINGS_NOTICE'), ''); + JFactory::getApplication()->enqueueMessage(JText::_('COM_INSTALLER_MSG_WARNINGS_NOTICE'), 'warning'); } else { diff --git a/administrator/language/en-GB/en-GB.com_installer.ini b/administrator/language/en-GB/en-GB.com_installer.ini index 079f5828f56f9..78e6a5561aa5a 100644 --- a/administrator/language/en-GB/en-GB.com_installer.ini +++ b/administrator/language/en-GB/en-GB.com_installer.ini @@ -143,7 +143,7 @@ COM_INSTALLER_MSG_WARNINGS_MEDMEMORYDESC="Potentially low PHP memory limit." COM_INSTALLER_MSG_WARNINGS_MEDMEMORYWARN="Your PHP memory limit is set below 16MB which may cause some issues when installing large extensions. Please set your memory limit to at least 16MB." COM_INSTALLER_MSG_WARNINGS_NONE="No warnings detected." COM_INSTALLER_MSG_WARNINGS_NOTCOMPLETE="

    Warning: Update Not Complete!

    The update is only partially complete. Please do the second update to complete the process.

    " -COM_INSTALLER_MSG_WARNINGS_NOTICE="Warning: There are some warnings detected." +COM_INSTALLER_MSG_WARNINGS_NOTICE="There are some warnings detected." COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSET="The PHP temporary folder is not set." COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSETDESC="The PHP temporary folder is the folder that PHP uses to store an uploaded file before Joomla can access this file. Whilst the folder not being set isn't always a problem, if you are having issues with manifest files not being detected or uploaded files not being detected, setting this in your php.ini file might fix the issue." COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLE="The PHP temporary folder is not writeable." From 80bb8cfd18d1519de7b7418d4bd95840185ebc9c Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 5 Apr 2016 01:04:36 +0100 Subject: [PATCH 256/352] normalize com_cache purge --- .../components/com_cache/views/purge/tmpl/default.php | 10 ++-------- .../components/com_cache/views/purge/view.html.php | 3 +++ administrator/language/en-GB/en-GB.com_cache.ini | 2 +- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/administrator/components/com_cache/views/purge/tmpl/default.php b/administrator/components/com_cache/views/purge/tmpl/default.php index e66384ed14931..b5b5406ae439c 100644 --- a/administrator/components/com_cache/views/purge/tmpl/default.php +++ b/administrator/components/com_cache/views/purge/tmpl/default.php @@ -10,18 +10,12 @@ defined('_JEXEC') or die; ?> - +
    sidebar; ?>
    -
    - -

    -
    -
    -

    -
    +

    diff --git a/administrator/components/com_cache/views/purge/view.html.php b/administrator/components/com_cache/views/purge/view.html.php index aeb521d33e697..b6b3fcc65c086 100644 --- a/administrator/components/com_cache/views/purge/view.html.php +++ b/administrator/components/com_cache/views/purge/view.html.php @@ -25,8 +25,11 @@ class CacheViewPurge extends JViewLegacy */ public function display($tpl = null) { + JFactory::getApplication()->enqueueMessage(JText::_('COM_CACHE_RESOURCE_INTENSIVE_WARNING'), 'warning'); + $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); + parent::display($tpl); } diff --git a/administrator/language/en-GB/en-GB.com_cache.ini b/administrator/language/en-GB/en-GB.com_cache.ini index 8090057c56a07..77a73928447fe 100644 --- a/administrator/language/en-GB/en-GB.com_cache.ini +++ b/administrator/language/en-GB/en-GB.com_cache.ini @@ -26,7 +26,7 @@ COM_CACHE_PURGE_CACHE_ADMIN="Clear Cache Administrator" COM_CACHE_PURGE_EXPIRED="Clear Expired Cache" COM_CACHE_PURGE_EXPIRED_ITEMS="Clear expired items" COM_CACHE_PURGE_INSTRUCTIONS="Select the Clear Expired Cache icon in the toolbar to delete all expired cache files. Note: Cache files that are still current will not be deleted." -COM_CACHE_RESOURCE_INTENSIVE_WARNING="WARNING: This can be resource intensive on sites with a large number of items!" +COM_CACHE_RESOURCE_INTENSIVE_WARNING="This can be resource intensive on sites with a large number of items!" COM_CACHE_SIZE="Size" COM_CACHE_SELECT_CLIENT="- Select Location -" COM_CACHE_XML_DESCRIPTION="Component for cache management." From d8bdf8bbd8237645fac6aa469929067979133412 Mon Sep 17 00:00:00 2001 From: Jean-Marie Simonet Date: Tue, 5 Apr 2016 08:47:12 +0200 Subject: [PATCH 257/352] Displays language code in menuitem field --- libraries/cms/form/field/menuitem.php | 34 +++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/libraries/cms/form/field/menuitem.php b/libraries/cms/form/field/menuitem.php index df1c5beabd615..a7ba568e70263 100644 --- a/libraries/cms/form/field/menuitem.php +++ b/libraries/cms/form/field/menuitem.php @@ -169,8 +169,19 @@ protected function getGroups() foreach ($items as $link) { $levelPrefix = str_repeat('- ', max(0, $link->level - 1)); + + // Displays language code if not set to All + if ($link->language !== '*') + { + $lang = ' (' . $link->language . ')'; + } + else + { + $lang = ''; + } + $groups[$menuType][] = JHtml::_('select.option', - $link->value, $levelPrefix . $link->text, + $link->value, $levelPrefix . $link->text . $lang, 'value', 'text', in_array($link->type, $this->disable) @@ -190,10 +201,23 @@ protected function getGroups() foreach ($menu->links as $link) { $levelPrefix = str_repeat('- ', $link->level - 1); - $groups[$menu->menutype][] = JHtml::_( - 'select.option', $link->value, $levelPrefix . $link->text, 'value', 'text', - in_array($link->type, $this->disable) - ); + + // Displays language code if not set to All + if ($link->language !== '*') + { + $lang = ' (' . $link->language . ')'; + } + else + { + $lang = ''; + } + + $groups[$menu->menutype][] = JHtml::_('select.option', + $link->value, $levelPrefix . $link->text . $lang, + 'value', + 'text', + in_array($link->type, $this->disable) + ); } } } From 59482d85120352f3d6465f32e35d4f68c588f215 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 5 Apr 2016 11:38:22 +0100 Subject: [PATCH 258/352] add noitems layout to searchtools --- layouts/joomla/searchtools/default/noitems.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 layouts/joomla/searchtools/default/noitems.php diff --git a/layouts/joomla/searchtools/default/noitems.php b/layouts/joomla/searchtools/default/noitems.php new file mode 100644 index 0000000000000..1da23a91d8940 --- /dev/null +++ b/layouts/joomla/searchtools/default/noitems.php @@ -0,0 +1,16 @@ + +
    + +
    From 9446fa2aedcaae0b4ee75927b865b95f128f7d6e Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 5 Apr 2016 11:39:45 +0100 Subject: [PATCH 259/352] Load seartools noitems layout if totalResults is sent --- layouts/joomla/searchtools/default.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/layouts/joomla/searchtools/default.php b/layouts/joomla/searchtools/default.php index ce0843a116982..033047df8701c 100644 --- a/layouts/joomla/searchtools/default.php +++ b/layouts/joomla/searchtools/default.php @@ -19,7 +19,9 @@ 'filtersHidden' => isset($data['options']['filtersHidden']) ? $data['options']['filtersHidden'] : empty($data['view']->activeFilters), 'defaultLimit' => isset($data['options']['defaultLimit']) ? $data['options']['defaultLimit'] : JFactory::getApplication()->get('list_limit', 20), 'searchFieldSelector' => '#filter_search', - 'orderFieldSelector' => '#list_fullordering' + 'orderFieldSelector' => '#list_fullordering', + 'totalResults' => isset($data['options']['totalResults']) ? $data['options']['totalResults'] : -1, + 'noResultsText' => isset($data['options']['noResultsText']) ? $data['options']['noResultsText'] : JText::_('JGLOBAL_NO_MATCHING_RESULTS'), ); $data['options'] = array_merge($customOptions, $data['options']); @@ -45,3 +47,6 @@
    + + + From 158cec67078b06c96dc29b6d3dc2bb0749b0a272 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 5 Apr 2016 11:40:31 +0100 Subject: [PATCH 260/352] as a PoC add the new layout options to com_cache cache view --- .../components/com_cache/views/cache/tmpl/default.php | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/administrator/components/com_cache/views/cache/tmpl/default.php b/administrator/components/com_cache/views/cache/tmpl/default.php index be05d593ad36a..258302451a2c9 100644 --- a/administrator/components/com_cache/views/cache/tmpl/default.php +++ b/administrator/components/com_cache/views/cache/tmpl/default.php @@ -24,13 +24,8 @@
    - $this, 'options' => array('filterButton' => false))); ?> -
    - data)) : ?> -
    - -
    - + $this, 'options' => array('filterButton' => false, 'totalResults' => count($this->data)))); ?> + data) > 0) : ?>
    +   + + + +
    - + + + - version; ?> + code; ?> + + + version, 0, 3) != $version::RELEASE || substr($language->version, 0, 5) != $currentShortVersion) : ?> + version; ?> + + version; ?> +
    From b9d0127b97f200f6dea7a2a616451f7108baec7a Mon Sep 17 00:00:00 2001 From: Jean-Marie Simonet Date: Tue, 5 Apr 2016 13:40:55 +0200 Subject: [PATCH 261/352] [imp] Displaying language code in category field --- libraries/legacy/form/field/category.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/libraries/legacy/form/field/category.php b/libraries/legacy/form/field/category.php index b7bfa7ae8d868..bde621f537e06 100644 --- a/libraries/legacy/form/field/category.php +++ b/libraries/legacy/form/field/category.php @@ -56,6 +56,25 @@ protected function getOptions() $options = JHtml::_('category.options', $extension); } + // Displays language code if not set to All + foreach ($options as $option) + { + // Create a new query object. + $db = JFactory::getDbo(); + $query = $db->getQuery(true) + ->select($db->quoteName('language')) + ->where($db->quoteName('id') . '=' . (int) $option->value) + ->from($db->quoteName('#__categories')); + + $db->setQuery($query); + $language = $db->loadResult(); + + if ($language !== '*') + { + $option->text = $option->text . ' (' . $language . ')'; + } + } + // Verify permissions. If the action attribute is set, then we scan the options. if ((string) $this->element['action']) { From 44954f58e55ac731846e7d356f9d46d802e08c6c Mon Sep 17 00:00:00 2001 From: Jean-Marie Simonet Date: Wed, 6 Apr 2016 08:37:52 +0200 Subject: [PATCH 262/352] [imp] Displaying language code in categoryedit and categoryparent fields dropdown --- .../com_categories/models/fields/categoryedit.php | 15 +++++++++++++++ .../models/fields/categoryparent.php | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/administrator/components/com_categories/models/fields/categoryedit.php b/administrator/components/com_categories/models/fields/categoryedit.php index 19de4d275a555..9789b17e9e5c8 100644 --- a/administrator/components/com_categories/models/fields/categoryedit.php +++ b/administrator/components/com_categories/models/fields/categoryedit.php @@ -139,6 +139,16 @@ protected function getOptions() } } + // Displays language code if not set to All + $db = JFactory::getDbo(); + $query = $db->getQuery(true) + ->select($db->quoteName('language')) + ->where($db->quoteName('id') . '=' . (int) $options[$i]->value) + ->from($db->quoteName('#__categories')); + + $db->setQuery($query); + $language = $db->loadResult(); + if ($options[$i]->published == 1) { $options[$i]->text = str_repeat('- ', $options[$i]->level) . $options[$i]->text; @@ -147,6 +157,11 @@ protected function getOptions() { $options[$i]->text = str_repeat('- ', $options[$i]->level) . '[' . $options[$i]->text . ']'; } + + if ($language !== '*') + { + $options[$i]->text = $options[$i]->text . ' (' . $language . ')'; + } } // Get the current user object. diff --git a/administrator/components/com_categories/models/fields/categoryparent.php b/administrator/components/com_categories/models/fields/categoryparent.php index 130b32eee0858..438a663a931a5 100644 --- a/administrator/components/com_categories/models/fields/categoryparent.php +++ b/administrator/components/com_categories/models/fields/categoryparent.php @@ -107,7 +107,22 @@ protected function getOptions() $options[$i]->text = JText::_('JGLOBAL_ROOT_PARENT'); } + // Displays language code if not set to All + $db = JFactory::getDbo(); + $query = $db->getQuery(true) + ->select($db->quoteName('language')) + ->where($db->quoteName('id') . '=' . (int) $options[$i]->value) + ->from($db->quoteName('#__categories')); + + $db->setQuery($query); + $language = $db->loadResult(); + $options[$i]->text = str_repeat('- ', $options[$i]->level) . $options[$i]->text; + + if ($language !== '*') + { + $options[$i]->text = $options[$i]->text . ' (' . $language . ')'; + } } // Get the current user object. From 17ea3b0e93e87dc21918f5d3c10db65ce35265fa Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Wed, 6 Apr 2016 11:16:05 +0100 Subject: [PATCH 263/352] en-GB version bump to 3.5.2 --- language/en-GB/en-GB.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/language/en-GB/en-GB.xml b/language/en-GB/en-GB.xml index fcbca525c0409..423796c0a5c2a 100644 --- a/language/en-GB/en-GB.xml +++ b/language/en-GB/en-GB.xml @@ -1,8 +1,8 @@ English (en-GB) - 3.5.0 - November 2015 + 3.5.2 + April 2016 Joomla! Project admin@joomla.org www.joomla.org From 750b25bce9f60f29f5e004d830c7a0519527405c Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Wed, 6 Apr 2016 11:18:18 +0100 Subject: [PATCH 264/352] en-GB version bump to 3.5.2 (admin install.xml) --- administrator/language/en-GB/install.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/install.xml b/administrator/language/en-GB/install.xml index 00db4dc9f953b..871c930acbdcb 100644 --- a/administrator/language/en-GB/install.xml +++ b/administrator/language/en-GB/install.xml @@ -2,7 +2,7 @@ English (United Kingdom) en-GB - 3.5.0 + 3.5.2 2013-03-07 Joomla! Project admin@joomla.org From ab57b5672ca47321858266a6317dd0e421d10028 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Wed, 6 Apr 2016 11:18:33 +0100 Subject: [PATCH 265/352] en-GB version bump to 3.5.2 (admin manifest) --- administrator/language/en-GB/en-GB.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.xml b/administrator/language/en-GB/en-GB.xml index 84a494375fd46..b0b511c9fe49f 100644 --- a/administrator/language/en-GB/en-GB.xml +++ b/administrator/language/en-GB/en-GB.xml @@ -1,7 +1,7 @@ English (en-GB) - 3.5.0 + 3.5.2 November 2015 Joomla! Project admin@joomla.org From 1c5585f493f96dad721755181d742ca172c01d9e Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Wed, 6 Apr 2016 11:19:11 +0100 Subject: [PATCH 266/352] date is april --- administrator/language/en-GB/en-GB.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.xml b/administrator/language/en-GB/en-GB.xml index b0b511c9fe49f..4a91ebbbdf354 100644 --- a/administrator/language/en-GB/en-GB.xml +++ b/administrator/language/en-GB/en-GB.xml @@ -2,7 +2,7 @@ English (en-GB) 3.5.2 - November 2015 + April 2015 Joomla! Project admin@joomla.org www.joomla.org From 48c8d7307fad57ef22ca57a32c0bbad8fce9f1b1 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Wed, 6 Apr 2016 11:19:39 +0100 Subject: [PATCH 267/352] en-GB version bump to 3.5.2 (site install.xml) --- language/en-GB/install.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language/en-GB/install.xml b/language/en-GB/install.xml index bc628bb32526c..7fab36e319313 100644 --- a/language/en-GB/install.xml +++ b/language/en-GB/install.xml @@ -2,7 +2,7 @@ English (United Kingdom) en-GB - 3.5.0 + 3.5.2 2013-03-07 Joomla! Project admin@joomla.org From 67b9671829e0f5de321571cbf3c924184f19d984 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Wed, 6 Apr 2016 11:43:34 +0100 Subject: [PATCH 268/352] of course 2016 thanks @zero-24 --- administrator/language/en-GB/en-GB.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.xml b/administrator/language/en-GB/en-GB.xml index 4a91ebbbdf354..e2d47c59fe441 100644 --- a/administrator/language/en-GB/en-GB.xml +++ b/administrator/language/en-GB/en-GB.xml @@ -2,7 +2,7 @@ English (en-GB) 3.5.2 - April 2015 + April 2016 Joomla! Project admin@joomla.org www.joomla.org From 7e1720370b195ecffbc1d41fd8a8f256de51005f Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Wed, 6 Apr 2016 12:53:02 +0100 Subject: [PATCH 269/352] grammar --- administrator/language/en-GB/en-GB.plg_user_profile.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.plg_user_profile.ini b/administrator/language/en-GB/en-GB.plg_user_profile.ini index b5f26d23ca14b..e3401e50b2ac6 100644 --- a/administrator/language/en-GB/en-GB.plg_user_profile.ini +++ b/administrator/language/en-GB/en-GB.plg_user_profile.ini @@ -7,7 +7,7 @@ COM_CONTENT_CHANGE_ARTICLE="Select or Change article" COM_CONTENT_CHANGE_ARTICLE_BUTTON="Select/Change" COM_CONTENT_SELECT_AN_ARTICLE="Select an Article" PLG_USER_PROFILE="User - Profile" -PLG_USER_PROFILE_ERROR_INVALID_DOB="The date of birth you entered is invalid. Please enter valid date." +PLG_USER_PROFILE_ERROR_INVALID_DOB="The date of birth you entered is invalid. Please enter a valid date." PLG_USER_PROFILE_FIELD_ABOUT_ME_DESC="Choose an option for the field About Me." PLG_USER_PROFILE_FIELD_ABOUT_ME_LABEL="About Me:" PLG_USER_PROFILE_FIELD_ADDRESS1_DESC="Choose an option for the field Address1." From 960966e931c9183925100c24108384e27222d95e Mon Sep 17 00:00:00 2001 From: Chris Davenport Date: Wed, 6 Apr 2016 16:45:22 +0100 Subject: [PATCH 270/352] Small grammatical correction Small correction to English grammar in the email notification message. --- .../language/en-GB/en-GB.plg_system_updatenotification.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.plg_system_updatenotification.ini b/administrator/language/en-GB/en-GB.plg_system_updatenotification.ini index 7243fc067b26d..afef0caa199be 100644 --- a/administrator/language/en-GB/en-GB.plg_system_updatenotification.ini +++ b/administrator/language/en-GB/en-GB.plg_system_updatenotification.ini @@ -17,5 +17,5 @@ PLG_SYSTEM_UPDATENOTIFICATION_LANGUAGE_OVERRIDE_NONE="Auto" ; [LINK] Update URL (link to com_joomlaupdate, will request login if the Super User isn't already logged in). ; \n Newline character. Use it to start a new line in the email. PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_SUBJECT="Joomla! Update available for [SITENAME] – [URL]" -PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_BODY="This email IS NOT sent by Joomla.org. It is sent automatically by your own site,\n[SITENAME]\n\n================================================================================\nUPDATE INFORMATION\n================================================================================\n\nYour site has discovered that there is an updated version of Joomla! available for download.\n\nJoomla! version currently installed: [CURVERSION]\nJoomla! version available for installation: [NEWVERSION]\n\nThis email is sent to you by your site to remind you of this fact.\nThe Joomla! project will never contact you directly about available updates of Joomla! on your site.\n\n================================================================================\nUPDATE INSTRUCTIONS\n================================================================================\n\nTo install the update on [SITENAME] please click the following link. (If the URL is not a link, simply copy & paste it to your browser).\n\nUpdate link: [LINK]\n\n================================================================================\nWHY AM I RECEIVING THIS EMAIL?\n================================================================================\n\nThis email has been automatically sent by a plugin provided by Joomla!, the software which powers your site.\nThis plugin looks for updated versions of Joomla! and sends an email notification to its administrators.\nYou will receive several similar emails from your site until you either update the software or disable these emails.\n\nTo disable these emails, please unpublish the 'System - Joomla! Update Notification' plugin in the Plugin Manager on your site.\n\nIf you do not understand what is Joomla! and what you need to do please do not contact the Joomla! project.\nThey are NOT sending you this email and they cannot help you. Instead, please contact the person who built or manages your site.\n\nIf you are the person who built or manages your website, please note that this plugin may have been activated automatically when you installed or updated Joomla! on your site.\n\n================================================================================\nWHO SENT ME THIS EMAIL?\n================================================================================\n\nThis email is sent to you by your own site, [SITENAME]" +PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_BODY="This email IS NOT sent by Joomla.org. It is sent automatically by your own site,\n[SITENAME]\n\n================================================================================\nUPDATE INFORMATION\n================================================================================\n\nYour site has discovered that there is an updated version of Joomla! available for download.\n\nJoomla! version currently installed: [CURVERSION]\nJoomla! version available for installation: [NEWVERSION]\n\nThis email is sent to you by your site to remind you of this fact.\nThe Joomla! project will never contact you directly about available updates of Joomla! on your site.\n\n================================================================================\nUPDATE INSTRUCTIONS\n================================================================================\n\nTo install the update on [SITENAME] please click the following link. (If the URL is not a link, simply copy & paste it to your browser).\n\nUpdate link: [LINK]\n\n================================================================================\nWHY AM I RECEIVING THIS EMAIL?\n================================================================================\n\nThis email has been automatically sent by a plugin provided by Joomla!, the software which powers your site.\nThis plugin looks for updated versions of Joomla! and sends an email notification to its administrators.\nYou will receive several similar emails from your site until you either update the software or disable these emails.\n\nTo disable these emails, please unpublish the 'System - Joomla! Update Notification' plugin in the Plugin Manager on your site.\n\nIf you do not understand what Joomla! is and what you need to do please do not contact the Joomla! project.\nThey are NOT sending you this email and they cannot help you. Instead, please contact the person who built or manages your site.\n\nIf you are the person who built or manages your website, please note that this plugin may have been activated automatically when you installed or updated Joomla! on your site.\n\n================================================================================\nWHO SENT ME THIS EMAIL?\n================================================================================\n\nThis email is sent to you by your own site, [SITENAME]" PLG_SYSTEM_UPDATENOTIFICATION_XML_DESCRIPTION="This plugin periodically checks for the availability of new Joomla! versions. When one is found it will send you an email, reminding you to update Joomla!. Pro Tip: You can customise the email message by overriding the language string keys PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_SUBJECT and PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_BODY." From bae26564f8a64db7c90b3d2302d8fa45490a310d Mon Sep 17 00:00:00 2001 From: Michael Babker Date: Thu, 7 Apr 2016 00:45:17 -0400 Subject: [PATCH 271/352] JError doc block updates --- libraries/legacy/error/error.php | 103 +++++++++++++++++++------------ 1 file changed, 62 insertions(+), 41 deletions(-) diff --git a/libraries/legacy/error/error.php b/libraries/legacy/error/error.php index 6dca1aa8306f9..6bc3d75b8d4f8 100644 --- a/libraries/legacy/error/error.php +++ b/libraries/legacy/error/error.php @@ -9,13 +9,31 @@ defined('JPATH_PLATFORM') or die; -// Error Definition: Illegal Options +/** + * Error Definition: Illegal Options + * + * @var integer + * @since 11.1 + * @deprecated 12.1 (Platform) & 4.0 (CMS) + */ const JERROR_ILLEGAL_OPTIONS = 1; -// Error Definition: Callback does not exist +/** + * Error Definition: Callback does not exist + * + * @var integer + * @since 11.1 + * @deprecated 12.1 (Platform) & 4.0 (CMS) + */ const JERROR_CALLBACK_NOT_CALLABLE = 2; -// Error Definition: Illegal Handler +/** + * Error Definition: Illegal Handler + * + * @var integer + * @since 11.1 + * @deprecated 12.1 (Platform) & 4.0 (CMS) + */ const JERROR_ILLEGAL_MODE = 3; /** @@ -40,6 +58,7 @@ abstract class JError * is present to allow an easy transition into exception handling for code written against the * existing JError API in Joomla. * @since 11.1 + * @deprecated 12.1 (Platform) & 4.0 (CMS) */ public static $legacy = false; @@ -48,13 +67,16 @@ abstract class JError * * @var array * @since 11.1 + * @deprecated 12.1 (Platform) & 4.0 (CMS) */ protected static $levels = array(E_NOTICE => 'Notice', E_WARNING => 'Warning', E_ERROR => 'Error'); /** * Array of message handlers + * * @var array * @since 11.1 + * @deprecated 12.1 (Platform) & 4.0 (CMS) */ protected static $handlers = array( E_NOTICE => array('mode' => 'ignore'), @@ -65,8 +87,9 @@ abstract class JError /** * Array containing the error stack * - * @var array + * @var JException[] * @since 11.1 + * @deprecated 12.1 (Platform) & 4.0 (CMS) */ protected static $stack = array(); @@ -92,7 +115,7 @@ public static function isError($object) * * @param boolean $unset True to remove the error from the stack. * - * @return mixed Last exception object in the error stack or boolean false if none exist + * @return JException|boolean Last JException object in the error stack or boolean false if none exist * * @deprecated 12.1 * @since 11.1 @@ -121,7 +144,7 @@ public static function getError($unset = false) /** * Method for retrieving the exception stack * - * @return array Chronological array of errors that have been stored during script execution + * @return JException[] Chronological array of errors that have been stored during script execution * * @deprecated 12.1 * @since 11.1 @@ -163,7 +186,7 @@ public static function addToStack(JException &$e) * like a database DSN). * @param boolean $backtrace Add a stack backtrace to the exception. * - * @return mixed The JException object + * @return JException * * @since 11.1 * @deprecated 12.1 Use PHP Exception @@ -182,9 +205,9 @@ public static function raise($level, $code, $msg, $info = null, $backtrace = fal /** * Throw an error * - * @param object &$exception An exception to throw. + * @param JException &$exception An exception to throw. * - * @return reference + * @return JException A reference to the handled JException object * * @deprecated 12.1 Use PHP Exception * @see JException @@ -241,7 +264,7 @@ public static function throwError(&$exception) * developer-relevant information that the user should * never see, like a database DSN). * - * @return object $error The configured JError object + * @return JException $error The thrown JException object * * @deprecated 12.1 Use PHP Exception * @see JError::raise() @@ -255,8 +278,7 @@ public static function raiseError($code, $msg, $info = null) } /** - * Wrapper method for the {@link raise()} method with predefined error level of E_WARNING and - * backtrace set to false. + * Wrapper method for the {@link raise()} method with predefined error level of E_WARNING and backtrace set to false. * * @param string $code The application-internal error code for this error * @param string $msg The error message, which may also be shown the user if need be. @@ -264,7 +286,7 @@ public static function raiseError($code, $msg, $info = null) * developer-relevant information that * the user should never see, like a database DSN). * - * @return object The configured JError object + * @return JException $error The thrown JException object * * @deprecated 12.1 Use PHP Exception * @see JError::raise() @@ -278,8 +300,7 @@ public static function raiseWarning($code, $msg, $info = null) } /** - * Wrapper method for the {@link raise()} method with predefined error - * level of E_NOTICE and backtrace set to false. + * Wrapper method for the {@link raise()} method with predefined error level of E_NOTICE and backtrace set to false. * * @param string $code The application-internal error code for this error * @param string $msg The error message, which may also be shown the user if need be. @@ -287,7 +308,7 @@ public static function raiseWarning($code, $msg, $info = null) * developer-relevant information that the user * should never see, like a database DSN). * - * @return object The configured JError object + * @return JException $error The thrown JException object * * @deprecated 12.1 Use PHP Exception * @see raise() @@ -340,7 +361,7 @@ public static function getErrorHandling($level) * @param string $mode The mode to use for the error handling. * @param mixed $options Optional: Any options needed for the given mode. * - * @return mixed True on success or a JException object if failed. + * @return boolean|JException True on success or a JException object if failed. * * @deprecated 12.1 Use PHP Exception * @since 11.1 @@ -478,7 +499,7 @@ public static function registerErrorLevel($level, $name, $handler = 'ignore') * * @param integer $level Error level to translate * - * @return mixed Human readable error level name or boolean false if it doesn't exist + * @return string|boolean Human readable error level name or boolean false if it doesn't exist * * @deprecated 12.1 * @since 11.1 @@ -500,10 +521,10 @@ public static function translateErrorLevel($level) * Ignore error handler * - Ignores the error * - * @param object &$error Exception object to handle - * @param array $options Handler options + * @param JException &$error Exception object to handle + * @param array $options Handler options * - * @return object The exception object + * @return JException The exception object * * @deprecated 12.1 * @see JError::raise() @@ -520,10 +541,10 @@ public static function handleIgnore(&$error, $options) * Echo error handler * - Echos the error message to output * - * @param object &$error Exception object to handle - * @param array $options Handler options + * @param JException &$error Exception object to handle + * @param array $options Handler options * - * @return object The exception object + * @return JException The exception object * * @deprecated 12.1 * @see JError::raise() @@ -596,10 +617,10 @@ public static function handleEcho(&$error, $options) * Verbose error handler * - Echos the error message to output as well as related info * - * @param object &$error Exception object to handle - * @param array $options Handler options + * @param JException &$error Exception object to handle + * @param array $options Handler options * - * @return object The exception object + * @return JException The exception object * * @deprecated 12.1 * @see JError::raise() @@ -642,10 +663,10 @@ public static function handleVerbose(&$error, $options) * Die error handler * - Echos the error message to output and then dies * - * @param object &$error Exception object to handle - * @param array $options Handler options + * @param JException &$error Exception object to handle + * @param array $options Handler options * - * @return object The exception object + * @return void Calls die() * * @deprecated 12.1 * @see JError::raise() @@ -683,10 +704,10 @@ public static function handleDie(&$error, $options) * Message error handler * Enqueues the error message into the system queue * - * @param object &$error Exception object to handle - * @param array $options Handler options + * @param JException &$error Exception object to handle + * @param array $options Handler options * - * @return object The exception object + * @return JException The exception object * * @deprecated 12.1 * @see JError::raise() @@ -707,10 +728,10 @@ public static function handleMessage(&$error, $options) * Log error handler * Logs the error message to a system log file * - * @param object &$error Exception object to handle - * @param array $options Handler options + * @param JException &$error Exception object to handle + * @param array $options Handler options * - * @return object The exception object + * @return JException The exception object * * @deprecated 12.1 * @see JError::raise() @@ -744,10 +765,10 @@ public static function handleLog(&$error, $options) * Callback error handler * - Send the error object to a callback method for error handling * - * @param object &$error Exception object to handle - * @param array $options Handler options + * @param JException &$error Exception object to handle + * @param array $options Handler options * - * @return object The exception object + * @return JException The exception object * * @deprecated 12.1 * @see JError::raise() @@ -763,7 +784,7 @@ public static function handleCallback(&$error, $options) /** * Display a custom error page and exit gracefully * - * @param object &$error Exception object + * @param JException &$error Exception object * * @return void * @@ -844,7 +865,7 @@ public static function customErrorHandler($level, $msg) /** * Render the backtrace * - * @param integer $error The error + * @param Exception $error The error * * @return string Contents of the backtrace * From 44056f0ff97abcb5577abbcd2f22741b5142eb75 Mon Sep 17 00:00:00 2001 From: Jean-Marie Simonet Date: Thu, 7 Apr 2016 08:56:38 +0200 Subject: [PATCH 272/352] Reset for 3.5.2 development --- administrator/manifests/files/joomla.xml | 2 +- libraries/cms/version/version.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/administrator/manifests/files/joomla.xml b/administrator/manifests/files/joomla.xml index 442ee2d1bb63c..8da7a9985e7cd 100644 --- a/administrator/manifests/files/joomla.xml +++ b/administrator/manifests/files/joomla.xml @@ -6,7 +6,7 @@ www.joomla.org (C) 2005 - 2016 Open Source Matters. All rights reserved GNU General Public License version 2 or later; see LICENSE.txt - 3.5.1 + 3.5.2-dev April 2016 FILES_JOOMLA_XML_DESCRIPTION diff --git a/libraries/cms/version/version.php b/libraries/cms/version/version.php index 06173ad7ae1ff..447013a56f979 100644 --- a/libraries/cms/version/version.php +++ b/libraries/cms/version/version.php @@ -38,7 +38,7 @@ final class JVersion * @var string * @since 3.5 */ - const DEV_LEVEL = '1'; + const DEV_LEVEL = '2-dev'; /** * Development status. @@ -46,7 +46,7 @@ final class JVersion * @var string * @since 3.5 */ - const DEV_STATUS = 'Stable'; + const DEV_STATUS = 'Development'; /** * Build number. From cf3b3049d97068021196e2313010577dad505000 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Thu, 7 Apr 2016 10:50:05 +0100 Subject: [PATCH 273/352] add new text strings for sendmail js --- administrator/language/en-GB/en-GB.com_config.ini | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/administrator/language/en-GB/en-GB.com_config.ini b/administrator/language/en-GB/en-GB.com_config.ini index 0bdc95f6c96b4..9543ea49e0770 100644 --- a/administrator/language/en-GB/en-GB.com_config.ini +++ b/administrator/language/en-GB/en-GB.com_config.ini @@ -229,6 +229,11 @@ COM_CONFIG_SAVE_SUCCESS="Configuration successfully saved." COM_CONFIG_SENDMAIL_ACTION_BUTTON="Send Test Mail" COM_CONFIG_SENDMAIL_BODY="This is a test mail sent using "_QQ_"%s"_QQ_". If you receive it, then your email settings are correct!" COM_CONFIG_SENDMAIL_ERROR="Test mail could not be sent." +COM_CONFIG_SENDMAIL_JS_ERROR_CONNECTION_ABORT="A connection abort as occured while fetching the JSON data." +COM_CONFIG_SENDMAIL_JS_ERROR_NO_CONTENT="No content has returned." +COM_CONFIG_SENDMAIL_JS_ERROR_OTHER="An error as occured while fetching the JSON data: HTTP %s status code." +COM_CONFIG_SENDMAIL_JS_ERROR_PARSE="A parse error as occured while processing the following JSON data:
    %s" +COM_CONFIG_SENDMAIL_JS_ERROR_TIMEOUT="A timeout as occured while fetching the JSON data." COM_CONFIG_SENDMAIL_METHOD_MAIL="PHP Mail" COM_CONFIG_SENDMAIL_METHOD_SENDMAIL="Sendmail" COM_CONFIG_SENDMAIL_METHOD_SMTP="SMTP" From 4d7c329487dbac2235be2943680992eabffc2879 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Thu, 7 Apr 2016 10:51:03 +0100 Subject: [PATCH 274/352] load the new javascript text strings in the view --- .../components/com_config/view/application/html.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/administrator/components/com_config/view/application/html.php b/administrator/components/com_config/view/application/html.php index 5c16eea8e8091..84588a2516e11 100644 --- a/administrator/components/com_config/view/application/html.php +++ b/administrator/components/com_config/view/application/html.php @@ -73,6 +73,13 @@ public function render() $this->userIsSuperAdmin = $user->authorise('core.admin'); + // Add strings for translations in Javascript. + JText::script('COM_CONFIG_SENDMAIL_JS_ERROR_CONNECTION_ABORT'); + JText::script('COM_CONFIG_SENDMAIL_JS_ERROR_NO_CONTENT'); + JText::script('COM_CONFIG_SENDMAIL_JS_ERROR_OTHER'); + JText::script('COM_CONFIG_SENDMAIL_JS_ERROR_PARSE'); + JText::script('COM_CONFIG_SENDMAIL_JS_ERROR_TIMEOUT'); + $this->addToolbar(); return parent::render(); From 6dedd7bfe024ea8974bb03c696f41d0477614dc3 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Thu, 7 Apr 2016 10:52:14 +0100 Subject: [PATCH 275/352] load text string from vars and do html entitiy encode to the json response --- media/system/js/sendtestmail-uncompressed.js | 22 +++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/media/system/js/sendtestmail-uncompressed.js b/media/system/js/sendtestmail-uncompressed.js index 7570e7a8b4242..f028de02d9ec8 100644 --- a/media/system/js/sendtestmail-uncompressed.js +++ b/media/system/js/sendtestmail-uncompressed.js @@ -32,26 +32,38 @@ jQuery(document).ready(function ($) }) .fail(function (jqXHR, textStatus, error) { var msg = {}; + if (textStatus == 'parsererror') { - msg.error = ['A parse error as occured while processing the following JSON data:
    ' + jqXHR.responseText.trim() + '']; + // Html entity encode. + var encodedJson = jqXHR.responseText.trim(); + + var buf = []; + for (var i = encodedJson.length-1; i >= 0; i--) { + buf.unshift( [ '&#', encodedJson[i].charCodeAt(), ';' ].join('') ); + } + + encodedJson = buf.join(''); + + msg.error = [ Joomla.JText._('COM_CONFIG_SENDMAIL_JS_ERROR_PARSE').replace('%s', encodedJson) ]; } else if (textStatus == 'nocontent') { - msg.error = ['No content has returned.']; + msg.error = [ Joomla.JText._('COM_CONFIG_SENDMAIL_JS_ERROR_NO_CONTENT') ]; } else if (textStatus == 'timeout') { - msg.error = ['A timeout as occured while fetching the JSON data.']; + msg.error = [ Joomla.JText._('COM_CONFIG_SENDMAIL_JS_ERROR_TIMEOUT') ]; } else if (textStatus == 'abort') { - msg.error = ['A connection abort as occured while fetching the JSON data.']; + msg.error = [ Joomla.JText._('COM_CONFIG_SENDMAIL_JS_ERROR_CONNECTION_ABORT') ]; } else { - msg.error = ['An error as occured while fetching the JSON data: ' + jqXHR.status + ' HTTP status code.']; + msg.error = [ Joomla.JText._('COM_CONFIG_SENDMAIL_JS_ERROR_OTHER').replace('%s', jqXHR.status) ]; } + Joomla.renderMessages(msg); }) .done(function (response) { From d739166db280cc1ca317a69aeab63e995c40153d Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Thu, 7 Apr 2016 10:53:00 +0100 Subject: [PATCH 276/352] same changes in the compressed js version --- media/system/js/sendtestmail.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/media/system/js/sendtestmail.js b/media/system/js/sendtestmail.js index a9f0d6fbb5aaf..558650af7001e 100644 --- a/media/system/js/sendtestmail.js +++ b/media/system/js/sendtestmail.js @@ -1 +1 @@ -jQuery(document).ready(function(e){e("#sendtestmail").click(function(){var s={smtpauth:e('input[name="jform[smtpauth]"]').val(),smtpuser:e('input[name="jform[smtpuser]"]').val(),smtppass:e('input[name="jform[smtppass]"]').val(),smtphost:e('input[name="jform[smtphost]"]').val(),smtpsecure:e('select[name="jform[smtpsecure]"]').val(),smtpport:e('input[name="jform[smtpport]"]').val(),mailfrom:e('input[name="jform[mailfrom]"]').val(),fromname:e('input[name="jform[fromname]"]').val(),mailer:e('select[name="jform[mailer]"]').val(),mailonline:e('input[name="jform[mailonline]"]:checked').val()};e.ajax({method:"POST",url:sendtestmail_url,data:s,dataType:"json"}).fail(function(e,s){var r={};"parsererror"==s?r.error=['A parse error as occured while processing the following JSON data:
    '+e.responseText.trim()+""]:"nocontent"==s?r.error=["No content has returned."]:"timeout"==s?r.error=["A timeout as occured while fetching the JSON data."]:"abort"==s?r.error=["A connection abort as occured while fetching the JSON data."]:r.error=["An error as occured while fetching the JSON data: "+e.status+" HTTP status code."],Joomla.renderMessages(r)}).done(function(e){var s={};e.data?"object"==typeof e.messages&&"undefined"!=typeof e.messages.success&&e.messages.success.length>0&&(s.success=[e.messages.success]):"object"==typeof e.messages&&("undefined"!=typeof e.messages.error&&e.messages.error.length>0&&(s.error=[e.messages.error]),"undefined"!=typeof e.messages.notice&&e.messages.notice.length>0&&(s.notice=[e.messages.notice]),"undefined"!=typeof e.messages.message&&e.messages.message.length>0&&(s.message=[e.messages.message])),Joomla.renderMessages(s)}),window.scrollTo(0,0)})}); +jQuery(document).ready(function(e){e("#sendtestmail").click(function(){var s={smtpauth:e('input[name="jform[smtpauth]"]').val(),smtpuser:e('input[name="jform[smtpuser]"]').val(),smtppass:e('input[name="jform[smtppass]"]').val(),smtphost:e('input[name="jform[smtphost]"]').val(),smtpsecure:e('select[name="jform[smtpsecure]"]').val(),smtpport:e('input[name="jform[smtpport]"]').val(),mailfrom:e('input[name="jform[mailfrom]"]').val(),fromname:e('input[name="jform[fromname]"]').val(),mailer:e('select[name="jform[mailer]"]').val(),mailonline:e('input[name="jform[mailonline]"]:checked').val()};e.ajax({method:"POST",url:sendtestmail_url,data:s,dataType:"json"}).fail(function(e,s){var a={};if("parsererror"==s){for(var o=e.responseText.trim(),m=[],r=o.length-1;r>=0;r--)m.unshift(["&#",o[r].charCodeAt(),";"].join(""));o=m.join(""),a.error=[Joomla.JText._("COM_CONFIG_SENDMAIL_JS_ERROR_PARSE").replace("%s",o)]}else"nocontent"==s?a.error=[Joomla.JText._("COM_CONFIG_SENDMAIL_JS_ERROR_NO_CONTENT")]:"timeout"==s?a.error=[Joomla.JText._("COM_CONFIG_SENDMAIL_JS_ERROR_TIMEOUT")]:"abort"==s?a.error=[Joomla.JText._("COM_CONFIG_SENDMAIL_JS_ERROR_CONNECTION_ABORT")]:a.error=[Joomla.JText._("COM_CONFIG_SENDMAIL_JS_ERROR_OTHER").replace("%s",e.status)];Joomla.renderMessages(a)}).done(function(e){var s={};e.data?"object"==typeof e.messages&&"undefined"!=typeof e.messages.success&&e.messages.success.length>0&&(s.success=[e.messages.success]):"object"==typeof e.messages&&("undefined"!=typeof e.messages.error&&e.messages.error.length>0&&(s.error=[e.messages.error]),"undefined"!=typeof e.messages.notice&&e.messages.notice.length>0&&(s.notice=[e.messages.notice]),"undefined"!=typeof e.messages.message&&e.messages.message.length>0&&(s.message=[e.messages.message])),Joomla.renderMessages(s)}),window.scrollTo(0,0)})}); From f56e8c8278fea5dc0a2fd402adbfcbf29c7e6ba4 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Thu, 7 Apr 2016 10:59:34 +0100 Subject: [PATCH 277/352] correct language - thanks again @brianteeman --- administrator/language/en-GB/en-GB.com_config.ini | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/administrator/language/en-GB/en-GB.com_config.ini b/administrator/language/en-GB/en-GB.com_config.ini index 9543ea49e0770..6d4b5bb824ca2 100644 --- a/administrator/language/en-GB/en-GB.com_config.ini +++ b/administrator/language/en-GB/en-GB.com_config.ini @@ -229,11 +229,11 @@ COM_CONFIG_SAVE_SUCCESS="Configuration successfully saved." COM_CONFIG_SENDMAIL_ACTION_BUTTON="Send Test Mail" COM_CONFIG_SENDMAIL_BODY="This is a test mail sent using "_QQ_"%s"_QQ_". If you receive it, then your email settings are correct!" COM_CONFIG_SENDMAIL_ERROR="Test mail could not be sent." -COM_CONFIG_SENDMAIL_JS_ERROR_CONNECTION_ABORT="A connection abort as occured while fetching the JSON data." -COM_CONFIG_SENDMAIL_JS_ERROR_NO_CONTENT="No content has returned." -COM_CONFIG_SENDMAIL_JS_ERROR_OTHER="An error as occured while fetching the JSON data: HTTP %s status code." -COM_CONFIG_SENDMAIL_JS_ERROR_PARSE="A parse error as occured while processing the following JSON data:
    %s" -COM_CONFIG_SENDMAIL_JS_ERROR_TIMEOUT="A timeout as occured while fetching the JSON data." +COM_CONFIG_SENDMAIL_JS_ERROR_CONNECTION_ABORT="A connection abort has occured while fetching the JSON data." +COM_CONFIG_SENDMAIL_JS_ERROR_NO_CONTENT="No content was returned." +COM_CONFIG_SENDMAIL_JS_ERROR_OTHER="An error has occured while fetching the JSON data: HTTP %s status code." +COM_CONFIG_SENDMAIL_JS_ERROR_PARSE="A parse error has occured while processing the following JSON data:
    %s" +COM_CONFIG_SENDMAIL_JS_ERROR_TIMEOUT="A timeout has occured while fetching the JSON data." COM_CONFIG_SENDMAIL_METHOD_MAIL="PHP Mail" COM_CONFIG_SENDMAIL_METHOD_SENDMAIL="Sendmail" COM_CONFIG_SENDMAIL_METHOD_SMTP="SMTP" From 0ecd083c935ffa5674d2d296c12b33791ed1dcf6 Mon Sep 17 00:00:00 2001 From: Constantin Romankiewicz Date: Thu, 7 Apr 2016 13:18:01 +0200 Subject: [PATCH 278/352] Show Tags in Featured layout also above articles. --- components/com_content/views/featured/tmpl/default_item.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/components/com_content/views/featured/tmpl/default_item.php b/components/com_content/views/featured/tmpl/default_item.php index 00cfb99c9e898..27aeafdc270d7 100644 --- a/components/com_content/views/featured/tmpl/default_item.php +++ b/components/com_content/views/featured/tmpl/default_item.php @@ -54,6 +54,9 @@ $this->item, 'params' => $params, 'position' => 'above')); ?> + get('show_tags', 1) && !empty($this->item->tags->itemTags)) : ?> + item->tags->itemTags); ?> + image_intro) && !empty($images->image_intro)) : ?> From 9eedb895298b8fc3a886851396044e11e65fc43c Mon Sep 17 00:00:00 2001 From: Manuel G Date: Thu, 7 Apr 2016 19:20:37 +0200 Subject: [PATCH 279/352] Fix wrong component name "com_user" to "com_users" to restore the missing TOS user registration form field validation --- plugins/user/profile/profile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/user/profile/profile.php b/plugins/user/profile/profile.php index 75a057e46b6d9..7d45e2208f9d0 100644 --- a/plugins/user/profile/profile.php +++ b/plugins/user/profile/profile.php @@ -373,7 +373,7 @@ public function onUserBeforeSave($user, $isnew, $data) $option = JFactory::getApplication()->input->getCmd('option'); $tosarticle = $this->params->get('register_tos_article'); $tosenabled = ($this->params->get('register-require_tos', 0) == 2) ? true : false; - if (($task == 'register') && ($tosenabled) && ($tosarticle) && ($option == 'com_user')) + if (($task == 'register') && ($tosenabled) && ($tosarticle) && ($option == 'com_users')) { // Check that the tos is checked. if ((!($data['profile']['tos']))) From daf065df2c32d79ea188870e79ff047bb9c8e56f Mon Sep 17 00:00:00 2001 From: Bear Date: Fri, 8 Apr 2016 13:42:21 -0500 Subject: [PATCH 280/352] fixed missing alpha.png --- administrator/components/com_media/views/media/tmpl/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_media/views/media/tmpl/default.php b/administrator/components/com_media/views/media/tmpl/default.php index 2a1cfd745dfda..bcf405961f0ab 100644 --- a/administrator/components/com_media/views/media/tmpl/default.php +++ b/administrator/components/com_media/views/media/tmpl/default.php @@ -127,7 +127,7 @@ 'footer' => '' ), - '
    preview
    ' + '
    preview
    ' ); echo JHtml::_( From bad13a8b04017d51d42307e6d988ca78330bcd43 Mon Sep 17 00:00:00 2001 From: Tuan Pham Ngoc Date: Sat, 9 Apr 2016 20:21:01 +0700 Subject: [PATCH 281/352] Fix Deprecated warning in JReCaptcha on PHP7 (#9787) --- plugins/captcha/recaptcha/recaptchalib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/captcha/recaptcha/recaptchalib.php b/plugins/captcha/recaptcha/recaptchalib.php index c77290a1e88bf..f7be8997a0841 100644 --- a/plugins/captcha/recaptcha/recaptchalib.php +++ b/plugins/captcha/recaptcha/recaptchalib.php @@ -51,7 +51,7 @@ class JReCaptcha * * @param string $secret shared secret between site and ReCAPTCHA server. */ - function JReCaptcha($secret) + public function __construct($secret) { if ($secret == null || $secret == "") { From e582dee217a7ce244acd26e822bf3edae2a3eac9 Mon Sep 17 00:00:00 2001 From: Michael Babker Date: Sat, 9 Apr 2016 10:34:05 -0400 Subject: [PATCH 282/352] Remove call to deleteUnexistingFiles() (#9655) --- administrator/components/com_admin/script.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index a41f8aaadf0ad..728217ed3e31a 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -19,7 +19,7 @@ class JoomlaInstallerScript /** * Method to update Joomla! * - * @param JInstallerFile $installer The class calling this method + * @param JInstallerAdapterFile $installer The class calling this method * * @return void */ @@ -31,7 +31,6 @@ public function update($installer) JLog::addLogger($options, JLog::INFO, array('Update', 'databasequery', 'jerror')); JLog::add(JText::_('COM_JOOMLAUPDATE_UPDATE_LOG_DELETE_FILES'), JLog::INFO, 'Update'); - $this->deleteUnexistingFiles(); $this->updateManifestCaches(); $this->updateDatabase(); $this->clearRadCache(); From b14bbd0848d69ea93780166c35c399724ed73c1b Mon Sep 17 00:00:00 2001 From: Michael Babker Date: Sat, 9 Apr 2016 10:34:35 -0400 Subject: [PATCH 283/352] Enable SMTPDebug if JDEBUG is true (#9678) --- libraries/joomla/mail/mail.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libraries/joomla/mail/mail.php b/libraries/joomla/mail/mail.php index 85c09002d9a2a..42fecf90e498a 100644 --- a/libraries/joomla/mail/mail.php +++ b/libraries/joomla/mail/mail.php @@ -51,6 +51,12 @@ public function __construct($exceptions = true) { JLog::add(sprintf('Error in JMail API: %s', $message), JLog::ERROR, 'mail'); }; + + // If debug mode is enabled then set SMTPDebug to the maximum level + if (defined('JDEBUG') && JDEBUG) + { + $this->SMTPDebug = 4; + } } /** From ea3bc13b545e72012473e4425d0cb87756234e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyril=20Rez=C3=A9?= Date: Sat, 9 Apr 2016 20:12:01 +0200 Subject: [PATCH 284/352] Redo Fix modal scrolling #9140 + fix for Batch --- layouts/joomla/modal/main.php | 50 +++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/layouts/joomla/modal/main.php b/layouts/joomla/modal/main.php index 771d6414cf9d1..fb84a78511f60 100644 --- a/layouts/joomla/modal/main.php +++ b/layouts/joomla/modal/main.php @@ -58,21 +58,37 @@ * $('body').removeClass('modal-open') * * Scrolling inside bootstrap modals on small screens (adapt to window viewport and avoid modal off screen). - * - max-height on .modal-body if param height is set but too high for the window viewport height. - * (147 = modal-header height + modal-footer height + 20px padding top and bottom) - * - max-height on .iframe max-height of the modal-body (deducting the 1% of the padding of the modal-body class) + * - max-height .modal-body Max-height for the modal body + * When height of the modal is too high for the window viewport height. + * - max-height .iframe Max-height for the iframe (Deducting the padding of the modal-body) + * When url option is set and height of the iframe is higher than max-height of the modal body. + * + * Fix iOS scrolling inside bootstrap modals + * - overflow-y .modal-body When max-height is set for modal-body * * Specific hack for Bootstrap 2.3.x */ $script[] = "jQuery(document).ready(function($) {"; -$script[] = " $('#" . $selector . "').on('show', function() {"; - -// Set max-height on modal-body. -$script[] = " var modalBodyHeight = $(window).height()-147;"; -$script[] = " $('.modal-body').css('max-height', modalBodyHeight);"; +$script[] = " $('#" . $selector . "').on('shown.bs.modal', function() {"; $script[] = " $('body').addClass('modal-open');"; +// Get height of the modal elements. +$script[] = " var modalHeaderHeight = $('div.modal-header:visible').outerHeight(true);"; +$script[] = " var modalBodyHeightOuter = $('div.modal-body:visible').outerHeight(true);"; +$script[] = " var modalBodyHeight = $('div.modal-body:visible').height();"; +$script[] = " var modalFooterHeight = $('div.modal-footer:visible').outerHeight(true);"; + +// Get padding top (jQuery position().top not working on iOS devices and webkit browsers, so use of Javascript instead) +$script[] = " var padding = document.getElementById('" . $selector . "').offsetTop;"; + +// Calculate max-height of the modal, adapted to window viewport height. +$script[] = " var maxModalHeight = ($(window).height()-(padding*2));"; + +// Calculate max-height for modal-body. +$script[] = " var modalBodyPadding = (modalBodyHeightOuter-modalBodyHeight);"; +$script[] = " var maxModalBodyHeight = maxModalHeight-(modalHeaderHeight+modalFooterHeight+modalBodyPadding);"; + if (isset($params['url'])) { $iframeHtml = JLayoutHelper::render('joomla.modal.iframe', $displayData); @@ -82,12 +98,24 @@ $script[] = " modalBody.find('iframe').remove();"; $script[] = " modalBody.prepend('" . trim($iframeHtml) . "');"; - // Set max-height for iframe. - $script[] = " $('.iframe').css('max-height', modalBodyHeight*0.98);"; + // Set max-height for iframe if needed, to adapt to viewport height. + $script[] = " var iframeHeight = $('.iframe').height();"; + $script[] = " if (iframeHeight > maxModalBodyHeight){;"; + $script[] = " $('.modal-body').css({'max-height': maxModalBodyHeight, 'overflow-y': 'auto'});"; + $script[] = " $('.iframe').css('max-height', maxModalBodyHeight-modalBodyPadding);"; + $script[] = " }"; +} +else +{ + // Set max-height for modal-body if needed, to adapt to viewport height. + $script[] = " if (modalBodyHeight > maxModalBodyHeight){;"; + $script[] = " $('.modal-body').css({'max-height': maxModalBodyHeight, 'overflow-y': 'auto'});"; + $script[] = " }"; } -$script[] = " }).on('hide', function () {"; +$script[] = " }).on('hide.bs.modal', function () {"; $script[] = " $('body').removeClass('modal-open');"; +$script[] = " $('.modal-body').css({'max-height': 'initial', 'overflow-y': 'initial'});"; $script[] = " });"; $script[] = "});"; From 4843cbc380b2c2945ed7e15f05a633cee00946c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyril=20Rez=C3=A9?= Date: Sat, 9 Apr 2016 20:18:36 +0200 Subject: [PATCH 285/352] Redo Fix modal scrolling #9140 + fix for Batch --- administrator/templates/isis/css/template.css | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/templates/isis/css/template.css b/administrator/templates/isis/css/template.css index b42dcb9b02d7a..fcf65dd0dc43e 100644 --- a/administrator/templates/isis/css/template.css +++ b/administrator/templates/isis/css/template.css @@ -8198,5 +8198,4 @@ body.modal-open { } .modal-body { -webkit-overflow-scrolling: touch; - overflow-y: auto !important; } From 5f029850085d09145cfea38eeec4c3ab0b0bbe2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyril=20Rez=C3=A9?= Date: Sat, 9 Apr 2016 20:20:30 +0200 Subject: [PATCH 286/352] Redo Fix modal scrolling #9140 + fix for Batch --- administrator/templates/isis/css/template.css | 3 --- 1 file changed, 3 deletions(-) diff --git a/administrator/templates/isis/css/template.css b/administrator/templates/isis/css/template.css index fcf65dd0dc43e..e938102fd4ffc 100644 --- a/administrator/templates/isis/css/template.css +++ b/administrator/templates/isis/css/template.css @@ -8196,6 +8196,3 @@ body.modal-open { padding: 5px 0; } } -.modal-body { - -webkit-overflow-scrolling: touch; -} From 9fc8589f44c4dd21a584ad17e9363d195e84b411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyril=20Rez=C3=A9?= Date: Sat, 9 Apr 2016 20:21:20 +0200 Subject: [PATCH 287/352] Redo Fix modal scrolling #9140 + fix for Batch --- administrator/templates/isis/less/template.less | 6 ------ 1 file changed, 6 deletions(-) diff --git a/administrator/templates/isis/less/template.less b/administrator/templates/isis/less/template.less index 5872bb9c04461..909190af9c1b7 100644 --- a/administrator/templates/isis/less/template.less +++ b/administrator/templates/isis/less/template.less @@ -1349,9 +1349,3 @@ body.modal-open { padding: 5px 0; } } - -/* Fix iOS scrolling inside bootstrap modals (using iframe) */ -.modal-body { - -webkit-overflow-scrolling: touch; - overflow-y: auto !important; -} From 1796915a3b95a69b740f0574bd680532ccb76578 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyril=20Rez=C3=A9?= Date: Sat, 9 Apr 2016 20:30:34 +0200 Subject: [PATCH 288/352] Redo Fix modal scrolling #9140 + fix for Batch --- templates/protostar/css/template.css | 9 --------- 1 file changed, 9 deletions(-) diff --git a/templates/protostar/css/template.css b/templates/protostar/css/template.css index cbc9db4da033c..faff51485553f 100644 --- a/templates/protostar/css/template.css +++ b/templates/protostar/css/template.css @@ -7521,12 +7521,3 @@ body.modal-open { .well .chzn-container { max-width: 100%; } -@media (max-width: 767px) { - .field-media-wrapper .modal .modal-body { - padding: 5px 0; - } -} -.modal-body { - -webkit-overflow-scrolling: touch; - overflow-y: auto !important; -} From 7ab1d76a96c4a50e1629bd394d6e6219f1484920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyril=20Rez=C3=A9?= Date: Sat, 9 Apr 2016 20:31:12 +0200 Subject: [PATCH 289/352] Redo Fix modal scrolling #9140 + fix for Batch --- templates/protostar/less/template.less | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/templates/protostar/less/template.less b/templates/protostar/less/template.less index c1d9a09b40b8d..bea47807de730 100644 --- a/templates/protostar/less/template.less +++ b/templates/protostar/less/template.less @@ -652,16 +652,3 @@ body.modal-open { max-width: 100%; } } - -/* Corrects the media modal padding on small devices */ -@media (max-width: 767px) { - .field-media-wrapper .modal .modal-body { - padding: 5px 0; - } -} - -/* Fix iOS scrolling inside bootstrap modals (using iframe) */ -.modal-body { - -webkit-overflow-scrolling: touch; - overflow-y: auto !important; -} From a7d619b6eb5e0100dc56fb03325630b3f7091c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyril=20Rez=C3=A9?= Date: Sat, 9 Apr 2016 20:31:49 +0200 Subject: [PATCH 290/352] Redo Fix modal scrolling #9140 + fix for Batch --- administrator/templates/isis/less/template.less | 7 ------- 1 file changed, 7 deletions(-) diff --git a/administrator/templates/isis/less/template.less b/administrator/templates/isis/less/template.less index 909190af9c1b7..8ba2cb48ab615 100644 --- a/administrator/templates/isis/less/template.less +++ b/administrator/templates/isis/less/template.less @@ -1342,10 +1342,3 @@ body.modal-open { .js-pstats-data-details dt { width: 220px; } - -/* Corrects the media modal padding on small devices */ -@media (max-width: 767px) { - .field-media-wrapper .modal .modal-body { - padding: 5px 0; - } -} From f1e0ab5b6d9c8dbd3c63f07cff3f96cd720ea414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyril=20Rez=C3=A9?= Date: Sat, 9 Apr 2016 20:32:30 +0200 Subject: [PATCH 291/352] Redo Fix modal scrolling #9140 + fix for Batch --- administrator/templates/isis/css/template.css | 5 ----- 1 file changed, 5 deletions(-) diff --git a/administrator/templates/isis/css/template.css b/administrator/templates/isis/css/template.css index e938102fd4ffc..70c598b33bf2f 100644 --- a/administrator/templates/isis/css/template.css +++ b/administrator/templates/isis/css/template.css @@ -8191,8 +8191,3 @@ body.modal-open { .js-pstats-data-details dt { width: 220px; } -@media (max-width: 767px) { - .field-media-wrapper .modal .modal-body { - padding: 5px 0; - } -} From 2e057e69ab3a4a38b3cec7b4b710f6743b4da20d Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Sun, 10 Apr 2016 13:04:49 +0100 Subject: [PATCH 292/352] hathor test mail button --- .../hathor/html/com_config/application/default_mail.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/administrator/templates/hathor/html/com_config/application/default_mail.php b/administrator/templates/hathor/html/com_config/application/default_mail.php index a243f7797fcbf..21163c5d35b61 100644 --- a/administrator/templates/hathor/html/com_config/application/default_mail.php +++ b/administrator/templates/hathor/html/com_config/application/default_mail.php @@ -8,6 +8,10 @@ */ defined('_JEXEC') or die; +JHtml::script('system/sendtestmail.js', false, true); +JFactory::getDocument()->addScriptDeclaration(' + var sendtestmail_url = "' . addslashes(JUri::base()) . 'index.php?option=com_config&task=config.sendtestmail.application&format=json&' . JSession::getFormToken() . '=1"; + '); ?>
    @@ -20,5 +24,8 @@ +
    From ffc66e578789ca51167c4605cdfcdd9ff3f2de83 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Sun, 10 Apr 2016 14:01:30 +0100 Subject: [PATCH 293/352] Remove extra space in link --- .../components/com_modules/views/select/tmpl/default.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/administrator/components/com_modules/views/select/tmpl/default.php b/administrator/components/com_modules/views/select/tmpl/default.php index f1099e8eb737b..58ad710dfa82e 100644 --- a/administrator/components/com_modules/views/select/tmpl/default.php +++ b/administrator/components/com_modules/views/select/tmpl/default.php @@ -27,16 +27,14 @@ direction != "rtl") : ?>
  • - - +
  • - - +
  • From 11e5f04bb031d90c46391ec46fad36cdcae93d69 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Sun, 10 Apr 2016 15:53:39 +0100 Subject: [PATCH 294/352] logged in module - remove spaces (#9828) --- administrator/modules/mod_logged/tmpl/default.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/administrator/modules/mod_logged/tmpl/default.php b/administrator/modules/mod_logged/tmpl/default.php index 7c7a38a050f9b..c334efa989869 100644 --- a/administrator/modules/mod_logged/tmpl/default.php +++ b/administrator/modules/mod_logged/tmpl/default.php @@ -24,8 +24,7 @@ editLink)) : ?> - name; ?> - + name; ?> name; ?> From 630c5fa7868bb3728eb21e8d143cecb4824acd57 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Sun, 10 Apr 2016 15:54:25 +0100 Subject: [PATCH 295/352] Admin Status module (#9825) * Remove extra space from admin status module * Update default.php * remove leading space --- .../modules/mod_multilangstatus/tmpl/default.php | 3 +-- administrator/modules/mod_status/tmpl/default.php | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/administrator/modules/mod_multilangstatus/tmpl/default.php b/administrator/modules/mod_multilangstatus/tmpl/default.php index 937175ba3dd4c..b0578cadc8094 100644 --- a/administrator/modules/mod_multilangstatus/tmpl/default.php +++ b/administrator/modules/mod_multilangstatus/tmpl/default.php @@ -19,8 +19,7 @@ ?> diff --git a/administrator/modules/mod_status/tmpl/default.php b/administrator/modules/mod_status/tmpl/default.php index 00fcbe650e301..ce94a45af747c 100644 --- a/administrator/modules/mod_status/tmpl/default.php +++ b/administrator/modules/mod_status/tmpl/default.php @@ -18,7 +18,7 @@ { $output[] = '' . '
    '; @@ -29,7 +29,7 @@ { $output[] = '' . '
    '; @@ -60,7 +60,7 @@ $output[] = '
    ' . ($hideLinks ? '' : '') - . ' ' + . '' . '' . $unread . '' . ($hideLinks ? '' : '') . '
    ' @@ -81,7 +81,7 @@ { $output[] = ''; } From 1f4b32fffae8521717727ca74bf1b5a4a33eb2e5 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Sun, 10 Apr 2016 16:12:44 +0100 Subject: [PATCH 296/352] Hathor - missing submenus (#9823) * add language submenu * add extension submenu --- .../hathor/html/mod_menu/default_enabled.php | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/administrator/templates/hathor/html/mod_menu/default_enabled.php b/administrator/templates/hathor/html/mod_menu/default_enabled.php index 0bdfe6fe283a0..dc5d98ee4ccc2 100644 --- a/administrator/templates/hathor/html/mod_menu/default_enabled.php +++ b/administrator/templates/hathor/html/mod_menu/default_enabled.php @@ -261,7 +261,17 @@ if ($im) { - $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_EXTENSION_MANAGER'), 'index.php?option=com_installer', 'class:install')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_EXTENSION_MANAGER'), 'index.php?option=com_installer', 'class:install'), $im); + + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_INSTALLER_SUBMENU_INSTALL'), 'index.php?option=com_installer', 'class:install')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_INSTALLER_SUBMENU_UPDATE'), 'index.php?option=com_installer&view=update', 'class:install')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_INSTALLER_SUBMENU_MANAGE'), 'index.php?option=com_installer&view=manage', 'class:install')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_INSTALLER_SUBMENU_DISCOVER'), 'index.php?option=com_installer&view=discover', 'class:install')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_INSTALLER_SUBMENU_DATABASE'), 'index.php?option=com_installer&view=database', 'class:install')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_INSTALLER_SUBMENU_WARNINGS'), 'index.php?option=com_installer&view=warnings', 'class:install')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_INSTALLER_SUBMENU_LANGUAGES'), 'index.php?option=com_installer&view=languages', 'class:install')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_INSTALLER_SUBMENU_UPDATESITES'), 'index.php?option=com_installer&view=updatesites', 'class:install')); + $menu->getParent(); $menu->addSeparator(); } @@ -282,7 +292,13 @@ if ($lm) { - $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_LANGUAGE_MANAGER'), 'index.php?option=com_languages', 'class:language')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_LANGUAGE_MANAGER'), 'index.php?option=com_languages', 'class:language'), $lm); + + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_LANGUAGES_SUBMENU_INSTALLED'), 'index.php?option=com_languages&view=installed', 'class:language')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_LANGUAGES_SUBMENU_CONTENT'), 'index.php?option=com_languages&view=languages', 'class:language')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_LANGUAGES_SUBMENU_OVERRIDES'), 'index.php?option=com_languages&view=overrides', 'class:language')); + $menu->getParent(); + } $menu->getParent(); } From b5b7b1977b5a2965bb3216d976593bfbfb228694 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Sun, 10 Apr 2016 16:33:32 +0100 Subject: [PATCH 297/352] Isis login - remove leading space --- administrator/templates/isis/login.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/templates/isis/login.php b/administrator/templates/isis/login.php index c24bfe8e7ba43..50caffda18f03 100644 --- a/administrator/templates/isis/login.php +++ b/administrator/templates/isis/login.php @@ -128,7 +128,7 @@ function colorIsLight($color) ©

    - +
    From ede95ee3400b167a2bd61145dc9e7329705df038 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Sun, 10 Apr 2016 16:45:42 +0100 Subject: [PATCH 298/352] Update default.php --- .../components/com_finder/views/statistics/tmpl/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_finder/views/statistics/tmpl/default.php b/administrator/components/com_finder/views/statistics/tmpl/default.php index c2f6d2b435b4f..960f77bcf612f 100644 --- a/administrator/components/com_finder/views/statistics/tmpl/default.php +++ b/administrator/components/com_finder/views/statistics/tmpl/default.php @@ -14,7 +14,7 @@
    -
    +

    data->term_count, 0, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR')), number_format($this->data->link_count, 0, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR')), number_format($this->data->taxonomy_node_count, 0, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR')), number_format($this->data->taxonomy_branch_count, 0, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR'))); ?>

    From 39a94b199d20b4ddbc7f593209b3db31fed3916f Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Sun, 10 Apr 2016 19:15:44 +0100 Subject: [PATCH 299/352] show only tables with check out items in com_checkin --- administrator/components/com_checkin/models/checkin.php | 6 ++++++ .../components/com_checkin/views/checkin/tmpl/default.php | 8 ++------ administrator/language/en-GB/en-GB.com_checkin.ini | 1 + 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/administrator/components/com_checkin/models/checkin.php b/administrator/components/com_checkin/models/checkin.php index b686166b0b85e..323bdb90e2e33 100644 --- a/administrator/components/com_checkin/models/checkin.php +++ b/administrator/components/com_checkin/models/checkin.php @@ -196,6 +196,12 @@ public function getItems() if ($db->execute()) { $results[$tn] = $db->loadResult(); + + // Show only tables with items to checkin. + if ((int) $results[$tn] === 0) + { + unset($results[$tn]); + } } else { diff --git a/administrator/components/com_checkin/views/checkin/tmpl/default.php b/administrator/components/com_checkin/views/checkin/tmpl/default.php index bd05ba4c48e12..437a0a5090454 100644 --- a/administrator/components/com_checkin/views/checkin/tmpl/default.php +++ b/administrator/components/com_checkin/views/checkin/tmpl/default.php @@ -29,7 +29,7 @@
    items)) : ?>
    - +
    @@ -58,11 +58,7 @@ diff --git a/administrator/language/en-GB/en-GB.com_checkin.ini b/administrator/language/en-GB/en-GB.com_checkin.ini index a66ff22fa36d2..a16b243760790 100644 --- a/administrator/language/en-GB/en-GB.com_checkin.ini +++ b/administrator/language/en-GB/en-GB.com_checkin.ini @@ -16,6 +16,7 @@ COM_CHECKIN_ITEMS_TO_CHECK_IN_DESC="Items to check-in descending" COM_CHECKIN_N_ITEMS_CHECKED_IN_0="No item checked in." COM_CHECKIN_N_ITEMS_CHECKED_IN_1="1 item checked in." COM_CHECKIN_N_ITEMS_CHECKED_IN_MORE="%s items checked in." +COM_CHECKIN_NO_ITEMS="There are no tables with checked out items or there are no tables with checked out items that match your search." COM_CHECKIN_TABLE="%s table" COM_CHECKIN_XML_DESCRIPTION="Check-in Component." JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.
    Inherited - a Global Configuration setting or higher level setting is applied.
    Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
    Allowed will enable the action for this component unless it is overruled by a Global Configuration setting.

    2. Select Save to refresh the calculated settings." \ No newline at end of file From 038f68d7c85163353e7787ff68681eff56fde731 Mon Sep 17 00:00:00 2001 From: Nicola Galgano Date: Mon, 11 Apr 2016 12:59:49 +0200 Subject: [PATCH 300/352] Page Break error after upgrade Joomla 3.5.1 #9766 (#9821) a more simply stupid solution --- .../components/com_content/models/article.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/administrator/components/com_content/models/article.php b/administrator/components/com_content/models/article.php index ecb9555427681..391808f106cc7 100644 --- a/administrator/components/com_content/models/article.php +++ b/administrator/components/com_content/models/article.php @@ -772,4 +772,16 @@ protected function cleanCache($group = null, $client_id = 0) parent::cleanCache('mod_articles_news'); parent::cleanCache('mod_articles_popular'); } + + /** + * Void hit function for pagebreak when editing content from frontend + * + * @return void + * + * @since 3.5.2 + */ + public function hit() + { + return; + } } From df5b4d51ffaa901592b7eec82acfaa8bb3ca4c29 Mon Sep 17 00:00:00 2001 From: Robert Deutz Date: Mon, 11 Apr 2016 13:16:02 +0200 Subject: [PATCH 301/352] Redo of the PR #3190 --- libraries/legacy/model/admin.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libraries/legacy/model/admin.php b/libraries/legacy/model/admin.php index 25e100b59e805..8ba6cc40b042a 100644 --- a/libraries/legacy/model/admin.php +++ b/libraries/legacy/model/admin.php @@ -1004,10 +1004,22 @@ public function publish(&$pks, $value = 1) { // Prune items that you can't change. unset($pks[$i]); + JLog::add(JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED'), JLog::WARNING, 'jerror'); return false; } + + // If the table is checked out by another user, drop it and report to the user trying to change its state. + if (property_exists($table, 'checked_out') && $table->checked_out && ($table->checked_out != $user->id)) + { + JLog::add(JText::_('JLIB_APPLICATION_ERROR_CHECKIN_USER_MISMATCH'), JLog::WARNING, 'jerror'); + + // Prune items that you can't change. + unset($pks[$i]); + + return false; + } } } From 458a605650b796783bc907711b8e427f5007833d Mon Sep 17 00:00:00 2001 From: Robert Deutz Date: Mon, 11 Apr 2016 13:28:43 +0200 Subject: [PATCH 302/352] removed spaces I missed before --- libraries/legacy/model/admin.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/legacy/model/admin.php b/libraries/legacy/model/admin.php index 8ba6cc40b042a..ae71d2ac0cb13 100644 --- a/libraries/legacy/model/admin.php +++ b/libraries/legacy/model/admin.php @@ -1018,8 +1018,8 @@ public function publish(&$pks, $value = 1) // Prune items that you can't change. unset($pks[$i]); - return false; - } + return false; + } } } From c620812a2d154a2300618654cdd7c1a80a15a940 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Mon, 11 Apr 2016 14:56:17 +0100 Subject: [PATCH 303/352] Update filter_manage.xml --- .../com_installer/models/forms/filter_manage.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/administrator/components/com_installer/models/forms/filter_manage.xml b/administrator/components/com_installer/models/forms/filter_manage.xml index 697b04050f84e..320ee339c4795 100644 --- a/administrator/components/com_installer/models/forms/filter_manage.xml +++ b/administrator/components/com_installer/models/forms/filter_manage.xml @@ -10,13 +10,6 @@ description="JSEARCH_FILTER" hint="JSEARCH_FILTER" /> - - - + + + Date: Mon, 11 Apr 2016 18:36:48 +0100 Subject: [PATCH 304/352] Solves #9850 --- .../components/com_templates/models/fields/templatename.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_templates/models/fields/templatename.php b/administrator/components/com_templates/models/fields/templatename.php index aa181b3100cc2..28933654d56c0 100644 --- a/administrator/components/com_templates/models/fields/templatename.php +++ b/administrator/components/com_templates/models/fields/templatename.php @@ -38,7 +38,7 @@ class JFormFieldTemplateName extends JFormFieldList public function getOptions() { $app = JFactory::getApplication(); - $clientId = $app->getUserStateFromRequest('com_templates.styles.filter.client_id', 'filter_client_id', null); + $clientId = $app->getUserStateFromRequest('com_templates.styles.filter.client_id', 'filter_client_id', '*'); $options = TemplatesHelper::getTemplateOptions($clientId); return array_merge(parent::getOptions(), $options); From a23c95960aba57ee627f645bd9382d165ffd56fe Mon Sep 17 00:00:00 2001 From: zero-24 Date: Mon, 11 Apr 2016 20:09:08 +0200 Subject: [PATCH 305/352] A simple doc Block fix for com_users (#9851) We don't include the content plugins. We include the user plugins here! --- administrator/components/com_users/models/group.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_users/models/group.php b/administrator/components/com_users/models/group.php index 8909aef0d1233..dd5f2c4404c77 100644 --- a/administrator/components/com_users/models/group.php +++ b/administrator/components/com_users/models/group.php @@ -135,7 +135,7 @@ protected function preprocessForm(JForm $form, $data, $group = '') */ public function save($data) { - // Include the content plugins for events. + // Include the user plugins for events. JPluginHelper::importPlugin($this->events_map['save']); /** From b001663fd27165c2b834137ffec186703df75ad2 Mon Sep 17 00:00:00 2001 From: George Wilson Date: Mon, 11 Apr 2016 21:39:03 +0100 Subject: [PATCH 306/352] Ensure the plugins variable is reset after each test run --- tests/unit/suites/libraries/joomla/user/JUserHelperTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/suites/libraries/joomla/user/JUserHelperTest.php b/tests/unit/suites/libraries/joomla/user/JUserHelperTest.php index 1a3b6a0997c4b..43810ac131de3 100644 --- a/tests/unit/suites/libraries/joomla/user/JUserHelperTest.php +++ b/tests/unit/suites/libraries/joomla/user/JUserHelperTest.php @@ -52,6 +52,7 @@ protected function setUp() protected function tearDown() { $this->restoreFactoryState(); + TestReflection::setValue('JPluginHelper', 'plugins', null); parent::tearDown(); } From 4a7c9ff70f5ad96e76c039727618770f2f49c6f1 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Mon, 11 Apr 2016 21:58:36 +0100 Subject: [PATCH 307/352] Update redirect.php --- administrator/components/com_redirect/models/fields/redirect.php | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/components/com_redirect/models/fields/redirect.php b/administrator/components/com_redirect/models/fields/redirect.php index 1d108a7c6905e..c63dfecca6089 100644 --- a/administrator/components/com_redirect/models/fields/redirect.php +++ b/administrator/components/com_redirect/models/fields/redirect.php @@ -85,6 +85,7 @@ class JFormFieldRedirect extends JFormFieldList 428 => 'HTTP/1.1 428 Precondition Required', 429 => 'HTTP/1.1 429 Too Many Requests', 431 => 'HTTP/1.1 431 Request Header Fields Too Large', + 451 => 'HTTP/1.1 451 Unavailable For Legal Reasons' 500 => 'HTTP/1.1 500 Internal Server Error', 501 => 'HTTP/1.1 501 Not Implemented', 502 => 'HTTP/1.1 502 Bad Gateway', From d085dd44e358a6135456b5e0c5e2cf9ab7eb0fb4 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Mon, 11 Apr 2016 22:04:18 +0100 Subject: [PATCH 308/352] Update redirect.php --- .../components/com_redirect/models/fields/redirect.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_redirect/models/fields/redirect.php b/administrator/components/com_redirect/models/fields/redirect.php index c63dfecca6089..2752d4d7f690f 100644 --- a/administrator/components/com_redirect/models/fields/redirect.php +++ b/administrator/components/com_redirect/models/fields/redirect.php @@ -85,7 +85,7 @@ class JFormFieldRedirect extends JFormFieldList 428 => 'HTTP/1.1 428 Precondition Required', 429 => 'HTTP/1.1 429 Too Many Requests', 431 => 'HTTP/1.1 431 Request Header Fields Too Large', - 451 => 'HTTP/1.1 451 Unavailable For Legal Reasons' + 451 => 'HTTP/1.1 451 Unavailable For Legal Reasons', 500 => 'HTTP/1.1 500 Internal Server Error', 501 => 'HTTP/1.1 501 Not Implemented', 502 => 'HTTP/1.1 502 Bad Gateway', From 1672ae7325a18d40867ad2fc4da18ab88cdc724c Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Mon, 11 Apr 2016 22:55:10 +0100 Subject: [PATCH 309/352] Update default.php --- .../components/com_messages/views/messages/tmpl/default.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_messages/views/messages/tmpl/default.php b/administrator/components/com_messages/views/messages/tmpl/default.php index 71d503b3fe178..bc6ed8ad0102f 100644 --- a/administrator/components/com_messages/views/messages/tmpl/default.php +++ b/administrator/components/com_messages/views/messages/tmpl/default.php @@ -71,7 +71,7 @@
    - -
    - 0) : ?> - - - - +
    + @@ -94,7 +94,7 @@ $canChange = $user->authorise('core.edit.state', 'com_messages'); ?>
    + message_id); ?> From d886722f64f670c16b8df56ead41863571d6b4f7 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Mon, 11 Apr 2016 23:13:31 +0100 Subject: [PATCH 310/352] Update filter_banners.xml --- .../models/forms/filter_banners.xml | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/administrator/components/com_banners/models/forms/filter_banners.xml b/administrator/components/com_banners/models/forms/filter_banners.xml index a470c4bd65ff8..69d6ebfa5838d 100644 --- a/administrator/components/com_banners/models/forms/filter_banners.xml +++ b/administrator/components/com_banners/models/forms/filter_banners.xml @@ -28,6 +28,16 @@ > + + + JOPTION_SELECT_LANGUAGE - - - Date: Mon, 11 Apr 2016 23:47:12 +0100 Subject: [PATCH 311/352] Update filter_articles.xml --- .../models/forms/filter_articles.xml | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/administrator/components/com_content/models/forms/filter_articles.xml b/administrator/components/com_content/models/forms/filter_articles.xml index 6e40a8e87c584..d94f32052d3e3 100644 --- a/administrator/components/com_content/models/forms/filter_articles.xml +++ b/administrator/components/com_content/models/forms/filter_articles.xml @@ -37,6 +37,15 @@ > + + + - - - - - - + + + Date: Mon, 11 Apr 2016 23:48:53 +0100 Subject: [PATCH 312/352] Update filter_featured.xml --- .../models/forms/filter_featured.xml | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/administrator/components/com_content/models/forms/filter_featured.xml b/administrator/components/com_content/models/forms/filter_featured.xml index 72d975bb24635..ae1c6a4bc4229 100644 --- a/administrator/components/com_content/models/forms/filter_featured.xml +++ b/administrator/components/com_content/models/forms/filter_featured.xml @@ -37,6 +37,15 @@ > + + + - - - - - - + + + Date: Tue, 12 Apr 2016 00:55:52 +0200 Subject: [PATCH 313/352] Fixed joomla/joomla-cms#9859 (redirect update modified date) --- administrator/components/com_redirect/models/link.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/administrator/components/com_redirect/models/link.php b/administrator/components/com_redirect/models/link.php index 12e657b5ec4f4..970e4ec059b74 100644 --- a/administrator/components/com_redirect/models/link.php +++ b/administrator/components/com_redirect/models/link.php @@ -174,12 +174,15 @@ public function activate(&$pks, $url, $comment = null) if (!empty($pks)) { + $date = JFactory::getDate()->toSql(); + // Update the link rows. $query = $db->getQuery(true) ->update($db->quoteName('#__redirect_links')) ->set($db->quoteName('new_url') . ' = ' . $db->quote($url)) ->set($db->quoteName('published') . ' = ' . (int) 1) ->set($db->quoteName('comment') . ' = ' . $db->quote($comment)) + ->set($db->quoteName('modified_date') . ' = ' . $db->quote($date)) ->where($db->quoteName('id') . ' IN (' . implode(',', $pks) . ')'); $db->setQuery($query); From b059fb1cd8437697a6647aafb97989aa5c42202d Mon Sep 17 00:00:00 2001 From: Lukas Polak Date: Tue, 12 Apr 2016 01:19:58 +0200 Subject: [PATCH 314/352] Update link.php Deleted whitespace in line 178 making Travis go crazy --- administrator/components/com_redirect/models/link.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_redirect/models/link.php b/administrator/components/com_redirect/models/link.php index 970e4ec059b74..5861c843fe56f 100644 --- a/administrator/components/com_redirect/models/link.php +++ b/administrator/components/com_redirect/models/link.php @@ -175,7 +175,7 @@ public function activate(&$pks, $url, $comment = null) if (!empty($pks)) { $date = JFactory::getDate()->toSql(); - + // Update the link rows. $query = $db->getQuery(true) ->update($db->quoteName('#__redirect_links')) From 2cc353539815887f9316ca720ec82de015812f15 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 12 Apr 2016 07:12:51 +0100 Subject: [PATCH 315/352] Update en-GB.com_users.ini (#9861) --- administrator/language/en-GB/en-GB.com_users.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_users.ini b/administrator/language/en-GB/en-GB.com_users.ini index 9701cecf6aaef..9312c3b332f5b 100644 --- a/administrator/language/en-GB/en-GB.com_users.ini +++ b/administrator/language/en-GB/en-GB.com_users.ini @@ -164,7 +164,7 @@ COM_USERS_MAIL_DETAILS="Details" COM_USERS_MAIL_EMAIL_SENT_TO_N_USERS="Email sent to %s users." COM_USERS_MAIL_EMAIL_SENT_TO_N_USERS_1="Email sent to one user." COM_USERS_MAIL_FIELD_EMAIL_DISABLED_USERS_DESC="If checked, disabled users will be included when sending mail." -COM_USERS_MAIL_FIELD_EMAIL_DISABLED_USERS_LABEL="Send to Disabled Users." +COM_USERS_MAIL_FIELD_EMAIL_DISABLED_USERS_LABEL="Send to Disabled Users" COM_USERS_MAIL_FIELD_GROUP_DESC="Choose a group to send the mail to." COM_USERS_MAIL_FIELD_GROUP_LABEL="Group:" COM_USERS_MAIL_FIELD_MESSAGE_DESC="Enter a default message." From a23464bd3f7367854efadcb66f1e07bded5f6f5f Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 12 Apr 2016 10:52:54 +0100 Subject: [PATCH 316/352] Update password.php --- libraries/cms/form/rule/password.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/cms/form/rule/password.php b/libraries/cms/form/rule/password.php index 077443272db59..f23ca4bea5feb 100644 --- a/libraries/cms/form/rule/password.php +++ b/libraries/cms/form/rule/password.php @@ -131,7 +131,7 @@ public function test(SimpleXMLElement $element, $value, $group = null, Registry } } - // Minimum number of upper case ASII characters required + // Minimum number of upper case ASCII characters required if (!empty($minimumUppercase)) { $nUppercase = preg_match_all("/[A-Z]/", $value, $umatch); From 5558da9c5e80ee7b5fbfa56fd4946dfb1c0eed5e Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 11:03:57 +0100 Subject: [PATCH 317/352] remove the dot! --- administrator/language/en-GB/en-GB.com_login.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/language/en-GB/en-GB.com_login.ini b/administrator/language/en-GB/en-GB.com_login.ini index ef35f518ff355..c47ae98cf7195 100644 --- a/administrator/language/en-GB/en-GB.com_login.ini +++ b/administrator/language/en-GB/en-GB.com_login.ini @@ -5,6 +5,6 @@ COM_LOGIN="Login" COM_LOGIN_JOOMLA_ADMINISTRATION_LOGIN="Joomla! Administration Login" -COM_LOGIN_RETURN_TO_SITE_HOME_PAGE="Go to site home page." +COM_LOGIN_RETURN_TO_SITE_HOME_PAGE="Go to site home page" COM_LOGIN_VALID="Use a valid username and password to gain access to the Administrator Backend." -COM_LOGIN_XML_DESCRIPTION="This component lets users login to the site." \ No newline at end of file +COM_LOGIN_XML_DESCRIPTION="This component lets users login to the site." From 160e96a705352a00ae336aaa200040b2bd801d71 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 12 Apr 2016 11:57:13 +0100 Subject: [PATCH 318/352] Update config.xml --- administrator/components/com_templates/config.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_templates/config.xml b/administrator/components/com_templates/config.xml index 152ed50e86a65..77dac33c80ed4 100644 --- a/administrator/components/com_templates/config.xml +++ b/administrator/components/com_templates/config.xml @@ -44,7 +44,7 @@ name="source_formats" type="text" label="COM_TEMPLATES_CONFIG_SOURCE_LABEL" description="COM_TEMPLATES_CONFIG_SOURCE_DESC" - default="txt,less,ini,xml,js,php,css" + default="txt,less,ini,xml,js,php,css,sass" extension="com_templates" /> From 057759b623bbc81d3e656085e3ba8536945f8b46 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 12 Apr 2016 11:58:05 +0100 Subject: [PATCH 319/352] Update default.php --- .../components/com_templates/views/template/tmpl/default.php | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/components/com_templates/views/template/tmpl/default.php b/administrator/components/com_templates/views/template/tmpl/default.php index d7f321a3abcea..66bae609eaa75 100644 --- a/administrator/components/com_templates/views/template/tmpl/default.php +++ b/administrator/components/com_templates/views/template/tmpl/default.php @@ -463,6 +463,7 @@ class="well" > + From 459c9c972cb17faa264608bcb75eca44bf2aea3a Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 12 Apr 2016 12:03:20 +0100 Subject: [PATCH 320/352] Revert "Update default.php" This reverts commit 057759b623bbc81d3e656085e3ba8536945f8b46. --- .../components/com_templates/views/template/tmpl/default.php | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_templates/views/template/tmpl/default.php b/administrator/components/com_templates/views/template/tmpl/default.php index 66bae609eaa75..d7f321a3abcea 100644 --- a/administrator/components/com_templates/views/template/tmpl/default.php +++ b/administrator/components/com_templates/views/template/tmpl/default.php @@ -463,7 +463,6 @@ class="well" > - From da4ec9cb79de5c85f6b914a64eb0c37bbe221a34 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 12 Apr 2016 12:03:27 +0100 Subject: [PATCH 321/352] Revert "Update config.xml" This reverts commit 160e96a705352a00ae336aaa200040b2bd801d71. --- administrator/components/com_templates/config.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_templates/config.xml b/administrator/components/com_templates/config.xml index 77dac33c80ed4..152ed50e86a65 100644 --- a/administrator/components/com_templates/config.xml +++ b/administrator/components/com_templates/config.xml @@ -44,7 +44,7 @@ name="source_formats" type="text" label="COM_TEMPLATES_CONFIG_SOURCE_LABEL" description="COM_TEMPLATES_CONFIG_SOURCE_DESC" - default="txt,less,ini,xml,js,php,css,sass" + default="txt,less,ini,xml,js,php,css" extension="com_templates" /> From f70672463f1d099d89f8971c8855fd787661b3b1 Mon Sep 17 00:00:00 2001 From: Octavian Cinciu Date: Tue, 12 Apr 2016 16:01:57 +0300 Subject: [PATCH 322/352] Instructions for full screen CodeMirror #9870 --- .../editors/codemirror/layouts/editors/codemirror/element.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/editors/codemirror/layouts/editors/codemirror/element.php b/plugins/editors/codemirror/layouts/editors/codemirror/element.php index 48defd3f2671b..a024a17a6a3d2 100644 --- a/plugins/editors/codemirror/layouts/editors/codemirror/element.php +++ b/plugins/editors/codemirror/layouts/editors/codemirror/element.php @@ -27,6 +27,8 @@ '); ?> +

    get('fullScreen', 'F10')); ?>

    + ', $content, ''; ?> buttons; ?> From 1c601d3f817508c641bda5b0dd903a7aee4d8589 Mon Sep 17 00:00:00 2001 From: Lukas Polak Date: Tue, 12 Apr 2016 15:18:20 +0200 Subject: [PATCH 323/352] Update link.php Created a separate method for duplication of URLs, because the inner logic is different from activating a URL.The activate method is left the same as before this PR as it worked correctly (enabling a record does not change modified date of the recor) --- .../components/com_redirect/models/link.php | 63 ++++++++++++++++++- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_redirect/models/link.php b/administrator/components/com_redirect/models/link.php index 5861c843fe56f..9bc86d96d1aba 100644 --- a/administrator/components/com_redirect/models/link.php +++ b/administrator/components/com_redirect/models/link.php @@ -174,16 +174,74 @@ public function activate(&$pks, $url, $comment = null) if (!empty($pks)) { - $date = JFactory::getDate()->toSql(); - // Update the link rows. $query = $db->getQuery(true) ->update($db->quoteName('#__redirect_links')) ->set($db->quoteName('new_url') . ' = ' . $db->quote($url)) ->set($db->quoteName('published') . ' = ' . (int) 1) ->set($db->quoteName('comment') . ' = ' . $db->quote($comment)) + ->where($db->quoteName('id') . ' IN (' . implode(',', $pks) . ')'); + $db->setQuery($query); + + try + { + $db->execute(); + } + catch (RuntimeException $e) + { + $this->setError($e->getMessage()); + + return false; + } + } + + return true; + } + + /** + * Method to duplicate URL links. + * + * @param array &$pks An array of link ids. + * @param string $url The new URL to set for the redirect. + * @param string $comment A comment for the redirect links. + * + * @return boolean Returns true on success, false on failure. + * + * @since 3.5 + */ + public function duplicateUrls(&$pks, $url, $comment = null) + { + $user = JFactory::getUser(); + $db = $this->getDbo(); + + // Sanitize the ids. + $pks = (array) $pks; + JArrayHelper::toInteger($pks); + + // Access checks. + if (!$user->authorise('core.edit', 'com_redirect')) + { + $pks = array(); + $this->setError(JText::_('JLIB_APPLICATION_ERROR_EDIT_NOT_PERMITTED')); + + return false; + } + + if (!empty($pks)) + { + $date = JFactory::getDate()->toSql(); + + // Update the link rows. + $query = $db->getQuery(true) + ->update($db->quoteName('#__redirect_links')) + ->set($db->quoteName('new_url') . ' = ' . $db->quote($url)) ->set($db->quoteName('modified_date') . ' = ' . $db->quote($date)) ->where($db->quoteName('id') . ' IN (' . implode(',', $pks) . ')'); + + if(!empty($comment)) + { + $query->set($db->quoteName('comment') . ' = ' . $db->quote($comment)); + } $db->setQuery($query); try @@ -200,4 +258,5 @@ public function activate(&$pks, $url, $comment = null) return true; } + } From 79b9ebda97fb6165ad36d57f893eadb105627ab1 Mon Sep 17 00:00:00 2001 From: Lukas Polak Date: Tue, 12 Apr 2016 15:20:51 +0200 Subject: [PATCH 324/352] Update links.php Added a separate method to handle duplication of URLs --- .../com_redirect/controllers/links.php | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/administrator/components/com_redirect/controllers/links.php b/administrator/components/com_redirect/controllers/links.php index 159f163415eba..2ba0c9bd2b2df 100644 --- a/administrator/components/com_redirect/controllers/links.php +++ b/administrator/components/com_redirect/controllers/links.php @@ -57,6 +57,47 @@ public function activate() $this->setRedirect('index.php?option=com_redirect&view=links'); } + /** + * Method to duplicate URLs in records. + * + * @return void. + * + * @since 3.5 + */ + public function duplicateUrls() + { + // Check for request forgeries. + JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); + + $ids = $this->input->get('cid', array(), 'array'); + $newUrl = $this->input->getString('new_url'); + $comment = $this->input->getString('comment'); + + if (empty($ids)) + { + JError::raiseWarning(500, JText::_('COM_REDIRECT_NO_ITEM_SELECTED')); + } + else + { + // Get the model. + $model = $this->getModel(); + + JArrayHelper::toInteger($ids); + + // Remove the items. + if (!$model->duplicateUrls($ids, $newUrl, $comment)) + { + JError::raiseWarning(500, $model->getError()); + } + else + { + $this->setMessage(JText::plural('COM_REDIRECT_N_LINKS_UPDATED', count($ids))); + } + } + + $this->setRedirect('index.php?option=com_redirect&view=links'); + } + /** * Proxy for getModel. * From 1e24439722c1ce1f5e642abdb03e62ac41531cb4 Mon Sep 17 00:00:00 2001 From: Lukas Polak Date: Tue, 12 Apr 2016 15:21:37 +0200 Subject: [PATCH 325/352] Update default_addform.php Changed task name --- .../com_redirect/views/links/tmpl/default_addform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_redirect/views/links/tmpl/default_addform.php b/administrator/components/com_redirect/views/links/tmpl/default_addform.php index da439adead5f0..f1ea6b3989942 100644 --- a/administrator/components/com_redirect/views/links/tmpl/default_addform.php +++ b/administrator/components/com_redirect/views/links/tmpl/default_addform.php @@ -32,7 +32,7 @@ - + From ba01aefe2138e29a94930a78aa7518500b943211 Mon Sep 17 00:00:00 2001 From: Lukas Polak Date: Tue, 12 Apr 2016 16:00:44 +0200 Subject: [PATCH 326/352] Update link.php fixed coding style error for Travis --- administrator/components/com_redirect/models/link.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_redirect/models/link.php b/administrator/components/com_redirect/models/link.php index 9bc86d96d1aba..28dc5ea255105 100644 --- a/administrator/components/com_redirect/models/link.php +++ b/administrator/components/com_redirect/models/link.php @@ -238,7 +238,7 @@ public function duplicateUrls(&$pks, $url, $comment = null) ->set($db->quoteName('modified_date') . ' = ' . $db->quote($date)) ->where($db->quoteName('id') . ' IN (' . implode(',', $pks) . ')'); - if(!empty($comment)) + if (!empty($comment)) { $query->set($db->quoteName('comment') . ' = ' . $db->quote($comment)); } From 02bdead9e53af23ac185af3c16563dc71fe12971 Mon Sep 17 00:00:00 2001 From: Lodder Date: Tue, 12 Apr 2016 15:15:20 +0100 Subject: [PATCH 327/352] Quick-fix for backend submenu dropdown position (#9872) --- administrator/templates/isis/js/template.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/administrator/templates/isis/js/template.js b/administrator/templates/isis/js/template.js index 86fb1adbcc599..3fe9b6d5c2465 100644 --- a/administrator/templates/isis/js/template.js +++ b/administrator/templates/isis/js/template.js @@ -64,7 +64,7 @@ $('#menu > li > a').on('click mouseenter', function() { - menuWidth = $(this).next('ul').width() - 10; + menuWidth = $(this).next('ul').outerWidth(); emptyMenu.empty().hide(); }); @@ -74,15 +74,15 @@ var $self = $(this); var dropdown = $self.next('.dropdown-menu'); var offset = $self.offset(); - var scroll = $(window).scrollTop(); - var width = menuWidth; + var scroll = $(window).scrollTop() + 5; + var width = menuWidth - 13; // Set the submenu position if ($('html').attr('dir') == 'rtl') { emptyMenu.css({ top : offset.top - scroll, - left: offset.left - width + left: offset.left - width }); } else @@ -108,7 +108,7 @@ emptyMenu.empty().hide(); }); - + /** * USED IN: All views with toolbar and sticky bar enabled */ From 16ae6d9303a25b798b3b654c61cef51017f6f33d Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 16:56:16 +0100 Subject: [PATCH 328/352] add message states field type --- .../models/fields/messagestates.php | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 administrator/components/com_messages/models/fields/messagestates.php diff --git a/administrator/components/com_messages/models/fields/messagestates.php b/administrator/components/com_messages/models/fields/messagestates.php new file mode 100644 index 0000000000000..bf3acd6299677 --- /dev/null +++ b/administrator/components/com_messages/models/fields/messagestates.php @@ -0,0 +1,46 @@ + Date: Tue, 12 Apr 2016 16:56:50 +0100 Subject: [PATCH 329/352] Add searchtools filters xml --- .../models/forms/filter_messages.xml | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 administrator/components/com_messages/models/forms/filter_messages.xml diff --git a/administrator/components/com_messages/models/forms/filter_messages.xml b/administrator/components/com_messages/models/forms/filter_messages.xml new file mode 100644 index 0000000000000..77753c310eadd --- /dev/null +++ b/administrator/components/com_messages/models/forms/filter_messages.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + From 0f535e5ab53b8aea1de4ee627016ade9dc546125 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 16:58:41 +0100 Subject: [PATCH 330/352] add changes to the the messages model --- .../components/com_messages/models/messages.php | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/administrator/components/com_messages/models/messages.php b/administrator/components/com_messages/models/messages.php index 56a22b7c4eb7a..2fb63d8adb21a 100644 --- a/administrator/components/com_messages/models/messages.php +++ b/administrator/components/com_messages/models/messages.php @@ -58,17 +58,15 @@ public function __construct($config = array()) * * @since 1.6 */ - protected function populateState($ordering = null, $direction = null) + protected function populateState($ordering = 'a.date_time', $direction = 'desc') { // Load the filter state. - $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); - $this->setState('filter.search', $search); + $this->setState('filter.search', $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search', '', 'string')); - $state = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state', '', 'string'); - $this->setState('filter.state', $state); + $this->setState('filter.state', $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state', '', 'cmd')); // List state information. - parent::populateState('a.date_time', 'desc'); + parent::populateState($ordering, $direction); } /** @@ -128,7 +126,7 @@ protected function getListQuery() { $query->where('a.state = ' . (int) $state); } - elseif ($state === '') + else if ($state !== '*') { $query->where('(a.state IN (0, 1))'); } From a5475d9fdd770c20f2071164381277ada8eefa7f Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 16:59:20 +0100 Subject: [PATCH 331/352] add changes to the messages view html file --- .../components/com_messages/views/messages/view.html.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/administrator/components/com_messages/views/messages/view.html.php b/administrator/components/com_messages/views/messages/view.html.php index 9ff87f4dca158..21f11321af087 100644 --- a/administrator/components/com_messages/views/messages/view.html.php +++ b/administrator/components/com_messages/views/messages/view.html.php @@ -33,9 +33,11 @@ class MessagesViewMessages extends JViewLegacy */ public function display($tpl = null) { - $this->items = $this->get('Items'); - $this->pagination = $this->get('Pagination'); - $this->state = $this->get('State'); + $this->items = $this->get('Items'); + $this->pagination = $this->get('Pagination'); + $this->state = $this->get('State'); + $this->filterForm = $this->get('FilterForm'); + $this->activeFilters = $this->get('ActiveFilters'); // Check for errors. if (count($errors = $this->get('Errors'))) From 6060851560c43d84147da22432abe5d84557f633 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 16:59:52 +0100 Subject: [PATCH 332/352] add searchtools to com_messages messages template --- .../views/messages/tmpl/default.php | 46 ++++++------------- 1 file changed, 15 insertions(+), 31 deletions(-) diff --git a/administrator/components/com_messages/views/messages/tmpl/default.php b/administrator/components/com_messages/views/messages/tmpl/default.php index 71d503b3fe178..18d364221941e 100644 --- a/administrator/components/com_messages/views/messages/tmpl/default.php +++ b/administrator/components/com_messages/views/messages/tmpl/default.php @@ -40,23 +40,9 @@
    - -
    - -
    - - -
    -
    - -
    -
    -
    + + $this)); ?> +
    items)) : ?>
    @@ -65,26 +51,26 @@ - - - - - - @@ -94,7 +80,7 @@ $canChange = $user->authorise('core.edit.state', 'com_messages'); ?> - - @@ -118,8 +104,6 @@
    - -
    From 39616d605791f9f22fe82950f01ae80cfe82eaa4 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 17:10:53 +0100 Subject: [PATCH 333/352] add new language strings --- administrator/language/en-GB/en-GB.com_messages.ini | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_messages.ini b/administrator/language/en-GB/en-GB.com_messages.ini index 256189ec90ad6..f987e093f25f0 100644 --- a/administrator/language/en-GB/en-GB.com_messages.ini +++ b/administrator/language/en-GB/en-GB.com_messages.ini @@ -27,9 +27,17 @@ COM_MESSAGES_FIELD_SUBJECT_LABEL="Subject" COM_MESSAGES_FIELD_USER_ID_FROM_LABEL="From" COM_MESSAGES_FIELD_USER_ID_TO_DESC="You must select a recipient." COM_MESSAGES_FIELD_USER_ID_TO_LABEL="Recipient" +COM_MESSAGES_FILTER_STATES_DESC="Filter by message state" +COM_MESSAGES_FILTER_STATES_LABEL="State" COM_MESSAGES_HEADING_FROM="From" +COM_MESSAGES_HEADING_FROM_ASC="From ascending" +COM_MESSAGES_HEADING_FROM_DESC="From descending" COM_MESSAGES_HEADING_READ="Read" +COM_MESSAGES_HEADING_READ_ASC="Read ascending" +COM_MESSAGES_HEADING_READ_DESC="Read descending" COM_MESSAGES_HEADING_SUBJECT="Subject" +COM_MESSAGES_HEADING_SUBJECT_ASC="Subject ascending" +COM_MESSAGES_HEADING_SUBJECT_DESC="Subject descending" COM_MESSAGES_INVALID_REPLY_ID="Invalid recipient" COM_MESSAGES_MANAGER_MESSAGES="Private Messages" COM_MESSAGES_MARK_AS_READ="Mark As Read" @@ -61,4 +69,4 @@ COM_MESSAGES_VIEW_PRIVATE_MESSAGE="Private Messages: View" COM_MESSAGES_WRITE_PRIVATE_MESSAGE="Private Messages: Write" COM_MESSAGES_XML_DESCRIPTION="Component for private messaging support in Backend." JLIB_APPLICATION_SAVE_SUCCESS="Message successfully sent." -JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.
    Inherited - a Global Configuration setting or higher level setting is applied.
    Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
    Allowed will enable the action for this component unless it is overruled by a Global Configuration setting.

    2. Select Save to refresh the calculated settings." \ No newline at end of file +JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.
    Inherited - a Global Configuration setting or higher level setting is applied.
    Denied always wins - whatever is set at the Global or higher level and applies to all child elements.
    Allowed will enable the action for this component unless it is overruled by a Global Configuration setting.

    2. Select Save to refresh the calculated settings." From 65cb116ad3d0924af8a19809a2b9583f2b105353 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 17:32:02 +0100 Subject: [PATCH 334/352] travis --- administrator/components/com_messages/models/messages.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_messages/models/messages.php b/administrator/components/com_messages/models/messages.php index 2fb63d8adb21a..87f433cbacbc8 100644 --- a/administrator/components/com_messages/models/messages.php +++ b/administrator/components/com_messages/models/messages.php @@ -126,7 +126,7 @@ protected function getListQuery() { $query->where('a.state = ' . (int) $state); } - else if ($state !== '*') + elseif ($state !== '*') { $query->where('(a.state IN (0, 1))'); } From 652d87b806848d3e59de7a0f9295acf9f0476f2a Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 17:44:51 +0100 Subject: [PATCH 335/352] optimizations --- .../com_messages/models/fields/messagestates.php | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/administrator/components/com_messages/models/fields/messagestates.php b/administrator/components/com_messages/models/fields/messagestates.php index bf3acd6299677..83a498458e127 100644 --- a/administrator/components/com_messages/models/fields/messagestates.php +++ b/administrator/components/com_messages/models/fields/messagestates.php @@ -15,7 +15,7 @@ /** * Form Field class for the Joomla Framework. * - * @since 1.6 + * @since 3.5.2 */ class JFormFieldMessageStates extends JFormFieldList { @@ -36,11 +36,7 @@ class JFormFieldMessageStates extends JFormFieldList */ protected function getOptions() { - $options = MessagesHelper::getStateOptions(); - - // Merge any additional options in the XML definition. - $options = array_merge(parent::getOptions(), $options); - - return $options; + // Merge state options with any additional options in the XML definition. + return array_merge(parent::getOptions(), MessagesHelper::getStateOptions()); } } From b36274af48db0464ab5ffc3183ba35708934ca85 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 17:45:31 +0100 Subject: [PATCH 336/352] better code comment --- .../components/com_messages/models/fields/messagestates.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/administrator/components/com_messages/models/fields/messagestates.php b/administrator/components/com_messages/models/fields/messagestates.php index 83a498458e127..fc944700ae6aa 100644 --- a/administrator/components/com_messages/models/fields/messagestates.php +++ b/administrator/components/com_messages/models/fields/messagestates.php @@ -12,6 +12,7 @@ JFormHelper::loadFieldClass('list'); JLoader::register('MessagesHelper', JPATH_ADMINISTRATOR . '/components/com_messages/helpers/messages.php'); + /** * Form Field class for the Joomla Framework. * @@ -22,7 +23,7 @@ class JFormFieldMessageStates extends JFormFieldList /** * The form field type. * - * @var string + * @var string * @since 3.5.2 */ protected $type = 'MessageStates'; From 2980df6de8aeb675ca7c23de3ae103175fdfb38b Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 17:45:52 +0100 Subject: [PATCH 337/352] add a dot --- administrator/language/en-GB/en-GB.com_messages.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_messages.ini b/administrator/language/en-GB/en-GB.com_messages.ini index f987e093f25f0..394e0b5b8abef 100644 --- a/administrator/language/en-GB/en-GB.com_messages.ini +++ b/administrator/language/en-GB/en-GB.com_messages.ini @@ -27,7 +27,7 @@ COM_MESSAGES_FIELD_SUBJECT_LABEL="Subject" COM_MESSAGES_FIELD_USER_ID_FROM_LABEL="From" COM_MESSAGES_FIELD_USER_ID_TO_DESC="You must select a recipient." COM_MESSAGES_FIELD_USER_ID_TO_LABEL="Recipient" -COM_MESSAGES_FILTER_STATES_DESC="Filter by message state" +COM_MESSAGES_FILTER_STATES_DESC="Filter by message state." COM_MESSAGES_FILTER_STATES_LABEL="State" COM_MESSAGES_HEADING_FROM="From" COM_MESSAGES_HEADING_FROM_ASC="From ascending" From dbafbcbb35f521b3778d775826943b4042fe4ca0 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 17:46:40 +0100 Subject: [PATCH 338/352] com_messages not com_newsfeeds ... copy/paste error --- .../components/com_messages/models/fields/messagestates.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_messages/models/fields/messagestates.php b/administrator/components/com_messages/models/fields/messagestates.php index fc944700ae6aa..fb0601ea934d1 100644 --- a/administrator/components/com_messages/models/fields/messagestates.php +++ b/administrator/components/com_messages/models/fields/messagestates.php @@ -1,7 +1,7 @@ Date: Tue, 12 Apr 2016 21:02:56 +0200 Subject: [PATCH 339/352] Fix overlaying alert area in hathor template In the Hathor template, the permissions / rules fieldset is overlapped partially by the alert-info. See this on every article or category view. After applying the patch, the information is below the rules-fieldset. --- libraries/joomla/form/fields/rules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/joomla/form/fields/rules.php b/libraries/joomla/form/fields/rules.php index 8ba3b0c6754c3..69b262f4fa790 100644 --- a/libraries/joomla/form/fields/rules.php +++ b/libraries/joomla/form/fields/rules.php @@ -374,7 +374,7 @@ protected function getInput() } $html[] = ''; - + $html[] = '
    '; $html[] = '
    '; if ($section == 'component' || $section == null) From 6264d68ea7eb93ada4be7025d2bca69727f37b63 Mon Sep 17 00:00:00 2001 From: Brian Teeman Date: Tue, 12 Apr 2016 22:41:33 +0100 Subject: [PATCH 340/352] remove CCOM and replace with COM --- administrator/language/en-GB/en-GB.com_joomlaupdate.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini index b7a14c049829e..a36d1527058e0 100644 --- a/administrator/language/en-GB/en-GB.com_joomlaupdate.ini +++ b/administrator/language/en-GB/en-GB.com_joomlaupdate.ini @@ -29,7 +29,7 @@ COM_JOOMLAUPDATE_VIEW_COMPLETE_MESSAGE="Your site has been successfully updated. COM_JOOMLAUPDATE_VIEW_DEFAULT_DOWNLOAD_IN_PROGRESS="Downloading update file. Please wait ..." COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_DOWNLOAD_URL="We can't find a download URL" COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_DOWNLOAD_URL_DESC="An update to Joomla %1$s was found, but it wasn't possible to fetch the download URL for that update. There are two possibilities why this happens:
    - Your host doesn't support the minimum requirements for Joomla %1$s and there is no alternative download for your configuration available.
    - There is a problem with Joomla Update Server.

    Please try to download the update package from the official Joomla download page and use the Upload and Install tab." -CCOM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_DIRECTORY="FTP Root" +COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_DIRECTORY="FTP Root" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_HOSTNAME="FTP Host" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_PASSWORD="FTP Password" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_PORT="FTP Port" From 208e4a4808f74f7f15d3698641e44e76b94c4f5f Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 22:52:41 +0100 Subject: [PATCH 341/352] Rename JCacheStorageXCacheTest.php to JCacheStorageXcacheTest.php --- .../{JCacheStorageXCacheTest.php => JCacheStorageXcacheTest.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/unit/suites/libraries/joomla/cache/storage/{JCacheStorageXCacheTest.php => JCacheStorageXcacheTest.php} (100%) diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXCacheTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXcacheTest.php similarity index 100% rename from tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXCacheTest.php rename to tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXcacheTest.php From 933080008e8518fc14a3c46b9e717813e1a62906 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 23:00:06 +0100 Subject: [PATCH 342/352] again?!? revert filename change --- .../{JCacheStorageXCacheTest.php => JCacheStorageXcacheTest.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/unit/suites/libraries/joomla/cache/storage/{JCacheStorageXCacheTest.php => JCacheStorageXcacheTest.php} (100%) diff --git a/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXCacheTest.php b/tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXcacheTest.php similarity index 100% rename from tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXCacheTest.php rename to tests/unit/suites/libraries/joomla/cache/storage/JCacheStorageXcacheTest.php From 1e5b578510ce04f24d00d029a922d21b7f98259b Mon Sep 17 00:00:00 2001 From: zero-24 Date: Wed, 13 Apr 2016 00:05:16 +0200 Subject: [PATCH 343/352] Apply btn-group-yesno class for memcached options (#9412) --- .../components/com_config/model/form/application.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_config/model/form/application.xml b/administrator/components/com_config/model/form/application.xml index 7ee947e7490a3..a6242254cd649 100644 --- a/administrator/components/com_config/model/form/application.xml +++ b/administrator/components/com_config/model/form/application.xml @@ -97,7 +97,7 @@ Date: Wed, 13 Apr 2016 07:06:01 +0900 Subject: [PATCH 344/352] CodeMirror 5.13 (#9535) --- .../codemirror/addon/display/placeholder.js | 2 + .../addon/display/placeholder.min.js | 2 +- .../codemirror/addon/hint/show-hint.js | 11 ++- .../codemirror/addon/hint/show-hint.min.js | 2 +- .../editors/codemirror/addon/hint/sql-hint.js | 57 +++++++++---- .../codemirror/addon/hint/sql-hint.min.js | 2 +- media/editors/codemirror/addon/lint/lint.js | 15 +++- .../editors/codemirror/addon/lint/lint.min.js | 2 +- media/editors/codemirror/addon/merge/merge.js | 6 +- .../codemirror/addon/merge/merge.min.js | 2 +- .../addon/scroll/simplescrollbars.js | 18 ++-- .../addon/scroll/simplescrollbars.min.js | 2 +- media/editors/codemirror/keymap/vim.js | 15 ++-- media/editors/codemirror/keymap/vim.min.js | 6 +- media/editors/codemirror/lib/addons.js | 33 +++---- media/editors/codemirror/lib/addons.min.js | 8 +- media/editors/codemirror/lib/codemirror.js | 21 +++-- .../editors/codemirror/lib/codemirror.min.js | 10 +-- media/editors/codemirror/mode/clike/clike.js | 2 +- .../codemirror/mode/clike/clike.min.js | 2 +- .../codemirror/mode/clojure/clojure.js | 1 + .../codemirror/mode/clojure/clojure.min.js | 2 +- media/editors/codemirror/mode/dart/dart.js | 27 ++++++ .../editors/codemirror/mode/dart/dart.min.js | 2 +- media/editors/codemirror/mode/dylan/dylan.js | 85 +++++++++++++++---- .../codemirror/mode/dylan/dylan.min.js | 2 +- .../mode/haskell-literate/haskell-literate.js | 2 +- media/editors/codemirror/mode/jsx/jsx.js | 6 +- media/editors/codemirror/mode/jsx/jsx.min.js | 2 +- .../codemirror/mode/markdown/markdown.js | 27 +++--- .../codemirror/mode/markdown/markdown.min.js | 2 +- media/editors/codemirror/mode/meta.js | 9 +- media/editors/codemirror/mode/meta.min.js | 2 +- .../codemirror/mode/protobuf/protobuf.js | 68 +++++++++++++++ .../codemirror/mode/protobuf/protobuf.min.js | 1 + media/editors/codemirror/mode/r/r.js | 2 + media/editors/codemirror/mode/r/r.min.js | 2 +- media/editors/codemirror/mode/swift/swift.js | 2 +- media/editors/codemirror/mode/tcl/tcl.js | 32 +++---- media/editors/codemirror/mode/tcl/tcl.min.js | 2 +- media/editors/codemirror/mode/troff/troff.js | 4 +- .../codemirror/mode/troff/troff.min.js | 2 +- media/editors/codemirror/mode/twig/twig.js | 15 +++- .../editors/codemirror/mode/twig/twig.min.js | 2 +- .../codemirror/mode/velocity/velocity.js | 2 +- .../codemirror/mode/velocity/velocity.min.js | 2 +- .../mode/yaml-frontmatter/yaml-frontmatter.js | 2 +- media/editors/codemirror/theme/night.css | 3 +- plugins/editors/codemirror/codemirror.xml | 2 +- 49 files changed, 373 insertions(+), 157 deletions(-) create mode 100644 media/editors/codemirror/mode/protobuf/protobuf.js create mode 100644 media/editors/codemirror/mode/protobuf/protobuf.min.js diff --git a/media/editors/codemirror/addon/display/placeholder.js b/media/editors/codemirror/addon/display/placeholder.js index babddfb1fea09..2f8b1f84ae0cf 100644 --- a/media/editors/codemirror/addon/display/placeholder.js +++ b/media/editors/codemirror/addon/display/placeholder.js @@ -14,10 +14,12 @@ if (val && !prev) { cm.on("blur", onBlur); cm.on("change", onChange); + cm.on("swapDoc", onChange); onChange(cm); } else if (!val && prev) { cm.off("blur", onBlur); cm.off("change", onChange); + cm.off("swapDoc", onChange); clearPlaceholder(cm); var wrapper = cm.getWrapperElement(); wrapper.className = wrapper.className.replace(" CodeMirror-empty", ""); diff --git a/media/editors/codemirror/addon/display/placeholder.min.js b/media/editors/codemirror/addon/display/placeholder.min.js index aacb883020ae2..6e7e9d0c553cb 100644 --- a/media/editors/codemirror/addon/display/placeholder.min.js +++ b/media/editors/codemirror/addon/display/placeholder.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function b(a){a.state.placeholder&&(a.state.placeholder.parentNode.removeChild(a.state.placeholder),a.state.placeholder=null)}function c(a){b(a);var c=a.state.placeholder=document.createElement("pre");c.style.cssText="height: 0; overflow: visible",c.className="CodeMirror-placeholder";var d=a.getOption("placeholder");"string"==typeof d&&(d=document.createTextNode(d)),c.appendChild(d),a.display.lineSpace.insertBefore(c,a.display.lineSpace.firstChild)}function d(a){f(a)&&c(a)}function e(a){var d=a.getWrapperElement(),e=f(a);d.className=d.className.replace(" CodeMirror-empty","")+(e?" CodeMirror-empty":""),e?c(a):b(a)}function f(a){return 1===a.lineCount()&&""===a.getLine(0)}a.defineOption("placeholder","",function(c,f,g){var h=g&&g!=a.Init;if(f&&!h)c.on("blur",d),c.on("change",e),e(c);else if(!f&&h){c.off("blur",d),c.off("change",e),b(c);var i=c.getWrapperElement();i.className=i.className.replace(" CodeMirror-empty","")}f&&!c.hasFocus()&&d(c)})}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function b(a){a.state.placeholder&&(a.state.placeholder.parentNode.removeChild(a.state.placeholder),a.state.placeholder=null)}function c(a){b(a);var c=a.state.placeholder=document.createElement("pre");c.style.cssText="height: 0; overflow: visible",c.className="CodeMirror-placeholder";var d=a.getOption("placeholder");"string"==typeof d&&(d=document.createTextNode(d)),c.appendChild(d),a.display.lineSpace.insertBefore(c,a.display.lineSpace.firstChild)}function d(a){f(a)&&c(a)}function e(a){var d=a.getWrapperElement(),e=f(a);d.className=d.className.replace(" CodeMirror-empty","")+(e?" CodeMirror-empty":""),e?c(a):b(a)}function f(a){return 1===a.lineCount()&&""===a.getLine(0)}a.defineOption("placeholder","",function(c,f,g){var h=g&&g!=a.Init;if(f&&!h)c.on("blur",d),c.on("change",e),c.on("swapDoc",e),e(c);else if(!f&&h){c.off("blur",d),c.off("change",e),c.off("swapDoc",e),b(c);var i=c.getWrapperElement();i.className=i.className.replace(" CodeMirror-empty","")}f&&!c.hasFocus()&&d(c)})}); \ No newline at end of file diff --git a/media/editors/codemirror/addon/hint/show-hint.js b/media/editors/codemirror/addon/hint/show-hint.js index cbe3b39a30116..7661f6c2cd3a4 100644 --- a/media/editors/codemirror/addon/hint/show-hint.js +++ b/media/editors/codemirror/addon/hint/show-hint.js @@ -121,11 +121,13 @@ finishUpdate: function(data, first) { if (this.data) CodeMirror.signal(this.data, "update"); - if (data && this.data && CodeMirror.cmpPos(data.from, this.data.from)) data = null; - this.data = data; var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle); if (this.widget) this.widget.close(); + + if (data && this.data && isNewCompletion(this.data, data)) return; + this.data = data; + if (data && data.list.length) { if (picked && data.list.length == 1) { this.pick(data, 0); @@ -137,6 +139,11 @@ } }; + function isNewCompletion(old, nw) { + var moved = CodeMirror.cmpPos(nw.from, old.from) + return moved > 0 && old.to.ch - old.from.ch != nw.to.ch - nw.from.ch + } + function parseOptions(cm, pos, options) { var editor = cm.options.hintOptions; var out = {}; diff --git a/media/editors/codemirror/addon/hint/show-hint.min.js b/media/editors/codemirror/addon/hint/show-hint.min.js index 519c90356061d..9bc5145e78048 100644 --- a/media/editors/codemirror/addon/hint/show-hint.min.js +++ b/media/editors/codemirror/addon/hint/show-hint.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(a,b){this.cm=a,this.options=b,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var c=this;a.on("cursorActivity",this.activityFunc=function(){c.cursorActivity()})}function c(a,b,c){var d=a.options.hintOptions,e={};for(var f in n)e[f]=n[f];if(d)for(var f in d)void 0!==d[f]&&(e[f]=d[f]);if(c)for(var f in c)void 0!==c[f]&&(e[f]=c[f]);return e.hint.resolve&&(e.hint=e.hint.resolve(a,b)),e}function d(a){return"string"==typeof a?a:a.text}function e(a,b){function c(a,c){var e;e="string"!=typeof c?function(a){return c(a,b)}:d.hasOwnProperty(c)?d[c]:c,f[a]=e}var d={Up:function(){b.moveFocus(-1)},Down:function(){b.moveFocus(1)},PageUp:function(){b.moveFocus(-b.menuSize()+1,!0)},PageDown:function(){b.moveFocus(b.menuSize()-1,!0)},Home:function(){b.setFocus(0)},End:function(){b.setFocus(b.length-1)},Enter:b.pick,Tab:b.pick,Esc:b.close},e=a.options.customKeys,f=e?{}:d;if(e)for(var g in e)e.hasOwnProperty(g)&&c(g,e[g]);var h=a.options.extraKeys;if(h)for(var g in h)h.hasOwnProperty(g)&&c(g,h[g]);return f}function f(a,b){for(;b&&b!=a;){if("LI"===b.nodeName.toUpperCase()&&b.parentNode==a)return b;b=b.parentNode}}function g(b,c){this.completion=b,this.data=c,this.picked=!1;var g=this,h=b.cm,i=this.hints=document.createElement("ul");i.className="CodeMirror-hints",this.selectedHint=c.selectedHint||0;for(var l=c.list,m=0;m0){var y=w.bottom-w.top,z=q.top-(q.bottom-w.top);if(z-y>0)i.style.top=(s=q.top-y)+"px",t=!1;else if(y>v){i.style.height=v-5+"px",i.style.top=(s=q.bottom-w.top)+"px";var A=h.getCursor();c.from.ch!=A.ch&&(q=h.cursorCoords(A),i.style.left=(r=q.left)+"px",w=i.getBoundingClientRect())}}var B=w.right-u;if(B>0&&(w.right-w.left>u&&(i.style.width=u-5+"px",B-=w.right-w.left-u),i.style.left=(r=q.left-B)+"px"),h.addKeyMap(this.keyMap=e(b,{moveFocus:function(a,b){g.changeActive(g.selectedHint+a,b)},setFocus:function(a){g.changeActive(a)},menuSize:function(){return g.screenAmount()},length:l.length,close:function(){b.close()},pick:function(){g.pick()},data:c})),b.options.closeOnUnfocus){var C;h.on("blur",this.onBlur=function(){C=setTimeout(function(){b.close()},100)}),h.on("focus",this.onFocus=function(){clearTimeout(C)})}var D=h.getScrollInfo();return h.on("scroll",this.onScroll=function(){var a=h.getScrollInfo(),c=h.getWrapperElement().getBoundingClientRect(),d=s+D.top-a.top,e=d-(window.pageYOffset||(document.documentElement||document.body).scrollTop);return t||(e+=i.offsetHeight),e<=c.top||e>=c.bottom?b.close():(i.style.top=d+"px",void(i.style.left=r+D.left-a.left+"px"))}),a.on(i,"dblclick",function(a){var b=f(i,a.target||a.srcElement);b&&null!=b.hintId&&(g.changeActive(b.hintId),g.pick())}),a.on(i,"click",function(a){var c=f(i,a.target||a.srcElement);c&&null!=c.hintId&&(g.changeActive(c.hintId),b.options.completeOnSingleClick&&g.pick())}),a.on(i,"mousedown",function(){setTimeout(function(){h.focus()},20)}),a.signal(c,"select",l[0],i.firstChild),!0}function h(a,b){if(!a.somethingSelected())return b;for(var c=[],d=0;d1)){if(this.somethingSelected()){if(!d.hint.supportsSelection)return;for(var f=0;f=this.data.list.length?b=c?this.data.list.length-1:0:0>b&&(b=c?0:this.data.list.length-1),this.selectedHint!=b){var d=this.hints.childNodes[this.selectedHint];d.className=d.className.replace(" "+k,""),d=this.hints.childNodes[this.selectedHint=b],d.className+=" "+k,d.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=d.offsetTop+d.offsetHeight-this.hints.clientHeight+3),a.signal(this.data,"select",this.data.list[this.selectedHint],d)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},a.registerHelper("hint","auto",{resolve:i}),a.registerHelper("hint","fromList",function(b,c){var d=b.getCursor(),e=b.getTokenAt(d),f=a.Pos(d.line,e.end);if(e.string&&/\w/.test(e.string[e.string.length-1]))var g=e.string,h=a.Pos(d.line,e.start);else var g="",h=f;for(var i=[],j=0;j,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};a.defineOption("hintOptions",null)}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(a,b){this.cm=a,this.options=b,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var c=this;a.on("cursorActivity",this.activityFunc=function(){c.cursorActivity()})}function c(b,c){var d=a.cmpPos(c.from,b.from);return d>0&&b.to.ch-b.from.ch!=c.to.ch-c.from.ch}function d(a,b,c){var d=a.options.hintOptions,e={};for(var f in o)e[f]=o[f];if(d)for(var f in d)void 0!==d[f]&&(e[f]=d[f]);if(c)for(var f in c)void 0!==c[f]&&(e[f]=c[f]);return e.hint.resolve&&(e.hint=e.hint.resolve(a,b)),e}function e(a){return"string"==typeof a?a:a.text}function f(a,b){function c(a,c){var e;e="string"!=typeof c?function(a){return c(a,b)}:d.hasOwnProperty(c)?d[c]:c,f[a]=e}var d={Up:function(){b.moveFocus(-1)},Down:function(){b.moveFocus(1)},PageUp:function(){b.moveFocus(-b.menuSize()+1,!0)},PageDown:function(){b.moveFocus(b.menuSize()-1,!0)},Home:function(){b.setFocus(0)},End:function(){b.setFocus(b.length-1)},Enter:b.pick,Tab:b.pick,Esc:b.close},e=a.options.customKeys,f=e?{}:d;if(e)for(var g in e)e.hasOwnProperty(g)&&c(g,e[g]);var h=a.options.extraKeys;if(h)for(var g in h)h.hasOwnProperty(g)&&c(g,h[g]);return f}function g(a,b){for(;b&&b!=a;){if("LI"===b.nodeName.toUpperCase()&&b.parentNode==a)return b;b=b.parentNode}}function h(b,c){this.completion=b,this.data=c,this.picked=!1;var d=this,h=b.cm,i=this.hints=document.createElement("ul");i.className="CodeMirror-hints",this.selectedHint=c.selectedHint||0;for(var j=c.list,m=0;m0){var y=w.bottom-w.top,z=q.top-(q.bottom-w.top);if(z-y>0)i.style.top=(s=q.top-y)+"px",t=!1;else if(y>v){i.style.height=v-5+"px",i.style.top=(s=q.bottom-w.top)+"px";var A=h.getCursor();c.from.ch!=A.ch&&(q=h.cursorCoords(A),i.style.left=(r=q.left)+"px",w=i.getBoundingClientRect())}}var B=w.right-u;if(B>0&&(w.right-w.left>u&&(i.style.width=u-5+"px",B-=w.right-w.left-u),i.style.left=(r=q.left-B)+"px"),h.addKeyMap(this.keyMap=f(b,{moveFocus:function(a,b){d.changeActive(d.selectedHint+a,b)},setFocus:function(a){d.changeActive(a)},menuSize:function(){return d.screenAmount()},length:j.length,close:function(){b.close()},pick:function(){d.pick()},data:c})),b.options.closeOnUnfocus){var C;h.on("blur",this.onBlur=function(){C=setTimeout(function(){b.close()},100)}),h.on("focus",this.onFocus=function(){clearTimeout(C)})}var D=h.getScrollInfo();return h.on("scroll",this.onScroll=function(){var a=h.getScrollInfo(),c=h.getWrapperElement().getBoundingClientRect(),d=s+D.top-a.top,e=d-(window.pageYOffset||(document.documentElement||document.body).scrollTop);return t||(e+=i.offsetHeight),e<=c.top||e>=c.bottom?b.close():(i.style.top=d+"px",void(i.style.left=r+D.left-a.left+"px"))}),a.on(i,"dblclick",function(a){var b=g(i,a.target||a.srcElement);b&&null!=b.hintId&&(d.changeActive(b.hintId),d.pick())}),a.on(i,"click",function(a){var c=g(i,a.target||a.srcElement);c&&null!=c.hintId&&(d.changeActive(c.hintId),b.options.completeOnSingleClick&&d.pick())}),a.on(i,"mousedown",function(){setTimeout(function(){h.focus()},20)}),a.signal(c,"select",j[0],i.firstChild),!0}function i(a,b){if(!a.somethingSelected())return b;for(var c=[],d=0;d1)){if(this.somethingSelected()){if(!c.hint.supportsSelection)return;for(var f=0;f=this.data.list.length?b=c?this.data.list.length-1:0:0>b&&(b=c?0:this.data.list.length-1),this.selectedHint!=b){var d=this.hints.childNodes[this.selectedHint];d.className=d.className.replace(" "+l,""),d=this.hints.childNodes[this.selectedHint=b],d.className+=" "+l,d.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=d.offsetTop+d.offsetHeight-this.hints.clientHeight+3),a.signal(this.data,"select",this.data.list[this.selectedHint],d)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},a.registerHelper("hint","auto",{resolve:j}),a.registerHelper("hint","fromList",function(b,c){var d=b.getCursor(),e=b.getTokenAt(d),f=a.Pos(d.line,e.end);if(e.string&&/\w/.test(e.string[e.string.length-1]))var g=e.string,h=a.Pos(d.line,e.start);else var g="",h=f;for(var i=[],j=0;j,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};a.defineOption("hintOptions",null)}); \ No newline at end of file diff --git a/media/editors/codemirror/addon/hint/sql-hint.js b/media/editors/codemirror/addon/hint/sql-hint.js index 22124b58f7945..798fbb1f384b5 100644 --- a/media/editors/codemirror/addon/hint/sql-hint.js +++ b/media/editors/codemirror/addon/hint/sql-hint.js @@ -20,6 +20,8 @@ }; var Pos = CodeMirror.Pos; + function isArray(val) { return Object.prototype.toString.call(val) == "[object Array]" } + function getKeywords(editor) { var mode = editor.doc.modeOption; if (mode === "sql") mode = "text/x-sql"; @@ -30,10 +32,28 @@ return typeof item == "string" ? item : item.text; } - function getItem(list, item) { - if (!list.slice) return list[item]; - for (var i = list.length - 1; i >= 0; i--) if (getText(list[i]) == item) - return list[i]; + function wrapTable(name, value) { + if (isArray(value)) value = {columns: value} + if (!value.text) value.text = name + return value + } + + function parseTables(input) { + var result = {} + if (isArray(input)) { + for (var i = input.length - 1; i >= 0; i--) { + var item = input[i] + result[getText(item).toUpperCase()] = wrapTable(getText(item), item) + } + } else if (input) { + for (var name in input) + result[name.toUpperCase()] = wrapTable(name, input[name]) + } + return result + } + + function getTable(name) { + return tables[name.toUpperCase()] } function shallowClone(object) { @@ -50,11 +70,18 @@ } function addMatches(result, search, wordlist, formatter) { - for (var word in wordlist) { - if (!wordlist.hasOwnProperty(word)) continue; - if (wordlist.slice) word = wordlist[word]; - - if (match(search, word)) result.push(formatter(word)); + if (isArray(wordlist)) { + for (var i = 0; i < wordlist.length; i++) + if (match(search, wordlist[i])) result.push(formatter(wordlist[i])) + } else { + for (var word in wordlist) if (wordlist.hasOwnProperty(word)) { + var val = wordlist[word] + if (!val || val === true) + val = word + else + val = val.displayText ? {text: val.text, displayText: val.displayText} : val.text + if (match(search, val)) result.push(formatter(val)) + } } } @@ -115,13 +142,13 @@ var alias = false; var aliasTable = table; // Check if table is available. If not, find table by Alias - if (!getItem(tables, table)) { + if (!getTable(table)) { var oldTable = table; table = findTableByAlias(table, editor); if (table !== oldTable) alias = true; } - var columns = getItem(tables, table); + var columns = getTable(table); if (columns && columns.columns) columns = columns.columns; @@ -184,7 +211,7 @@ //find valid range var prevItem = 0; var current = convertCurToNumber(editor.getCursor()); - for (var i=0; i< separator.length; i++) { + for (var i = 0; i < separator.length; i++) { var _v = convertCurToNumber(separator[i]); if (current > prevItem && current <= _v) { validRange = { start: convertNumberToCur(prevItem), end: convertNumberToCur(_v) }; @@ -199,7 +226,7 @@ var lineText = query[i]; eachWord(lineText, function(word) { var wordUpperCase = word.toUpperCase(); - if (wordUpperCase === aliasUpperCase && getItem(tables, previousWord)) + if (wordUpperCase === aliasUpperCase && getTable(previousWord)) table = previousWord; if (wordUpperCase !== CONS.ALIAS_KEYWORD) previousWord = word; @@ -210,10 +237,10 @@ } CodeMirror.registerHelper("hint", "sql", function(editor, options) { - tables = (options && options.tables) || {}; + tables = parseTables(options && options.tables) var defaultTableName = options && options.defaultTable; var disableKeywords = options && options.disableKeywords; - defaultTable = defaultTableName && getItem(tables, defaultTableName); + defaultTable = defaultTableName && getTable(defaultTableName); keywords = keywords || getKeywords(editor); if (defaultTableName && !defaultTable) diff --git a/media/editors/codemirror/addon/hint/sql-hint.min.js b/media/editors/codemirror/addon/hint/sql-hint.min.js index ea5118d76acce..d95eb31b9a5e9 100644 --- a/media/editors/codemirror/addon/hint/sql-hint.min.js +++ b/media/editors/codemirror/addon/hint/sql-hint.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("../../mode/sql/sql")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../../mode/sql/sql"],a):a(CodeMirror)}(function(a){"use strict";function b(b){var c=b.doc.modeOption;return"sql"===c&&(c="text/x-sql"),a.resolveMode(c).keywords}function c(a){return"string"==typeof a?a:a.text}function d(a,b){if(!a.slice)return a[b];for(var d=a.length-1;d>=0;d--)if(c(a[d])==b)return a[d]}function e(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function f(a,b){var d=a.length,e=c(b).substr(0,d);return a.toUpperCase()===e.toUpperCase()}function g(a,b,c,d){for(var e in c)c.hasOwnProperty(e)&&(c.slice&&(e=c[e]),f(b,e)&&a.push(d(e)))}function h(a){return"."==a.charAt(0)&&(a=a.substr(1)),a.replace(/`/g,"")}function i(a){for(var b=c(a).split("."),d=0;dp&&u>=q){j={start:m(p),end:m(u)};break}p=u}for(var v=c.getRange(j.start,j.end,!1),t=0;tl.ch&&(r.end=l.ch,r.string=r.string.slice(0,l.ch-r.start)),r.string.match(/^[.`\w@]\w*$/)?(k=r.string,h=r.start,i=r.end):(h=i=l.ch,k=""),"."==k.charAt(0)||"`"==k.charAt(0)?h=j(l,r,m,a):(g(m,k,o,function(a){return a}),g(m,k,p,function(a){return a}),f||g(m,k,q,function(a){return a.toUpperCase()})),{list:m,from:s(l.line,h),to:s(l.line,i)}})}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("../../mode/sql/sql")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../../mode/sql/sql"],a):a(CodeMirror)}(function(a){"use strict";function b(a){return"[object Array]"==Object.prototype.toString.call(a)}function c(b){var c=b.doc.modeOption;return"sql"===c&&(c="text/x-sql"),a.resolveMode(c).keywords}function d(a){return"string"==typeof a?a:a.text}function e(a,c){return b(c)&&(c={columns:c}),c.text||(c.text=a),c}function f(a){var c={};if(b(a))for(var f=a.length-1;f>=0;f--){var g=a[f];c[d(g).toUpperCase()]=e(d(g),g)}else if(a)for(var h in a)c[h.toUpperCase()]=e(h,a[h]);return c}function g(a){return r[a.toUpperCase()]}function h(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function i(a,b){var c=a.length,e=d(b).substr(0,c);return a.toUpperCase()===e.toUpperCase()}function j(a,c,d,e){if(b(d))for(var f=0;fl&&r>=m){j={start:p(l),end:p(r)};break}l=r}for(var s=c.getRange(j.start,j.end,!1),q=0;ql.ch&&(o.end=l.ch,o.string=o.string.slice(0,l.ch-o.start)),o.string.match(/^[.`\w@]\w*$/)?(k=o.string,h=o.start,i=o.end):(h=i=l.ch,k=""),"."==k.charAt(0)||"`"==k.charAt(0)?h=m(l,o,n,a):(j(n,k,r,function(a){return a}),j(n,k,s,function(a){return a}),e||j(n,k,t,function(a){return a.toUpperCase()})),{list:n,from:v(l.line,h),to:v(l.line,i)}})}); \ No newline at end of file diff --git a/media/editors/codemirror/addon/lint/lint.js b/media/editors/codemirror/addon/lint/lint.js index 5afe49d0fc992..01f322b5d5775 100644 --- a/media/editors/codemirror/addon/lint/lint.js +++ b/media/editors/codemirror/addon/lint/lint.js @@ -186,9 +186,14 @@ state.timeout = setTimeout(function(){startLinting(cm);}, state.options.delay || 500); } - function popupSpanTooltip(ann, e) { + function popupTooltips(annotations, e) { var target = e.target || e.srcElement; - showTooltipFor(e, annotationTooltip(ann), target); + var tooltip = document.createDocumentFragment(); + for (var i = 0; i < annotations.length; i++) { + var ann = annotations[i]; + tooltip.appendChild(annotationTooltip(ann)); + } + showTooltipFor(e, tooltip, target); } function onMouseOver(cm, e) { @@ -196,10 +201,12 @@ if (!/\bCodeMirror-lint-mark-/.test(target.className)) return; var box = target.getBoundingClientRect(), x = (box.left + box.right) / 2, y = (box.top + box.bottom) / 2; var spans = cm.findMarksAt(cm.coordsChar({left: x, top: y}, "client")); + + var annotations = []; for (var i = 0; i < spans.length; ++i) { - var ann = spans[i].__annotation; - if (ann) return popupSpanTooltip(ann, e); + annotations.push(spans[i].__annotation); } + if (annotations.length) popupTooltips(annotations, e); } CodeMirror.defineOption("lint", false, function(cm, val, old) { diff --git a/media/editors/codemirror/addon/lint/lint.min.js b/media/editors/codemirror/addon/lint/lint.min.js index c415bd77202f4..2a84628f9ea1d 100644 --- a/media/editors/codemirror/addon/lint/lint.min.js +++ b/media/editors/codemirror/addon/lint/lint.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(b,c){function d(b){return e.parentNode?(e.style.top=Math.max(0,b.clientY-e.offsetHeight-5)+"px",void(e.style.left=b.clientX+5+"px")):a.off(document,"mousemove",d)}var e=document.createElement("div");return e.className="CodeMirror-lint-tooltip",e.appendChild(c.cloneNode(!0)),document.body.appendChild(e),a.on(document,"mousemove",d),d(b),null!=e.style.opacity&&(e.style.opacity=1),e}function c(a){a.parentNode&&a.parentNode.removeChild(a)}function d(a){a.parentNode&&(null==a.style.opacity&&c(a),a.style.opacity=0,setTimeout(function(){c(a)},600))}function e(c,e,f){function g(){a.off(f,"mouseout",g),h&&(d(h),h=null)}var h=b(c,e),i=setInterval(function(){if(h)for(var a=f;;a=a.parentNode){if(a&&11==a.nodeType&&(a=a.host),a==document.body)return;if(!a){g();break}}return h?void 0:clearInterval(i)},400);a.on(f,"mouseout",g)}function f(a,b,c){this.marked=[],this.options=b,this.timeout=null,this.hasGutter=c,this.onMouseOver=function(b){r(a,b)},this.waitingFor=0}function g(a,b){return b instanceof Function?{getAnnotations:b}:(b&&b!==!0||(b={}),b)}function h(a){var b=a.state.lint;b.hasGutter&&a.clearGutter(s);for(var c=0;c1,c.options.tooltips))}}d.onUpdateLinting&&d.onUpdateLinting(b,e,a)}function p(a){var b=a.state.lint;b&&(clearTimeout(b.timeout),b.timeout=setTimeout(function(){n(a)},b.options.delay||500))}function q(a,b){var c=b.target||b.srcElement;e(b,l(a),c)}function r(a,b){var c=b.target||b.srcElement;if(/\bCodeMirror-lint-mark-/.test(c.className))for(var d=c.getBoundingClientRect(),e=(d.left+d.right)/2,f=(d.top+d.bottom)/2,g=a.findMarksAt(a.coordsChar({left:e,top:f},"client")),h=0;h1,c.options.tooltips))}}d.onUpdateLinting&&d.onUpdateLinting(b,e,a)}function p(a){var b=a.state.lint;b&&(clearTimeout(b.timeout),b.timeout=setTimeout(function(){n(a)},b.options.delay||500))}function q(a,b){for(var c=b.target||b.srcElement,d=document.createDocumentFragment(),f=0;f to.lastLine() ? Pos(chunk.editFrom - 1) : Pos(chunk.editFrom, 0) - to.replaceRange(from.getRange(Pos(chunk.origFrom, 0), Pos(chunk.origTo, 0)), - start, Pos(chunk.editTo, 0)); + var editStart = chunk.editTo > to.lastLine() ? Pos(chunk.editFrom - 1) : Pos(chunk.editFrom, 0) + var origStart = chunk.origTo > from.lastLine() ? Pos(chunk.origFrom - 1) : Pos(chunk.origFrom, 0) + to.replaceRange(from.getRange(origStart, Pos(chunk.origTo, 0)), editStart, Pos(chunk.editTo, 0)) } // Merge view, containing 0, 1, or 2 diff views. diff --git a/media/editors/codemirror/addon/merge/merge.min.js b/media/editors/codemirror/addon/merge/merge.min.js index c9f6cfcba8a41..b9129c736f4c2 100644 --- a/media/editors/codemirror/addon/merge/merge.min.js +++ b/media/editors/codemirror/addon/merge/merge.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","diff_match_patch"],a):a(CodeMirror)}(function(a){"use strict";function b(a,b){this.mv=a,this.type=b,this.classes="left"==b?{chunk:"CodeMirror-merge-l-chunk",start:"CodeMirror-merge-l-chunk-start",end:"CodeMirror-merge-l-chunk-end",insert:"CodeMirror-merge-l-inserted",del:"CodeMirror-merge-l-deleted",connect:"CodeMirror-merge-l-connect"}:{chunk:"CodeMirror-merge-r-chunk",start:"CodeMirror-merge-r-chunk-start",end:"CodeMirror-merge-r-chunk-end",insert:"CodeMirror-merge-r-inserted",del:"CodeMirror-merge-r-deleted",connect:"CodeMirror-merge-r-connect"}}function c(b){b.diffOutOfDate&&(b.diff=v(b.orig.getValue(),b.edit.getValue()),b.chunks=w(b.diff),b.diffOutOfDate=!1,a.signal(b.edit,"updateDiff",b.diff))}function d(a){function b(b){R=!0,m=!1,"full"==b&&(a.svg&&F(a.svg),a.copyButtons&&F(a.copyButtons),i(a.edit,h.marked,a.classes),i(a.orig,k.marked,a.classes),h.from=h.to=k.from=k.to=0),c(a),a.showDifferences&&(j(a.edit,a.diff,h,DIFF_INSERT,a.classes),j(a.orig,a.diff,k,DIFF_DELETE,a.classes)),l(a),"align"==a.mv.options.connect&&o(a),R=!1}function d(b){R||(a.dealigned=!0,e(b))}function e(a){R||m||(clearTimeout(g),a===!0&&(m=!0),g=setTimeout(b,a===!0?20:250))}function f(b,c){a.diffOutOfDate||(a.diffOutOfDate=!0,h.from=h.to=k.from=k.to=0),d(c.text.length-1!=c.to.line-c.from.line)}var g,h={from:0,to:0,marked:[]},k={from:0,to:0,marked:[]},m=!1;return a.edit.on("change",f),a.orig.on("change",f),a.edit.on("markerAdded",d),a.edit.on("markerCleared",d),a.orig.on("markerAdded",d),a.orig.on("markerCleared",d),a.edit.on("viewportChange",function(){e(!1)}),a.orig.on("viewportChange",function(){e(!1)}),b(),b}function e(a){a.edit.on("scroll",function(){f(a,DIFF_INSERT)&&l(a)}),a.orig.on("scroll",function(){f(a,DIFF_DELETE)&&l(a)})}function f(a,b){if(a.diffOutOfDate)return!1;if(!a.lockScroll)return!0;var c,d,e=+new Date;if(b==DIFF_INSERT?(c=a.edit,d=a.orig):(c=a.orig,d=a.edit),c.state.scrollSetBy==a&&(c.state.scrollSetAt||0)+50>e)return!1;var f=c.getScrollInfo();if("align"==a.mv.options.connect)q=f.top;else{var h,i,j=.5*f.clientHeight,k=f.top+j,l=c.lineAtHeight(k,"local"),m=z(a.chunks,l,b==DIFF_INSERT),n=g(c,b==DIFF_INSERT?m.edit:m.orig),o=g(d,b==DIFF_INSERT?m.orig:m.edit),p=(k-n.top)/(n.bot-n.top),q=o.top-j+p*(o.bot-o.top);if(q>f.top&&(i=f.top/j)<1)q=q*i+f.top*(1-i);else if((h=f.height-f.clientHeight-f.top)h&&(i=h/j)<1&&(q=q*i+(r.height-r.clientHeight-h)*(1-i))}}return d.scrollTo(f.left,q),d.state.scrollSetAt=e,d.state.scrollSetBy=a,!0}function g(a,b){var c=b.after;return null==c&&(c=a.lastLine()+1),{top:a.heightAtLine(b.before||0,"local"),bot:a.heightAtLine(c,"local")}}function h(a,b,c){a.lockScroll=b,b&&0!=c&&f(a,DIFF_INSERT)&&l(a),a.lockButton.innerHTML=b?"⇛⇚":"⇛  ⇚"}function i(b,c,d){for(var e=0;e20||c.from-f.to>20?(i(a,c.marked,e),k(a,b,d,c.marked,f.from,f.to,e),c.from=f.from,c.to=f.to):(f.fromc.to&&(k(a,b,d,c.marked,c.to,f.to,e),c.to=f.to))})}function k(a,b,c,d,e,f,g){function h(b,c){for(var h=Math.max(e,b),i=Math.min(f,c),j=h;i>j;++j){var k=a.addLineClass(j,"background",g.chunk);j==b&&a.addLineClass(k,"background",g.start),j==c-1&&a.addLineClass(k,"background",g.end),d.push(k)}b==c&&h==c&&i==c&&(h?d.push(a.addLineClass(h-1,"background",g.end)):d.push(a.addLineClass(h,"background",g.start)))}for(var i=P(0,0),j=P(e,0),k=a.clipPos(P(f-1)),l=c==DIFF_DELETE?g.del:g.insert,m=0,n=0;nr&&(n&&h(m,r),m=s)}else if(p==c){var t=I(i,q,!0),u=K(j,i),v=J(k,t);L(u,v)||d.push(a.markText(u,v,{className:l})),i=t}}m<=i.line&&h(m,i.line+1)}function l(a){if(a.showDifferences){if(a.svg){F(a.svg);var b=a.gap.offsetWidth;G(a.svg,"width",b,"height",a.gap.offsetHeight)}a.copyButtons&&F(a.copyButtons);for(var c=a.edit.getViewport(),d=a.orig.getViewport(),e=a.edit.getScrollInfo().top,f=a.orig.getScrollInfo().top,g=0;g=c.from&&h.origFrom<=d.to&&h.origTo>=d.from&&r(a,h,f,e,b)}}}function m(a,b){for(var c=0,d=0,e=0;ea&&f.editFrom<=a)return null;if(f.editFrom>a)break;c=f.editTo,d=f.origTo}return d+(a-c)}function n(a,b){for(var c=[],d=0;de.editTo)break}f>-1&&c.splice(f-1,0,[m(e.editTo,a.chunks),e.editTo,e.origTo])}return c}function o(a,b){if(a.dealigned||b){if(!a.orig.curOp)return a.orig.operation(function(){o(a,b)});a.dealigned=!1;var d=a.mv.left==a?a.mv.right:a.mv.left;d&&(c(d),d.dealigned=!1);for(var e=n(a,d),f=a.mv.aligners,g=0;g1&&c.push(q(a[f],b[f],h))}}function q(a,b,c){var d=!0;b>a.lastLine()&&(b--,d=!1);var e=document.createElement("div");return e.className="CodeMirror-merge-spacer",e.style.height=c+"px",e.style.minWidth="1px",a.addLineWidget(b,e,{height:c,above:d})}function r(a,b,c,d,e){var f="left"==a.type,g=a.orig.heightAtLine(b.origFrom,"local")-c;if(a.svg){var h=g,i=a.edit.heightAtLine(b.editFrom,"local")-d;if(f){var j=h;h=i,i=j}var k=a.orig.heightAtLine(b.origTo,"local")-c,l=a.edit.heightAtLine(b.editTo,"local")-d;if(f){var j=k;k=l,l=j}var m=" C "+e/2+" "+i+" "+e/2+" "+h+" "+(e+2)+" "+h,n=" C "+e/2+" "+k+" "+e/2+" "+l+" -1 "+l;G(a.svg.appendChild(document.createElementNS(Q,"path")),"d","M -1 "+i+m+" L "+(e+2)+" "+k+n+" z","class",a.classes.connect)}if(a.copyButtons){var o=a.copyButtons.appendChild(E("div","left"==a.type?"⇝":"⇜","CodeMirror-merge-copy")),p=a.mv.options.allowEditingOriginals;if(o.title=p?"Push to left":"Revert chunk",o.chunk=b,o.style.top=g+"px",p){var q=a.orig.heightAtLine(b.editFrom,"local")-d,r=a.copyButtons.appendChild(E("div","right"==a.type?"⇝":"⇜","CodeMirror-merge-copy-reverse"));r.title="Push to right",r.chunk={editFrom:b.origFrom,editTo:b.origTo,origFrom:b.editFrom,origTo:b.editTo},r.style.top=q+"px","right"==a.type?r.style.left="2px":r.style.right="2px"}}}function s(a,b,c,d){if(!a.diffOutOfDate){var e=d.editTo>b.lastLine()?P(d.editFrom-1):P(d.editFrom,0);b.replaceRange(c.getRange(P(d.origFrom,0),P(d.origTo,0)),e,P(d.editTo,0))}}function t(b){var c=b.lockButton=E("div",null,"CodeMirror-merge-scrolllock");c.title="Toggle locked scrolling";var d=E("div",[c],"CodeMirror-merge-scrolllock-wrap");a.on(c,"click",function(){h(b,!b.lockScroll)});var e=[d];if(b.mv.options.revertButtons!==!1&&(b.copyButtons=E("div",null,"CodeMirror-merge-copybuttons-"+b.type),a.on(b.copyButtons,"click",function(a){var c=a.target||a.srcElement;if(c.chunk)return"CodeMirror-merge-copy-reverse"==c.className?void s(b,b.orig,b.edit,c.chunk):void s(b,b.edit,b.orig,c.chunk)}),e.unshift(b.copyButtons)),"align"!=b.mv.options.connect){var f=document.createElementNS&&document.createElementNS(Q,"svg");f&&!f.createSVGRect&&(f=null),b.svg=f,f&&e.push(f)}return b.gap=E("div",e,"CodeMirror-merge-gap")}function u(a){return"string"==typeof a?a:a.getValue()}function v(a,b){var c=T.diff_main(a,b);T.diff_cleanupSemantic(c);for(var d=0;dk&&(g&&b.push({origFrom:d,origTo:l,editFrom:c,editTo:k}),c=n,d=o)}else I(i==DIFF_INSERT?e:f,h[1])}return(c<=e.line||d<=f.line)&&b.push({origFrom:d,origTo:f.line+1,editFrom:c,editTo:e.line+1}),b}function x(a,b){if(b==a.length-1)return!0;var c=a[b+1][1];return 1==c.length||10!=c.charCodeAt(0)?!1:b==a.length-2?!0:(c=a[b+2][1],c.length>1&&10==c.charCodeAt(0))}function y(a,b){if(0==b)return!0;var c=a[b-1][1];return 10!=c.charCodeAt(c.length-1)?!1:1==b?!0:(c=a[b-2][1],10==c.charCodeAt(c.length-1))}function z(a,b,c){for(var d,e,f,g,h=0;hb?(e=i.editFrom,g=i.origFrom):k>b&&(e=i.editTo,g=i.origTo)),b>=k?(d=i.editTo,f=i.origTo):b>=j&&(d=i.editFrom,f=i.origFrom)}return{edit:{before:d,after:e},orig:{before:f,after:g}}}function A(b,c,d){function e(){g.clear(),b.removeLineClass(c,"wrap","CodeMirror-merge-collapsed-line")}b.addLineClass(c,"wrap","CodeMirror-merge-collapsed-line");var f=document.createElement("span");f.className="CodeMirror-merge-collapsed-widget",f.title="Identical text collapsed. Click to expand.";var g=b.markText(P(c,0),P(d-1),{inclusiveLeft:!0,inclusiveRight:!0,replacedWith:f,clearOnEnter:!0});return a.on(f,"click",e),{mark:g,clear:e}}function B(a,b){function c(){for(var a=0;a=0&&h=f;f++)c.push(!0);a.left&&C(a.left,b,e,c),a.right&&C(a.right,b,e,c);for(var h=0;hb){var k=[{line:i,cm:d}];a.left&&k.push({line:m(i,a.left.chunks),cm:a.left.orig}),a.right&&k.push({line:m(i,a.right.chunks),cm:a.right.orig});var l=B(j,k);a.options.onCollapse&&a.options.onCollapse(a,i,j,l)}}}function E(a,b,c,d){var e=document.createElement(a);if(c&&(e.className=c),d&&(e.style.cssText=d),"string"==typeof b)e.appendChild(document.createTextNode(b));else if(b)for(var f=0;f0;--b)a.removeChild(a.firstChild)}function G(a){for(var b=1;b0?a:b}function L(a,b){return a.line==b.line&&a.ch==b.ch}function M(a,b,c){for(var d=a.length-1;d>=0;d--){var e=a[d],f=(c?e.origTo:e.editTo)-1;if(b>f)return f}}function N(a,b,c){for(var d=0;db)return f}}function O(b,d){var e=null,f=b.state.diffViews,g=b.getCursor().line;if(f)for(var h=0;hd?M(i.chunks,g,j):N(i.chunks,g,j);null==k||null!=e&&!(0>d?k>e:e>k)||(e=k)}return null==e?a.Pass:void b.setCursor(e,0)}var P=a.Pos,Q="http://www.w3.org/2000/svg";b.prototype={constructor:b,init:function(b,c,f){this.edit=this.mv.edit,(this.edit.state.diffViews||(this.edit.state.diffViews=[])).push(this),this.orig=a(b,H({value:c,readOnly:!this.mv.options.allowEditingOriginals},H(f))),this.orig.state.diffViews=[this],this.diff=v(u(c),u(f.value)),this.chunks=w(this.diff),this.diffOutOfDate=this.dealigned=!1,this.showDifferences=f.showDifferences!==!1,this.forceUpdate=d(this),h(this,!0,!1),e(this)},setShowDifferences:function(a){a=a!==!1,a!=this.showDifferences&&(this.showDifferences=a,this.forceUpdate("full"))}};var R=!1,S=a.MergeView=function(c,d){if(!(this instanceof S))return new S(c,d);this.options=d;var e=d.origLeft,f=null==d.origRight?d.orig:d.origRight,g=null!=e,h=null!=f,i=1+(g?1:0)+(h?1:0),j=[],k=this.left=null,m=this.right=null,n=this;if(g){k=this.left=new b(this,"left");var p=E("div",null,"CodeMirror-merge-pane");j.push(p),j.push(t(k))}var q=E("div",null,"CodeMirror-merge-pane");if(j.push(q),h){m=this.right=new b(this,"right"),j.push(t(m));var r=E("div",null,"CodeMirror-merge-pane");j.push(r)}(h?r:q).className+=" CodeMirror-merge-pane-rightmost",j.push(E("div",null,null,"height: 0; clear: both;"));var s=this.wrap=c.appendChild(E("div",j,"CodeMirror-merge CodeMirror-merge-"+i+"pane"));this.edit=a(q,H(d)),k&&k.init(p,e,d),m&&m.init(r,f,d),d.collapseIdentical&&this.editor().operation(function(){D(n,d.collapseIdentical)}),"align"==d.connect&&(this.aligners=[],o(this.left||this.right,!0));var u=function(){k&&l(k),m&&l(m)};a.on(window,"resize",u);var v=setInterval(function(){for(var b=s.parentNode;b&&b!=document.body;b=b.parentNode);b||(clearInterval(v),a.off(window,"resize",u))},5e3)};S.prototype={constuctor:S,editor:function(){return this.edit},rightOriginal:function(){return this.right&&this.right.orig},leftOriginal:function(){return this.left&&this.left.orig},setShowDifferences:function(a){this.right&&this.right.setShowDifferences(a),this.left&&this.left.setShowDifferences(a)},rightChunks:function(){return this.right?(c(this.right),this.right.chunks):void 0},leftChunks:function(){return this.left?(c(this.left),this.left.chunks):void 0}};var T=new diff_match_patch;a.commands.goNextDiff=function(a){return O(a,1)},a.commands.goPrevDiff=function(a){return O(a,-1)}}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","diff_match_patch"],a):a(CodeMirror)}(function(a){"use strict";function b(a,b){this.mv=a,this.type=b,this.classes="left"==b?{chunk:"CodeMirror-merge-l-chunk",start:"CodeMirror-merge-l-chunk-start",end:"CodeMirror-merge-l-chunk-end",insert:"CodeMirror-merge-l-inserted",del:"CodeMirror-merge-l-deleted",connect:"CodeMirror-merge-l-connect"}:{chunk:"CodeMirror-merge-r-chunk",start:"CodeMirror-merge-r-chunk-start",end:"CodeMirror-merge-r-chunk-end",insert:"CodeMirror-merge-r-inserted",del:"CodeMirror-merge-r-deleted",connect:"CodeMirror-merge-r-connect"}}function c(b){b.diffOutOfDate&&(b.diff=v(b.orig.getValue(),b.edit.getValue()),b.chunks=w(b.diff),b.diffOutOfDate=!1,a.signal(b.edit,"updateDiff",b.diff))}function d(a){function b(b){R=!0,m=!1,"full"==b&&(a.svg&&F(a.svg),a.copyButtons&&F(a.copyButtons),i(a.edit,h.marked,a.classes),i(a.orig,k.marked,a.classes),h.from=h.to=k.from=k.to=0),c(a),a.showDifferences&&(j(a.edit,a.diff,h,DIFF_INSERT,a.classes),j(a.orig,a.diff,k,DIFF_DELETE,a.classes)),l(a),"align"==a.mv.options.connect&&o(a),R=!1}function d(b){R||(a.dealigned=!0,e(b))}function e(a){R||m||(clearTimeout(g),a===!0&&(m=!0),g=setTimeout(b,a===!0?20:250))}function f(b,c){a.diffOutOfDate||(a.diffOutOfDate=!0,h.from=h.to=k.from=k.to=0),d(c.text.length-1!=c.to.line-c.from.line)}var g,h={from:0,to:0,marked:[]},k={from:0,to:0,marked:[]},m=!1;return a.edit.on("change",f),a.orig.on("change",f),a.edit.on("markerAdded",d),a.edit.on("markerCleared",d),a.orig.on("markerAdded",d),a.orig.on("markerCleared",d),a.edit.on("viewportChange",function(){e(!1)}),a.orig.on("viewportChange",function(){e(!1)}),b(),b}function e(a){a.edit.on("scroll",function(){f(a,DIFF_INSERT)&&l(a)}),a.orig.on("scroll",function(){f(a,DIFF_DELETE)&&l(a)})}function f(a,b){if(a.diffOutOfDate)return!1;if(!a.lockScroll)return!0;var c,d,e=+new Date;if(b==DIFF_INSERT?(c=a.edit,d=a.orig):(c=a.orig,d=a.edit),c.state.scrollSetBy==a&&(c.state.scrollSetAt||0)+50>e)return!1;var f=c.getScrollInfo();if("align"==a.mv.options.connect)q=f.top;else{var h,i,j=.5*f.clientHeight,k=f.top+j,l=c.lineAtHeight(k,"local"),m=z(a.chunks,l,b==DIFF_INSERT),n=g(c,b==DIFF_INSERT?m.edit:m.orig),o=g(d,b==DIFF_INSERT?m.orig:m.edit),p=(k-n.top)/(n.bot-n.top),q=o.top-j+p*(o.bot-o.top);if(q>f.top&&(i=f.top/j)<1)q=q*i+f.top*(1-i);else if((h=f.height-f.clientHeight-f.top)h&&(i=h/j)<1&&(q=q*i+(r.height-r.clientHeight-h)*(1-i))}}return d.scrollTo(f.left,q),d.state.scrollSetAt=e,d.state.scrollSetBy=a,!0}function g(a,b){var c=b.after;return null==c&&(c=a.lastLine()+1),{top:a.heightAtLine(b.before||0,"local"),bot:a.heightAtLine(c,"local")}}function h(a,b,c){a.lockScroll=b,b&&0!=c&&f(a,DIFF_INSERT)&&l(a),a.lockButton.innerHTML=b?"⇛⇚":"⇛  ⇚"}function i(b,c,d){for(var e=0;e20||c.from-f.to>20?(i(a,c.marked,e),k(a,b,d,c.marked,f.from,f.to,e),c.from=f.from,c.to=f.to):(f.fromc.to&&(k(a,b,d,c.marked,c.to,f.to,e),c.to=f.to))})}function k(a,b,c,d,e,f,g){function h(b,c){for(var h=Math.max(e,b),i=Math.min(f,c),j=h;i>j;++j){var k=a.addLineClass(j,"background",g.chunk);j==b&&a.addLineClass(k,"background",g.start),j==c-1&&a.addLineClass(k,"background",g.end),d.push(k)}b==c&&h==c&&i==c&&(h?d.push(a.addLineClass(h-1,"background",g.end)):d.push(a.addLineClass(h,"background",g.start)))}for(var i=P(0,0),j=P(e,0),k=a.clipPos(P(f-1)),l=c==DIFF_DELETE?g.del:g.insert,m=0,n=0;nr&&(n&&h(m,r),m=s)}else if(p==c){var t=I(i,q,!0),u=K(j,i),v=J(k,t);L(u,v)||d.push(a.markText(u,v,{className:l})),i=t}}m<=i.line&&h(m,i.line+1)}function l(a){if(a.showDifferences){if(a.svg){F(a.svg);var b=a.gap.offsetWidth;G(a.svg,"width",b,"height",a.gap.offsetHeight)}a.copyButtons&&F(a.copyButtons);for(var c=a.edit.getViewport(),d=a.orig.getViewport(),e=a.edit.getScrollInfo().top,f=a.orig.getScrollInfo().top,g=0;g=c.from&&h.origFrom<=d.to&&h.origTo>=d.from&&r(a,h,f,e,b)}}}function m(a,b){for(var c=0,d=0,e=0;ea&&f.editFrom<=a)return null;if(f.editFrom>a)break;c=f.editTo,d=f.origTo}return d+(a-c)}function n(a,b){for(var c=[],d=0;de.editTo)break}f>-1&&c.splice(f-1,0,[m(e.editTo,a.chunks),e.editTo,e.origTo])}return c}function o(a,b){if(a.dealigned||b){if(!a.orig.curOp)return a.orig.operation(function(){o(a,b)});a.dealigned=!1;var d=a.mv.left==a?a.mv.right:a.mv.left;d&&(c(d),d.dealigned=!1);for(var e=n(a,d),f=a.mv.aligners,g=0;g1&&c.push(q(a[f],b[f],h))}}function q(a,b,c){var d=!0;b>a.lastLine()&&(b--,d=!1);var e=document.createElement("div");return e.className="CodeMirror-merge-spacer",e.style.height=c+"px",e.style.minWidth="1px",a.addLineWidget(b,e,{height:c,above:d})}function r(a,b,c,d,e){var f="left"==a.type,g=a.orig.heightAtLine(b.origFrom,"local")-c;if(a.svg){var h=g,i=a.edit.heightAtLine(b.editFrom,"local")-d;if(f){var j=h;h=i,i=j}var k=a.orig.heightAtLine(b.origTo,"local")-c,l=a.edit.heightAtLine(b.editTo,"local")-d;if(f){var j=k;k=l,l=j}var m=" C "+e/2+" "+i+" "+e/2+" "+h+" "+(e+2)+" "+h,n=" C "+e/2+" "+k+" "+e/2+" "+l+" -1 "+l;G(a.svg.appendChild(document.createElementNS(Q,"path")),"d","M -1 "+i+m+" L "+(e+2)+" "+k+n+" z","class",a.classes.connect)}if(a.copyButtons){var o=a.copyButtons.appendChild(E("div","left"==a.type?"⇝":"⇜","CodeMirror-merge-copy")),p=a.mv.options.allowEditingOriginals;if(o.title=p?"Push to left":"Revert chunk",o.chunk=b,o.style.top=g+"px",p){var q=a.orig.heightAtLine(b.editFrom,"local")-d,r=a.copyButtons.appendChild(E("div","right"==a.type?"⇝":"⇜","CodeMirror-merge-copy-reverse"));r.title="Push to right",r.chunk={editFrom:b.origFrom,editTo:b.origTo,origFrom:b.editFrom,origTo:b.editTo},r.style.top=q+"px","right"==a.type?r.style.left="2px":r.style.right="2px"}}}function s(a,b,c,d){if(!a.diffOutOfDate){var e=d.editTo>b.lastLine()?P(d.editFrom-1):P(d.editFrom,0),f=d.origTo>c.lastLine()?P(d.origFrom-1):P(d.origFrom,0);b.replaceRange(c.getRange(f,P(d.origTo,0)),e,P(d.editTo,0))}}function t(b){var c=b.lockButton=E("div",null,"CodeMirror-merge-scrolllock");c.title="Toggle locked scrolling";var d=E("div",[c],"CodeMirror-merge-scrolllock-wrap");a.on(c,"click",function(){h(b,!b.lockScroll)});var e=[d];if(b.mv.options.revertButtons!==!1&&(b.copyButtons=E("div",null,"CodeMirror-merge-copybuttons-"+b.type),a.on(b.copyButtons,"click",function(a){var c=a.target||a.srcElement;if(c.chunk)return"CodeMirror-merge-copy-reverse"==c.className?void s(b,b.orig,b.edit,c.chunk):void s(b,b.edit,b.orig,c.chunk)}),e.unshift(b.copyButtons)),"align"!=b.mv.options.connect){var f=document.createElementNS&&document.createElementNS(Q,"svg");f&&!f.createSVGRect&&(f=null),b.svg=f,f&&e.push(f)}return b.gap=E("div",e,"CodeMirror-merge-gap")}function u(a){return"string"==typeof a?a:a.getValue()}function v(a,b){var c=T.diff_main(a,b);T.diff_cleanupSemantic(c);for(var d=0;dk&&(g&&b.push({origFrom:d,origTo:l,editFrom:c,editTo:k}),c=n,d=o)}else I(i==DIFF_INSERT?e:f,h[1])}return(c<=e.line||d<=f.line)&&b.push({origFrom:d,origTo:f.line+1,editFrom:c,editTo:e.line+1}),b}function x(a,b){if(b==a.length-1)return!0;var c=a[b+1][1];return 1==c.length||10!=c.charCodeAt(0)?!1:b==a.length-2?!0:(c=a[b+2][1],c.length>1&&10==c.charCodeAt(0))}function y(a,b){if(0==b)return!0;var c=a[b-1][1];return 10!=c.charCodeAt(c.length-1)?!1:1==b?!0:(c=a[b-2][1],10==c.charCodeAt(c.length-1))}function z(a,b,c){for(var d,e,f,g,h=0;hb?(e=i.editFrom,g=i.origFrom):k>b&&(e=i.editTo,g=i.origTo)),b>=k?(d=i.editTo,f=i.origTo):b>=j&&(d=i.editFrom,f=i.origFrom)}return{edit:{before:d,after:e},orig:{before:f,after:g}}}function A(b,c,d){function e(){g.clear(),b.removeLineClass(c,"wrap","CodeMirror-merge-collapsed-line")}b.addLineClass(c,"wrap","CodeMirror-merge-collapsed-line");var f=document.createElement("span");f.className="CodeMirror-merge-collapsed-widget",f.title="Identical text collapsed. Click to expand.";var g=b.markText(P(c,0),P(d-1),{inclusiveLeft:!0,inclusiveRight:!0,replacedWith:f,clearOnEnter:!0});return a.on(f,"click",e),{mark:g,clear:e}}function B(a,b){function c(){for(var a=0;a=0&&h=f;f++)c.push(!0);a.left&&C(a.left,b,e,c),a.right&&C(a.right,b,e,c);for(var h=0;hb){var k=[{line:i,cm:d}];a.left&&k.push({line:m(i,a.left.chunks),cm:a.left.orig}),a.right&&k.push({line:m(i,a.right.chunks),cm:a.right.orig});var l=B(j,k);a.options.onCollapse&&a.options.onCollapse(a,i,j,l)}}}function E(a,b,c,d){var e=document.createElement(a);if(c&&(e.className=c),d&&(e.style.cssText=d),"string"==typeof b)e.appendChild(document.createTextNode(b));else if(b)for(var f=0;f0;--b)a.removeChild(a.firstChild)}function G(a){for(var b=1;b0?a:b}function L(a,b){return a.line==b.line&&a.ch==b.ch}function M(a,b,c){for(var d=a.length-1;d>=0;d--){var e=a[d],f=(c?e.origTo:e.editTo)-1;if(b>f)return f}}function N(a,b,c){for(var d=0;db)return f}}function O(b,d){var e=null,f=b.state.diffViews,g=b.getCursor().line;if(f)for(var h=0;hd?M(i.chunks,g,j):N(i.chunks,g,j);null==k||null!=e&&!(0>d?k>e:e>k)||(e=k)}return null==e?a.Pass:void b.setCursor(e,0)}var P=a.Pos,Q="http://www.w3.org/2000/svg";b.prototype={constructor:b,init:function(b,c,f){this.edit=this.mv.edit,(this.edit.state.diffViews||(this.edit.state.diffViews=[])).push(this),this.orig=a(b,H({value:c,readOnly:!this.mv.options.allowEditingOriginals},H(f))),this.orig.state.diffViews=[this],this.diff=v(u(c),u(f.value)),this.chunks=w(this.diff),this.diffOutOfDate=this.dealigned=!1,this.showDifferences=f.showDifferences!==!1,this.forceUpdate=d(this),h(this,!0,!1),e(this)},setShowDifferences:function(a){a=a!==!1,a!=this.showDifferences&&(this.showDifferences=a,this.forceUpdate("full"))}};var R=!1,S=a.MergeView=function(c,d){if(!(this instanceof S))return new S(c,d);this.options=d;var e=d.origLeft,f=null==d.origRight?d.orig:d.origRight,g=null!=e,h=null!=f,i=1+(g?1:0)+(h?1:0),j=[],k=this.left=null,m=this.right=null,n=this;if(g){k=this.left=new b(this,"left");var p=E("div",null,"CodeMirror-merge-pane");j.push(p),j.push(t(k))}var q=E("div",null,"CodeMirror-merge-pane");if(j.push(q),h){m=this.right=new b(this,"right"),j.push(t(m));var r=E("div",null,"CodeMirror-merge-pane");j.push(r)}(h?r:q).className+=" CodeMirror-merge-pane-rightmost",j.push(E("div",null,null,"height: 0; clear: both;"));var s=this.wrap=c.appendChild(E("div",j,"CodeMirror-merge CodeMirror-merge-"+i+"pane"));this.edit=a(q,H(d)),k&&k.init(p,e,d),m&&m.init(r,f,d),d.collapseIdentical&&this.editor().operation(function(){D(n,d.collapseIdentical)}),"align"==d.connect&&(this.aligners=[],o(this.left||this.right,!0));var u=function(){k&&l(k),m&&l(m)};a.on(window,"resize",u);var v=setInterval(function(){for(var b=s.parentNode;b&&b!=document.body;b=b.parentNode);b||(clearInterval(v),a.off(window,"resize",u))},5e3)};S.prototype={constuctor:S,editor:function(){return this.edit},rightOriginal:function(){return this.right&&this.right.orig},leftOriginal:function(){return this.left&&this.left.orig},setShowDifferences:function(a){this.right&&this.right.setShowDifferences(a),this.left&&this.left.setShowDifferences(a)},rightChunks:function(){return this.right?(c(this.right),this.right.chunks):void 0},leftChunks:function(){return this.left?(c(this.left),this.left.chunks):void 0}};var T=new diff_match_patch;a.commands.goNextDiff=function(a){return O(a,1)},a.commands.goPrevDiff=function(a){return O(a,-1)}}); \ No newline at end of file diff --git a/media/editors/codemirror/addon/scroll/simplescrollbars.js b/media/editors/codemirror/addon/scroll/simplescrollbars.js index f78353a130ce3..32ba2f35eaf29 100644 --- a/media/editors/codemirror/addon/scroll/simplescrollbars.js +++ b/media/editors/codemirror/addon/scroll/simplescrollbars.js @@ -59,16 +59,20 @@ CodeMirror.on(this.node, "DOMMouseScroll", onWheel); } - Bar.prototype.moveTo = function(pos, update) { + Bar.prototype.setPos = function(pos) { if (pos < 0) pos = 0; if (pos > this.total - this.screen) pos = this.total - this.screen; - if (pos == this.pos) return; + if (pos == this.pos) return false; this.pos = pos; this.inner.style[this.orientation == "horizontal" ? "left" : "top"] = (pos * (this.size / this.total)) + "px"; - if (update !== false) this.scroll(pos, this.orientation); + return true }; + Bar.prototype.moveTo = function(pos) { + if (this.setPos(pos)) this.scroll(pos, this.orientation); + } + var minButtonSize = 10; Bar.prototype.update = function(scrollSize, clientSize, barSize) { @@ -83,8 +87,7 @@ } this.inner.style[this.orientation == "horizontal" ? "width" : "height"] = buttonSize + "px"; - this.inner.style[this.orientation == "horizontal" ? "left" : "top"] = - this.pos * (this.size / this.total) + "px"; + this.setPos(this.pos); }; function SimpleScrollbars(cls, place, scroll) { @@ -111,7 +114,6 @@ if (needsV) { this.vert.update(measure.scrollHeight, measure.clientHeight, measure.viewHeight - (needsH ? width : 0)); - this.vert.node.style.display = "block"; this.vert.node.style.bottom = needsH ? width + "px" : "0"; } if (needsH) { @@ -125,11 +127,11 @@ }; SimpleScrollbars.prototype.setScrollTop = function(pos) { - this.vert.moveTo(pos, false); + this.vert.setPos(pos); }; SimpleScrollbars.prototype.setScrollLeft = function(pos) { - this.horiz.moveTo(pos, false); + this.horiz.setPos(pos); }; SimpleScrollbars.prototype.clear = function() { diff --git a/media/editors/codemirror/addon/scroll/simplescrollbars.min.js b/media/editors/codemirror/addon/scroll/simplescrollbars.min.js index 16af8d358e698..78db43282069d 100644 --- a/media/editors/codemirror/addon/scroll/simplescrollbars.min.js +++ b/media/editors/codemirror/addon/scroll/simplescrollbars.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(b,c,d){function e(b){var c=a.wheelEventPixels(b)["horizontal"==f.orientation?"x":"y"],d=f.pos;f.moveTo(f.pos+c),f.pos!=d&&a.e_preventDefault(b)}this.orientation=c,this.scroll=d,this.screen=this.total=this.size=1,this.pos=0,this.node=document.createElement("div"),this.node.className=b+"-"+c,this.inner=this.node.appendChild(document.createElement("div"));var f=this;a.on(this.inner,"mousedown",function(b){function c(){a.off(document,"mousemove",d),a.off(document,"mouseup",c)}function d(a){return 1!=a.which?c():void f.moveTo(h+(a[e]-g)*(f.total/f.size))}if(1==b.which){a.e_preventDefault(b);var e="horizontal"==f.orientation?"pageX":"pageY",g=b[e],h=f.pos;a.on(document,"mousemove",d),a.on(document,"mouseup",c)}}),a.on(this.node,"click",function(b){a.e_preventDefault(b);var c,d=f.inner.getBoundingClientRect();c="horizontal"==f.orientation?b.clientXd.right?1:0:b.clientYd.bottom?1:0,f.moveTo(f.pos+c*f.screen)}),a.on(this.node,"mousewheel",e),a.on(this.node,"DOMMouseScroll",e)}function c(a,c,d){this.addClass=a,this.horiz=new b(a,"horizontal",d),c(this.horiz.node),this.vert=new b(a,"vertical",d),c(this.vert.node),this.width=null}b.prototype.moveTo=function(a,b){0>a&&(a=0),a>this.total-this.screen&&(a=this.total-this.screen),a!=this.pos&&(this.pos=a,this.inner.style["horizontal"==this.orientation?"left":"top"]=a*(this.size/this.total)+"px",b!==!1&&this.scroll(a,this.orientation))};var d=10;b.prototype.update=function(a,b,c){this.screen=b,this.total=a,this.size=c;var e=this.screen*(this.size/this.total);d>e&&(this.size-=d-e,e=d),this.inner.style["horizontal"==this.orientation?"width":"height"]=e+"px",this.inner.style["horizontal"==this.orientation?"left":"top"]=this.pos*(this.size/this.total)+"px"},c.prototype.update=function(a){if(null==this.width){var b=window.getComputedStyle?window.getComputedStyle(this.horiz.node):this.horiz.node.currentStyle;b&&(this.width=parseInt(b.height))}var c=this.width||0,d=a.scrollWidth>a.clientWidth+1,e=a.scrollHeight>a.clientHeight+1;return this.vert.node.style.display=e?"block":"none",this.horiz.node.style.display=d?"block":"none",e&&(this.vert.update(a.scrollHeight,a.clientHeight,a.viewHeight-(d?c:0)),this.vert.node.style.display="block",this.vert.node.style.bottom=d?c+"px":"0"),d&&(this.horiz.update(a.scrollWidth,a.clientWidth,a.viewWidth-(e?c:0)-a.barLeft),this.horiz.node.style.right=e?c+"px":"0",this.horiz.node.style.left=a.barLeft+"px"),{right:e?c:0,bottom:d?c:0}},c.prototype.setScrollTop=function(a){this.vert.moveTo(a,!1)},c.prototype.setScrollLeft=function(a){this.horiz.moveTo(a,!1)},c.prototype.clear=function(){var a=this.horiz.node.parentNode;a.removeChild(this.horiz.node),a.removeChild(this.vert.node)},a.scrollbarModel.simple=function(a,b){return new c("CodeMirror-simplescroll",a,b)},a.scrollbarModel.overlay=function(a,b){return new c("CodeMirror-overlayscroll",a,b)}}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(b,c,d){function e(b){var c=a.wheelEventPixels(b)["horizontal"==f.orientation?"x":"y"],d=f.pos;f.moveTo(f.pos+c),f.pos!=d&&a.e_preventDefault(b)}this.orientation=c,this.scroll=d,this.screen=this.total=this.size=1,this.pos=0,this.node=document.createElement("div"),this.node.className=b+"-"+c,this.inner=this.node.appendChild(document.createElement("div"));var f=this;a.on(this.inner,"mousedown",function(b){function c(){a.off(document,"mousemove",d),a.off(document,"mouseup",c)}function d(a){return 1!=a.which?c():void f.moveTo(h+(a[e]-g)*(f.total/f.size))}if(1==b.which){a.e_preventDefault(b);var e="horizontal"==f.orientation?"pageX":"pageY",g=b[e],h=f.pos;a.on(document,"mousemove",d),a.on(document,"mouseup",c)}}),a.on(this.node,"click",function(b){a.e_preventDefault(b);var c,d=f.inner.getBoundingClientRect();c="horizontal"==f.orientation?b.clientXd.right?1:0:b.clientYd.bottom?1:0,f.moveTo(f.pos+c*f.screen)}),a.on(this.node,"mousewheel",e),a.on(this.node,"DOMMouseScroll",e)}function c(a,c,d){this.addClass=a,this.horiz=new b(a,"horizontal",d),c(this.horiz.node),this.vert=new b(a,"vertical",d),c(this.vert.node),this.width=null}b.prototype.setPos=function(a){return 0>a&&(a=0),a>this.total-this.screen&&(a=this.total-this.screen),a==this.pos?!1:(this.pos=a,this.inner.style["horizontal"==this.orientation?"left":"top"]=a*(this.size/this.total)+"px",!0)},b.prototype.moveTo=function(a){this.setPos(a)&&this.scroll(a,this.orientation)};var d=10;b.prototype.update=function(a,b,c){this.screen=b,this.total=a,this.size=c;var e=this.screen*(this.size/this.total);d>e&&(this.size-=d-e,e=d),this.inner.style["horizontal"==this.orientation?"width":"height"]=e+"px",this.setPos(this.pos)},c.prototype.update=function(a){if(null==this.width){var b=window.getComputedStyle?window.getComputedStyle(this.horiz.node):this.horiz.node.currentStyle;b&&(this.width=parseInt(b.height))}var c=this.width||0,d=a.scrollWidth>a.clientWidth+1,e=a.scrollHeight>a.clientHeight+1;return this.vert.node.style.display=e?"block":"none",this.horiz.node.style.display=d?"block":"none",e&&(this.vert.update(a.scrollHeight,a.clientHeight,a.viewHeight-(d?c:0)),this.vert.node.style.bottom=d?c+"px":"0"),d&&(this.horiz.update(a.scrollWidth,a.clientWidth,a.viewWidth-(e?c:0)-a.barLeft),this.horiz.node.style.right=e?c+"px":"0",this.horiz.node.style.left=a.barLeft+"px"),{right:e?c:0,bottom:d?c:0}},c.prototype.setScrollTop=function(a){this.vert.setPos(a)},c.prototype.setScrollLeft=function(a){this.horiz.setPos(a)},c.prototype.clear=function(){var a=this.horiz.node.parentNode;a.removeChild(this.horiz.node),a.removeChild(this.vert.node)},a.scrollbarModel.simple=function(a,b){return new c("CodeMirror-simplescroll",a,b)},a.scrollbarModel.overlay=function(a,b){return new c("CodeMirror-overlayscroll",a,b)}}); \ No newline at end of file diff --git a/media/editors/codemirror/keymap/vim.js b/media/editors/codemirror/keymap/vim.js index 87b94e352b1ec..5ed2d9bf7385d 100644 --- a/media/editors/codemirror/keymap/vim.js +++ b/media/editors/codemirror/keymap/vim.js @@ -64,9 +64,9 @@ { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, { keys: 's', type: 'keyToKey', toKeys: 'cl', context: 'normal' }, - { keys: 's', type: 'keyToKey', toKeys: 'xi', context: 'visual'}, + { keys: 's', type: 'keyToKey', toKeys: 'c', context: 'visual'}, { keys: 'S', type: 'keyToKey', toKeys: 'cc', context: 'normal' }, - { keys: 'S', type: 'keyToKey', toKeys: 'dcc', context: 'visual' }, + { keys: 'S', type: 'keyToKey', toKeys: 'VdO', context: 'visual' }, { keys: '', type: 'keyToKey', toKeys: '0' }, { keys: '', type: 'keyToKey', toKeys: '$' }, { keys: '', type: 'keyToKey', toKeys: '' }, @@ -1696,11 +1696,12 @@ var line = motionArgs.forward ? cur.line + repeat : cur.line - repeat; var first = cm.firstLine(); var last = cm.lastLine(); - // Vim cancels linewise motions that start on an edge and move beyond - // that edge. It does not cancel motions that do not start on an edge. - if ((line < first && cur.line == first) || - (line > last && cur.line == last)) { - return; + // Vim go to line begin or line end when cursor at first/last line and + // move to previous/next line is triggered. + if (line < first && cur.line == first){ + return this.moveToStartOfLine(cm, head, motionArgs, vim); + }else if (line > last && cur.line == last){ + return this.moveToEol(cm, head, motionArgs, vim); } if (motionArgs.toFirstChar){ endCh=findFirstNonWhiteSpaceCharacter(cm.getLine(line)); diff --git a/media/editors/codemirror/keymap/vim.min.js b/media/editors/codemirror/keymap/vim.min.js index 1f010866705ed..00906f62dcacb 100644 --- a/media/editors/codemirror/keymap/vim.min.js +++ b/media/editors/codemirror/keymap/vim.min.js @@ -1,3 +1,3 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../lib/codemirror"),require("../addon/search/searchcursor"),require("../addon/dialog/dialog"),require("../addon/edit/matchbrackets.js")):"function"==typeof define&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/dialog/dialog","../addon/edit/matchbrackets"],a):a(CodeMirror)}(function(a){"use strict";var b=[{keys:"",type:"keyToKey",toKeys:"h"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"",type:"keyToKey",toKeys:"W"},{keys:"",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"",type:"keyToKey",toKeys:"w"},{keys:"",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"xi",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"dcc",context:"visual"},{keys:"",type:"keyToKey",toKeys:"0"},{keys:"",type:"keyToKey",toKeys:"$"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r",type:"action",action:"replace",isEdit:!0},{keys:"@",type:"action",action:"replayMacro"},{keys:"q",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0}},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"",type:"action",action:"redo"},{keys:"m",type:"action",action:"setMark"},{keys:'"',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"a",type:"motion",motion:"textObjectManipulation"},{keys:"i",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],c=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],d=a.Pos,e=function(){function e(b){b.setOption("disableInput",!0),b.setOption("showCursorWhenSelecting",!1),a.signal(b,"vim-mode-change",{mode:"normal"}),b.on("cursorActivity",ab),x(b),a.on(b.getInputField(),"paste",k(b))}function f(b){b.setOption("disableInput",!1),b.off("cursorActivity",ab),a.off(b.getInputField(),"paste",k(b)),b.state.vim=null}function g(b,c){this==a.keyMap.vim&&a.rmClass(b.getWrapperElement(),"cm-fat-cursor"),c&&c.attach==h||f(b,!1)}function h(b,c){this==a.keyMap.vim&&a.addClass(b.getWrapperElement(),"cm-fat-cursor"),c&&c.attach==h||e(b)}function i(b,c){if(!c)return void 0;var d=j(b);if(!d)return!1;var e=a.Vim.findKey(c,d);return"function"==typeof e&&a.signal(c,"vim-keypress",d),e}function j(a){if("'"==a.charAt(0))return a.charAt(1);var b=a.split(/-(?!$)/),c=b[b.length-1];if(1==b.length&&1==b[0].length)return!1;if(2==b.length&&"Shift"==b[0]&&1==c.length)return!1;for(var d=!1,e=0;e"):!1}function k(a){var b=a.state.vim;return b.onPasteFn||(b.onPasteFn=function(){b.insertMode||(a.setCursor(L(a.getCursor(),0,1)),Ab.enterInsertMode(a,{},b))}),b.onPasteFn}function l(a,b){for(var c=[],d=a;a+b>d;d++)c.push(String.fromCharCode(d));return c}function m(a,b){return b>=a.firstLine()&&b<=a.lastLine()}function n(a){return/^[a-z]$/.test(a)}function o(a){return-1!="()[]{}".indexOf(a)}function p(a){return jb.test(a)}function q(a){return/^[A-Z]$/.test(a)}function r(a){return/^\s*$/.test(a)}function s(a,b){for(var c=0;cd;d++)c.push(a);return c}function H(a,b){zb[a]=b}function I(a,b){Ab[a]=b}function J(a,b,c){var e=Math.min(Math.max(a.firstLine(),b.line),a.lastLine()),f=X(a,e)-1;f=c?f+1:f;var g=Math.min(Math.max(0,b.ch),f);return d(e,g)}function K(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function L(a,b,c){return"object"==typeof b&&(c=b.ch,b=b.line),d(a.line+b,a.ch+c)}function M(a,b){return{line:b.line-a.line,ch:b.line-a.line}}function N(a,b,c,d){for(var e,f=[],g=[],h=0;h"==b.slice(-11)){var c=b.length-11,d=a.slice(0,c),e=b.slice(0,c);return d==e&&a.length>c?"full":0==e.indexOf(d)?"partial":!1}return a==b?"full":0==b.indexOf(a)?"partial":!1}function P(a){var b=/^.*(<[\w\-]+>)$/.exec(a),c=b?b[1]:a.slice(-1);if(c.length>1)switch(c){case"":c="\n";break;case"":c=" "}return c}function Q(a,b,c){return function(){for(var d=0;c>d;d++)b(a)}}function R(a){return d(a.line,a.ch)}function S(a,b){return a.ch==b.ch&&a.line==b.line}function T(a,b){return a.line2&&(b=U.apply(void 0,Array.prototype.slice.call(arguments,1))),T(a,b)?a:b}function V(a,b){return arguments.length>2&&(b=V.apply(void 0,Array.prototype.slice.call(arguments,1))),T(a,b)?b:a}function W(a,b,c){var d=T(a,b),e=T(b,c);return d&&e}function X(a,b){return a.getLine(b).length}function Y(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function Z(a){return a.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function $(a,b,c){var e=X(a,b),f=new Array(c-e+1).join(" ");a.setCursor(d(b,e)),a.replaceRange(f,a.getCursor())}function _(a,b){var c=[],e=a.listSelections(),f=R(a.clipPos(b)),g=!S(b,f),h=a.getCursor("head"),i=ba(e,h),j=S(e[i].head,e[i].anchor),k=e.length-1,l=k-i>i?k:0,m=e[l].anchor,n=Math.min(m.line,f.line),o=Math.max(m.line,f.line),p=m.ch,q=f.ch,r=e[l].head.ch-p,s=q-p;r>0&&0>=s?(p++,g||q--):0>r&&s>=0?(p--,j||q++):0>r&&-1==s&&(p--,q++);for(var t=n;o>=t;t++){var u={anchor:new d(t,p),head:new d(t,q)};c.push(u)}return i=f.line==o?c.length-1:0,a.setSelections(c),b.ch=q,m.ch=p,m}function aa(a,b,c){for(var d=[],e=0;c>e;e++){var f=L(b,e,0);d.push({anchor:f,head:f})}a.setSelections(d,0)}function ba(a,b,c){for(var d=0;dj&&(f.line=j),f.ch=X(a,f.line)}return{ranges:[{anchor:g,head:f}],primary:0}}if("block"==c){for(var k=Math.min(g.line,f.line),l=Math.min(g.ch,f.ch),m=Math.max(g.line,f.line),n=Math.max(g.ch,f.ch)+1,o=m-k+1,p=f.line==k?0:o-1,q=[],r=0;o>r;r++)q.push({anchor:d(k+r,l),head:d(k+r,n)});return{ranges:q,primary:p}}}function ha(a){var b=a.getCursor("head");return 1==a.getSelection().length&&(b=U(b,a.getCursor("anchor"))),b}function ia(b,c){var d=b.state.vim;c!==!1&&b.setCursor(J(b,d.sel.head)),da(b,d),d.visualMode=!1,d.visualLine=!1,d.visualBlock=!1,a.signal(b,"vim-mode-change",{mode:"normal"}),d.fakeCursor&&d.fakeCursor.clear()}function ja(a,b,c){var d=a.getRange(b,c);if(/\n\s*$/.test(d)){var e=d.split("\n");e.pop();for(var f,f=e.pop();e.length>0&&f&&r(f);f=e.pop())c.line--,c.ch=0;f?(c.line--,c.ch=X(a,c.line)):c.ch=0}}function ka(a,b,c){b.ch=0,c.ch=0,c.line++}function la(a){if(!a)return 0;var b=a.search(/\S/);return-1==b?a.length:b}function ma(a,b,c,e,f){for(var g=ha(a),h=a.getLine(g.line),i=g.ch,j=f?kb[0]:lb[0];!j(h.charAt(i));)if(i++,i>=h.length)return null;e?j=lb[0]:(j=kb[0],j(h.charAt(i))||(j=kb[1]));for(var k=i,l=i;j(h.charAt(k))&&k=0;)l--;if(l++,b){for(var m=k;/\s/.test(h.charAt(k))&&k0;)l--;l||(l=n)}}return{start:d(g.line,l),end:d(g.line,k)}}function na(a,b,c){S(b,c)||ub.jumpList.add(a,b,c)}function oa(a,b){ub.lastChararacterSearch.increment=a,ub.lastChararacterSearch.forward=b.forward,ub.lastChararacterSearch.selectedCharacter=b.selectedCharacter}function pa(a,b,c,e){var f=R(a.getCursor()),g=c?1:-1,h=c?a.lineCount():-1,i=f.ch,j=f.line,k=a.getLine(j),l={lineText:k,nextCh:k.charAt(i),lastCh:null,index:i,symb:e,reverseSymb:(c?{")":"(","}":"{"}:{"(":")","{":"}"})[e],forward:c,depth:0,curMoveThrough:!1},m=Bb[e];if(!m)return f;var n=Cb[m].init,o=Cb[m].isComplete;for(n&&n(l);j!==h&&b;){if(l.index+=g,l.nextCh=l.lineText.charAt(l.index),!l.nextCh){if(j+=g,l.lineText=a.getLine(j)||"",g>0)l.index=0;else{var p=l.lineText.length;l.index=p>0?p-1:0}l.nextCh=l.lineText.charAt(l.index)}o(l)&&(f.line=j,f.ch=l.index,b--)}return l.nextCh||l.curMoveThrough?d(j,l.index):f}function qa(a,b,c,d,e){var f=b.line,g=b.ch,h=a.getLine(f),i=c?1:-1,j=d?lb:kb;if(e&&""==h){if(f+=i,h=a.getLine(f),!m(a,f))return null;g=c?0:h.length}for(;;){if(e&&""==h)return{from:0,to:0,line:f};for(var k=i>0?h.length:-1,l=k,n=k;g!=k;){for(var o=!1,p=0;p0?0:h.length}throw new Error("The impossible happened.")}function ra(a,b,c,e,f,g){var h=R(b),i=[];(e&&!f||!e&&f)&&c++;for(var j=!(e&&f),k=0;c>k;k++){var l=qa(a,b,e,g,j);if(!l){var m=X(a,a.lastLine());i.push(e?{line:a.lastLine(),from:m,to:m}:{line:0,from:0,to:0});break}i.push(l),b=d(l.line,e?l.to-1:l.from)}var n=i.length!=c,o=i[0],p=i.pop();return e&&!f?(n||o.from==h.ch&&o.line==h.line||(p=i.pop()),d(p.line,p.from)):e&&f?d(p.line,p.to-1):!e&&f?(n||o.to==h.ch&&o.line==h.line||(p=i.pop()),d(p.line,p.to)):d(p.line,p.from)}function sa(a,b,c,e){for(var f,g=a.getCursor(),h=g.ch,i=0;b>i;i++){var j=a.getLine(g.line);if(f=va(h,j,e,c,!0),-1==f)return null;h=f}return d(a.getCursor().line,f)}function ta(a,b){var c=a.getCursor().line;return J(a,d(c,b-1))}function ua(a,b,c,d){s(c,pb)&&(b.marks[c]&&b.marks[c].clear(),b.marks[c]=a.setBookmark(d))}function va(a,b,c,d,e){var f;return d?(f=b.indexOf(c,a+1),-1==f||e||(f-=1)):(f=b.lastIndexOf(c,a-1),-1==f||e||(f+=1)),f}function wa(a,b,c,e,f){function g(b){return!a.getLine(b)}function h(a,b,c){return c?g(a)!=g(a+b):!g(a)&&g(a+b)}var i,j,k=b.line,l=a.firstLine(),m=a.lastLine(),n=k;if(e){for(;n>=l&&m>=n&&c>0;)h(n,e)&&c--,n+=e;return new d(n,0)}var o=a.state.vim;if(o.visualLine&&h(k,1,!0)){var p=o.sel.anchor;h(p.line,-1,!0)&&(f&&p.line==k||(k+=1))}var q=g(k);for(n=k;m>=n&&c;n++)h(n,1,!0)&&(f&&g(n)==q||c--);for(j=new d(n,0),n>m&&!q?q=!0:f=!1,n=k;n>l&&(f&&g(n)!=q&&n!=k||!h(n,-1,!0));n--);return i=new d(n,0),{start:i,end:j}}function xa(a,b,c,e){var f,g,h=b,i={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/}[c],j={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{"}[c],k=a.getLine(h.line).charAt(h.ch),l=k===j?1:0;if(f=a.scanForBracket(d(h.line,h.ch+l),-1,null,{bracketRegex:i}),g=a.scanForBracket(d(h.line,h.ch+l),1,null,{bracketRegex:i}),!f||!g)return{start:h,end:h};if(f=f.pos,g=g.pos,f.line==g.line&&f.ch>g.ch||f.line>g.line){var m=f;f=g,g=m}return e?g.ch+=1:f.ch+=1,{start:f,end:g}}function ya(a,b,c,e){var f,g,h,i,j=R(b),k=a.getLine(j.line),l=k.split(""),m=l.indexOf(c);if(j.ch-1&&!f;h--)l[h]==c&&(f=h+1);else f=j.ch+1;if(f&&!g)for(h=f,i=l.length;i>h&&!g;h++)l[h]==c&&(g=h);return f&&g?(e&&(--f,++g),{start:d(j.line,f),end:d(j.line,g)}):{start:j,end:j}}function za(){}function Aa(a){var b=a.state.vim;return b.searchState_||(b.searchState_=new za)}function Ba(a,b,c,d,e){a.openDialog?a.openDialog(b,d,{bottom:!0,value:e.value,onKeyDown:e.onKeyDown,onKeyUp:e.onKeyUp,selectValueOnOpen:!1}):d(prompt(c,""))}function Ca(a){var b=Da(a)||[];if(!b.length)return[];var c=[];if(0===b[0]){for(var d=0;d'+b+"",{bottom:!0,duration:5e3}):alert(b)}function Ja(a,b){var c="";return a&&(c+=''+a+""),c+=' ',b&&(c+='',c+=b,c+=""),c}function Ka(a,b){var c=(b.prefix||"")+" "+(b.desc||""),d=Ja(b.prefix,b.desc);Ba(a,d,c,b.onClose,b)}function La(a,b){if(a instanceof RegExp&&b instanceof RegExp){for(var c=["global","multiline","ignoreCase","source"],d=0;dh;h++){var i=g.find(b);if(0==h&&i&&S(g.from(),f)&&(i=g.find(b)),!i&&(g=a.getSearchCursor(c,b?d(a.lastLine()):d(a.firstLine(),0)),!g.find(b)))return}return g.from()})}function Qa(a){var b=Aa(a);a.removeOverlay(Aa(a).getOverlay()),b.setOverlay(null),b.getScrollbarAnnotate()&&(b.getScrollbarAnnotate().clear(),b.setScrollbarAnnotate(null))}function Ra(a,b,c){return"number"!=typeof a&&(a=a.line),b instanceof Array?s(a,b):c?a>=b&&c>=a:a==b}function Sa(a){var b=a.getScrollInfo(),c=6,d=10,e=a.coordsChar({left:0,top:c+b.top},"local"),f=b.clientHeight-d+b.top,g=a.coordsChar({left:0,top:f},"local");return{top:e.line,bottom:g.line}}function Ta(b,c,d,e,f,g,h,i,j){function k(){b.operation(function(){for(;!p;)l(),m();n()})}function l(){var a=b.getRange(g.from(),g.to()),c=a.replace(h,i);g.replace(c)}function m(){for(;g.findNext()&&Ra(g.from(),e,f);)if(d||!q||g.from().line!=q.line)return b.scrollIntoView(g.from(),30),b.setSelection(g.from(),g.to()),q=g.from(),void(p=!1);p=!0}function n(a){if(a&&a(),b.focus(),q){b.setCursor(q);var c=b.state.vim;c.exMode=!1,c.lastHPos=c.lastHSPos=q.ch}j&&j()}function o(c,d,e){a.e_stop(c);var f=a.keyName(c);switch(f){case"Y":l(),m();break;case"N":m();break;case"A":var g=j;j=void 0,b.operation(k),j=g;break;case"L":l();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":n(e)}return p&&n(e),!0}b.state.vim.exMode=!0;var p=!1,q=g.from();return m(),p?void Ia(b,"No matches for "+h.source):c?void Ka(b,{prefix:"replace with "+i+" (y/n/a/q/l)",onKeyDown:o}):(k(),void(j&&j()))}function Ua(b){var c=b.state.vim,d=ub.macroModeState,e=ub.registerController.getRegister("."),f=d.isPlaying,g=d.lastInsertModeChanges,h=[];if(!f){for(var i=g.inVisualBlock?c.lastSelection.visualBlock.height:1,j=g.changes,h=[],k=0;k1&&(fb(b,c,c.insertModeRepeat-1,!0),c.lastEditInputState.repeatOverride=c.insertModeRepeat),delete c.insertModeRepeat,c.insertMode=!1,b.setCursor(b.getCursor().line,b.getCursor().ch-1),b.setOption("keyMap","vim"),b.setOption("disableInput",!0),b.toggleOverwrite(!1),e.setText(g.changes.join("")),a.signal(b,"vim-mode-change",{mode:"normal"}),d.isRecording&&Za(d)}function Va(a){b.unshift(a)}function Wa(a,b,c,d,e){var f={keys:a,type:b};f[b]=c,f[b+"Args"]=d;for(var g in e)f[g]=e[g];Va(f)}function Xa(b,c,d,e){var f=ub.registerController.getRegister(e);if(":"==e)return f.keyBuffer[0]&&Ib.processCommand(b,f.keyBuffer[0]),void(d.isPlaying=!1);var g=f.keyBuffer,h=0;d.isPlaying=!0,d.replaySearchQueries=f.searchQueries.slice(0);for(var i=0;i|<\w+>|./.exec(l),k=j[0],l=l.substring(j.index+k.length),a.Vim.handleKey(b,k,"macro"),c.insertMode){var m=f.insertModeChanges[h++].changes; -ub.macroModeState.lastInsertModeChanges.changes=m,gb(b,m,1),Ua(b)}d.isPlaying=!1}function Ya(a,b){if(!a.isPlaying){var c=a.latestRegister,d=ub.registerController.getRegister(c);d&&d.pushText(b)}}function Za(a){if(!a.isPlaying){var b=a.latestRegister,c=ub.registerController.getRegister(b);c&&c.pushInsertModeChanges&&c.pushInsertModeChanges(a.lastInsertModeChanges)}}function $a(a,b){if(!a.isPlaying){var c=a.latestRegister,d=ub.registerController.getRegister(c);d&&d.pushSearchQuery&&d.pushSearchQuery(b)}}function _a(a,b){var c=ub.macroModeState,d=c.lastInsertModeChanges;if(!c.isPlaying)for(;b;){if(d.expectCursorActivityForChange=!0,"+input"==b.origin||"paste"==b.origin||void 0===b.origin){var e=b.text.join("\n");d.changes.push(e)}b=b.next}}function ab(a){var b=a.state.vim;if(b.insertMode){var c=ub.macroModeState;if(c.isPlaying)return;var d=c.lastInsertModeChanges;d.expectCursorActivityForChange?d.expectCursorActivityForChange=!1:d.changes=[]}else a.curOp.isVimOp||cb(a,b);b.visualMode&&bb(a)}function bb(a){var b=a.state.vim,c=J(a,R(b.sel.head)),d=L(c,0,1);b.fakeCursor&&b.fakeCursor.clear(),b.fakeCursor=a.markText(c,d,{className:"cm-animate-fat-cursor"})}function cb(b,c){var d=b.getCursor("anchor"),e=b.getCursor("head");if(c.visualMode&&!b.somethingSelected()?ia(b,!1):c.visualMode||c.insertMode||!b.somethingSelected()||(c.visualMode=!0,c.visualLine=!1,a.signal(b,"vim-mode-change",{mode:"visual"})),c.visualMode){var f=T(e,d)?0:-1,g=T(e,d)?-1:0;e=L(e,0,f),d=L(d,0,g),c.sel={anchor:d,head:e},ua(b,c,"<",U(e,d)),ua(b,c,">",V(e,d))}else c.insertMode||(c.lastHPos=b.getCursor().ch)}function db(a){this.keyName=a}function eb(b){function c(){return e.changes.push(new db(f)),!0}var d=ub.macroModeState,e=d.lastInsertModeChanges,f=a.keyName(b);f&&(-1!=f.indexOf("Delete")||-1!=f.indexOf("Backspace"))&&a.lookupKey(f,"vim-insert",c)}function fb(a,b,c,d){function e(){h?xb.processAction(a,b,b.lastEditActionCommand):xb.evalInput(a,b)}function f(c){if(g.lastInsertModeChanges.changes.length>0){c=b.lastEditActionCommand?c:1;var d=g.lastInsertModeChanges;gb(a,d.changes,c)}}var g=ub.macroModeState;g.isPlaying=!0;var h=!!b.lastEditActionCommand,i=b.inputState;if(b.inputState=b.lastEditInputState,h&&b.lastEditActionCommand.interlaceInsertRepeat)for(var j=0;c>j;j++)e(),f(1);else d||e(),f(c);b.inputState=i,b.insertMode&&!d&&Ua(a),g.isPlaying=!1}function gb(b,c,d){function e(c){return"string"==typeof c?a.commands[c](b):c(b),!0}var f=b.getCursor("head"),g=ub.macroModeState.lastInsertModeChanges.inVisualBlock;if(g){var h=b.state.vim,i=h.lastSelection,j=M(i.anchor,i.head);aa(b,f,j.line+1),d=b.listSelections().length,b.setCursor(f)}for(var k=0;d>k;k++){g&&b.setCursor(L(f,k,0));for(var l=0;l"]),qb=[].concat(mb,nb,ob,["-",'"',".",":","/"]),rb={};t("filetype",void 0,"string",["ft"],function(a,b){if(void 0!==b){if(void 0===a){var c=b.getOption("mode");return"null"==c?"":c}var c=""==a?"null":a;b.setOption("mode",c)}});var sb=function(){function a(a,b,h){function i(b){var e=++d%c,f=g[e];f&&f.clear(),g[e]=a.setBookmark(b)}var j=d%c,k=g[j];if(k){var l=k.find();l&&!S(l,b)&&i(b)}else i(b);i(h),e=d,f=d-c+1,0>f&&(f=0)}function b(a,b){d+=b,d>e?d=e:f>d&&(d=f);var h=g[(c+d)%c];if(h&&!h.find()){var i,j=b>0?1:-1,k=a.getCursor();do if(d+=j,h=g[(c+d)%c],h&&(i=h.find())&&!S(k,i))break;while(e>d&&d>f)}return h}var c=100,d=-1,e=0,f=0,g=new Array(c);return{cachedCursor:void 0,add:a,move:b}},tb=function(a){return a?{changes:a.changes,expectCursorActivityForChange:a.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};w.prototype={exitMacroRecordMode:function(){var a=ub.macroModeState;a.onRecordingDone&&a.onRecordingDone(),a.onRecordingDone=void 0,a.isRecording=!1},enterMacroRecordMode:function(a,b){var c=ub.registerController.getRegister(b);c&&(c.clear(),this.latestRegister=b,a.openDialog&&(this.onRecordingDone=a.openDialog("(recording)["+b+"]",null,{bottom:!0})),this.isRecording=!0)}};var ub,vb,wb={buildKeyMap:function(){},getRegisterController:function(){return ub.registerController},resetVimGlobalState_:y,getVimGlobalState_:function(){return ub},maybeInitVimState_:x,suppressErrorLogging:!1,InsertModeKey:db,map:function(a,b,c){Ib.map(a,b,c)},unmap:function(a,b){Ib.unmap(a,b)},setOption:u,getOption:v,defineOption:t,defineEx:function(a,b,c){if(b){if(0!==a.indexOf(b))throw new Error('(Vim.defineEx) "'+b+'" is not a prefix of "'+a+'", command not registered')}else b=a;Hb[a]=c,Ib.commandMap_[b]={name:a,shortName:b,type:"api"}},handleKey:function(a,b,c){var d=this.findKey(a,b,c);return"function"==typeof d?d():void 0},findKey:function(c,d,e){function f(){var a=ub.macroModeState;if(a.isRecording){if("q"==d)return a.exitMacroRecordMode(),A(c),!0;"mapping"!=e&&Ya(a,d)}}function g(){return""==d?(A(c),l.visualMode?ia(c):l.insertMode&&Ua(c),!0):void 0}function h(b){for(var e;b;)e=/<\w+-.+?>|<\w+>|./.exec(b),d=e[0],b=b.substring(e.index+d.length),a.Vim.handleKey(c,d,"mapping")}function i(){if(g())return!0;for(var a=l.inputState.keyBuffer=l.inputState.keyBuffer+d,e=1==d.length,f=xb.matchCommand(a,b,l.inputState,"insert");a.length>1&&"full"!=f.type;){var a=l.inputState.keyBuffer=a.slice(1),h=xb.matchCommand(a,b,l.inputState,"insert");"none"!=h.type&&(f=h)}if("none"==f.type)return A(c),!1;if("partial"==f.type)return vb&&window.clearTimeout(vb),vb=window.setTimeout(function(){l.insertMode&&l.inputState.keyBuffer&&A(c)},v("insertModeEscKeysTimeout")),!e;if(vb&&window.clearTimeout(vb),e){var i=c.getCursor();c.replaceRange("",L(i,0,-(a.length-1)),i,"+input")}return A(c),f.command}function j(){if(f()||g())return!0;var a=l.inputState.keyBuffer=l.inputState.keyBuffer+d;if(/^[1-9]\d*$/.test(a))return!0;var e=/^(\d*)(.*)$/.exec(a);if(!e)return A(c),!1;var h=l.visualMode?"visual":"normal",i=xb.matchCommand(e[2]||e[1],b,l.inputState,h);if("none"==i.type)return A(c),!1;if("partial"==i.type)return!0;l.inputState.keyBuffer="";var e=/^(\d*)(.*)$/.exec(a);return e[1]&&"0"!=e[1]&&l.inputState.pushRepeatDigit(e[1]),i.command}var k,l=x(c);return k=l.insertMode?i():j(),k===!1?void 0:k===!0?function(){}:function(){return c.operation(function(){c.curOp.isVimOp=!0;try{"keyToKey"==k.type?h(k.toKeys):xb.processCommand(c,l,k)}catch(b){throw c.state.vim=void 0,x(c),a.Vim.suppressErrorLogging||console.log(b),b}return!0})}},handleEx:function(a,b){Ib.processCommand(a,b)},defineMotion:F,defineAction:I,defineOperator:H,mapCommand:Wa,_mapCommand:Va,defineRegister:C,exitVisualMode:ia,exitInsertMode:Ua};z.prototype.pushRepeatDigit=function(a){this.operator?this.motionRepeat=this.motionRepeat.concat(a):this.prefixRepeat=this.prefixRepeat.concat(a)},z.prototype.getRepeat=function(){var a=0;return(this.prefixRepeat.length>0||this.motionRepeat.length>0)&&(a=1,this.prefixRepeat.length>0&&(a*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(a*=parseInt(this.motionRepeat.join(""),10))),a},B.prototype={setText:function(a,b,c){this.keyBuffer=[a||""],this.linewise=!!b,this.blockwise=!!c},pushText:function(a,b){b&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(a)},pushInsertModeChanges:function(a){this.insertModeChanges.push(tb(a))},pushSearchQuery:function(a){this.searchQueries.push(a)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},D.prototype={pushText:function(a,b,c,d,e){d&&"\n"==c.charAt(0)&&(c=c.slice(1)+"\n"),d&&"\n"!==c.charAt(c.length-1)&&(c+="\n");var f=this.isValidRegister(a)?this.getRegister(a):null;if(!f){switch(b){case"yank":this.registers[0]=new B(c,d,e);break;case"delete":case"change":-1==c.indexOf("\n")?this.registers["-"]=new B(c,d):(this.shiftNumericRegisters_(),this.registers[1]=new B(c,d))}return void this.unnamedRegister.setText(c,d,e)}var g=q(a);g?f.pushText(c,d):f.setText(c,d,e),this.unnamedRegister.setText(f.toString(),d)},getRegister:function(a){return this.isValidRegister(a)?(a=a.toLowerCase(),this.registers[a]||(this.registers[a]=new B),this.registers[a]):this.unnamedRegister},isValidRegister:function(a){return a&&s(a,qb)},shiftNumericRegisters_:function(){for(var a=9;a>=2;a--)this.registers[a]=this.getRegister(""+(a-1))}},E.prototype={nextMatch:function(a,b){var c=this.historyBuffer,d=b?-1:1;null===this.initialPrefix&&(this.initialPrefix=a);for(var e=this.iterator+d;b?e>=0:e=c.length?(this.iterator=c.length,this.initialPrefix):0>e?a:void 0},pushInput:function(a){var b=this.historyBuffer.indexOf(a);b>-1&&this.historyBuffer.splice(b,1),a.length&&this.historyBuffer.push(a)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var xb={matchCommand:function(a,b,c,d){var e=N(a,b,d,c);if(!e.full&&!e.partial)return{type:"none"};if(!e.full&&e.partial)return{type:"partial"};for(var f,g=0;g"==f.keys.slice(-11)&&(c.selectedCharacter=P(a)),{type:"full",command:f}},processCommand:function(a,b,c){switch(b.inputState.repeatOverride=c.repeatOverride,c.type){case"motion":this.processMotion(a,b,c);break;case"operator":this.processOperator(a,b,c);break;case"operatorMotion":this.processOperatorMotion(a,b,c);break;case"action":this.processAction(a,b,c);break;case"search":this.processSearch(a,b,c);break;case"ex":case"keyToEx":this.processEx(a,b,c)}},processMotion:function(a,b,c){b.inputState.motion=c.motion,b.inputState.motionArgs=K(c.motionArgs),this.evalInput(a,b)},processOperator:function(a,b,c){var d=b.inputState;if(d.operator){if(d.operator==c.operator)return d.motion="expandToLine",d.motionArgs={linewise:!0},void this.evalInput(a,b);A(a)}d.operator=c.operator,d.operatorArgs=K(c.operatorArgs),b.visualMode&&this.evalInput(a,b)},processOperatorMotion:function(a,b,c){var d=b.visualMode,e=K(c.operatorMotionArgs);e&&d&&e.visualLine&&(b.visualLine=!0),this.processOperator(a,b,c),d||this.processMotion(a,b,c)},processAction:function(a,b,c){var d=b.inputState,e=d.getRepeat(),f=!!e,g=K(c.actionArgs)||{};d.selectedCharacter&&(g.selectedCharacter=d.selectedCharacter),c.operator&&this.processOperator(a,b,c),c.motion&&this.processMotion(a,b,c),(c.motion||c.operator)&&this.evalInput(a,b),g.repeat=e||1,g.repeatIsExplicit=f,g.registerName=d.registerName,A(a),b.lastMotion=null,c.isEdit&&this.recordLastEdit(b,d,c),Ab[c.action](a,g,b)},processSearch:function(b,c,d){function e(a,e,f){ub.searchHistoryController.pushInput(a),ub.searchHistoryController.reset();try{Ma(b,a,e,f)}catch(g){return Ia(b,"Invalid regex: "+a),void A(b)}xb.processMotion(b,c,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:d.searchArgs.toJumplist}})}function f(a){b.scrollTo(m.left,m.top),e(a,!0,!0);var c=ub.macroModeState;c.isRecording&&$a(c,a)}function g(c,d,e){var f,g=a.keyName(c);"Up"==g||"Down"==g?(f="Up"==g?!0:!1,d=ub.searchHistoryController.nextMatch(d,f)||"",e(d)):"Left"!=g&&"Right"!=g&&"Ctrl"!=g&&"Alt"!=g&&"Shift"!=g&&ub.searchHistoryController.reset();var h;try{h=Ma(b,d,!0,!0)}catch(c){}h?b.scrollIntoView(Pa(b,!i,h),30):(Qa(b),b.scrollTo(m.left,m.top))}function h(c,d,e){var f=a.keyName(c);"Esc"==f||"Ctrl-C"==f||"Ctrl-["==f||"Backspace"==f&&""==d?(ub.searchHistoryController.pushInput(d),ub.searchHistoryController.reset(),Ma(b,l),Qa(b),b.scrollTo(m.left,m.top),a.e_stop(c),A(b),e(),b.focus()):"Ctrl-U"==f&&(a.e_stop(c),e(""))}if(b.getSearchCursor){var i=d.searchArgs.forward,j=d.searchArgs.wholeWordOnly;Aa(b).setReversed(!i);var k=i?"/":"?",l=Aa(b).getQuery(),m=b.getScrollInfo();switch(d.searchArgs.querySrc){case"prompt":var n=ub.macroModeState;if(n.isPlaying){var o=n.replaySearchQueries.shift();e(o,!0,!1)}else Ka(b,{onClose:f,prefix:k,desc:Fb,onKeyUp:g,onKeyDown:h});break;case"wordUnderCursor":var p=ma(b,!1,!0,!1,!0),q=!0;if(p||(p=ma(b,!1,!0,!1,!1),q=!1),!p)return;var o=b.getLine(p.start.line).substring(p.start.ch,p.end.ch);o=q&&j?"\\b"+o+"\\b":Z(o),ub.jumpList.cachedCursor=b.getCursor(),b.setCursor(p.start),e(o,!0,!1)}}},processEx:function(b,c,d){function e(a){ub.exCommandHistoryController.pushInput(a),ub.exCommandHistoryController.reset(),Ib.processCommand(b,a)}function f(c,d,e){var f,g=a.keyName(c);("Esc"==g||"Ctrl-C"==g||"Ctrl-["==g||"Backspace"==g&&""==d)&&(ub.exCommandHistoryController.pushInput(d),ub.exCommandHistoryController.reset(),a.e_stop(c),A(b),e(),b.focus()),"Up"==g||"Down"==g?(f="Up"==g?!0:!1,d=ub.exCommandHistoryController.nextMatch(d,f)||"",e(d)):"Ctrl-U"==g?(a.e_stop(c),e("")):"Left"!=g&&"Right"!=g&&"Ctrl"!=g&&"Alt"!=g&&"Shift"!=g&&ub.exCommandHistoryController.reset()}"keyToEx"==d.type?Ib.processCommand(b,d.exArgs.input):c.visualMode?Ka(b,{onClose:e,prefix:":",value:"'<,'>",onKeyDown:f}):Ka(b,{onClose:e,prefix:":",onKeyDown:f})},evalInput:function(a,b){var c,e,f,g=b.inputState,h=g.motion,i=g.motionArgs||{},j=g.operator,k=g.operatorArgs||{},l=g.registerName,m=b.sel,n=R(b.visualMode?J(a,m.head):a.getCursor("head")),o=R(b.visualMode?J(a,m.anchor):a.getCursor("anchor")),p=R(n),q=R(o);if(j&&this.recordLastEdit(b,g),f=void 0!==g.repeatOverride?g.repeatOverride:g.getRepeat(),f>0&&i.explicitRepeat?i.repeatIsExplicit=!0:(i.noRepeat||!i.explicitRepeat&&0===f)&&(f=1,i.repeatIsExplicit=!1),g.selectedCharacter&&(i.selectedCharacter=k.selectedCharacter=g.selectedCharacter),i.repeat=f,A(a),h){var r=yb[h](a,n,i,b);if(b.lastMotion=yb[h],!r)return;if(i.toJumplist){var s=ub.jumpList,t=s.cachedCursor;t?(na(a,t,r),delete s.cachedCursor):na(a,n,r)}r instanceof Array?(e=r[0],c=r[1]):c=r,c||(c=R(n)),b.visualMode?(b.visualBlock&&c.ch===1/0||(c=J(a,c,b.visualBlock)),e&&(e=J(a,e,!0)),e=e||q,m.anchor=e,m.head=c,fa(a),ua(a,b,"<",T(e,c)?e:c),ua(a,b,">",T(e,c)?c:e)):j||(c=J(a,c),a.setCursor(c.line,c.ch))}if(j){if(k.lastSel){e=q;var u=k.lastSel,v=Math.abs(u.head.line-u.anchor.line),w=Math.abs(u.head.ch-u.anchor.ch);c=u.visualLine?d(q.line+v,q.ch):u.visualBlock?d(q.line+v,q.ch+w):u.head.line==u.anchor.line?d(q.line,q.ch+w):d(q.line+v,q.ch),b.visualMode=!0,b.visualLine=u.visualLine,b.visualBlock=u.visualBlock,m=b.sel={anchor:e,head:c},fa(a)}else b.visualMode&&(k.lastSel={anchor:R(m.anchor),head:R(m.head),visualBlock:b.visualBlock,visualLine:b.visualLine});var x,y,z,B,C;if(b.visualMode){if(x=U(m.head,m.anchor),y=V(m.head,m.anchor),z=b.visualLine||k.linewise,B=b.visualBlock?"block":z?"line":"char",C=ga(a,{anchor:x,head:y},B),z){var D=C.ranges;if("block"==B)for(var E=0;Ei&&f.line==j||i>k&&f.line==k?void 0:(c.toFirstChar&&(g=la(a.getLine(i)),e.lastHPos=g),e.lastHSPos=a.charCoords(d(i,g),"div").left,d(i,g))},moveByDisplayLines:function(a,b,c,e){var f=b;switch(e.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:e.lastHSPos=a.charCoords(f,"div").left}var g=c.repeat,h=a.findPosV(f,c.forward?g:-g,"line",e.lastHSPos);if(h.hitSide)if(c.forward)var i=a.charCoords(h,"div"),j={top:i.top+8,left:e.lastHSPos},h=a.coordsChar(j,"div");else{var k=a.charCoords(d(a.firstLine(),0),"div");k.left=e.lastHSPos,h=a.coordsChar(k,"div")}return e.lastHPos=h.ch,h},moveByPage:function(a,b,c){var d=b,e=c.repeat;return a.findPosV(d,c.forward?e:-e,"page")},moveByParagraph:function(a,b,c){var d=c.forward?1:-1;return wa(a,b,c.repeat,d)},moveByScroll:function(a,b,c,d){var e=a.getScrollInfo(),f=null,g=c.repeat;g||(g=e.clientHeight/(2*a.defaultTextHeight()));var h=a.charCoords(b,"local");c.repeat=g;var f=yb.moveByDisplayLines(a,b,c,d);if(!f)return null;var i=a.charCoords(f,"local");return a.scrollTo(null,e.top+i.top-h.top),f},moveByWords:function(a,b,c){return ra(a,b,c.repeat,!!c.forward,!!c.wordEnd,!!c.bigWord)},moveTillCharacter:function(a,b,c){var d=c.repeat,e=sa(a,d,c.forward,c.selectedCharacter),f=c.forward?-1:1;return oa(f,c),e?(e.ch+=f,e):null},moveToCharacter:function(a,b,c){var d=c.repeat;return oa(0,c),sa(a,d,c.forward,c.selectedCharacter)||b},moveToSymbol:function(a,b,c){var d=c.repeat;return pa(a,d,c.forward,c.selectedCharacter)||b},moveToColumn:function(a,b,c,d){var e=c.repeat;return d.lastHPos=e-1,d.lastHSPos=a.charCoords(b,"div").left,ta(a,e)},moveToEol:function(a,b,c,e){var f=b;e.lastHPos=1/0;var g=d(f.line+c.repeat-1,1/0),h=a.clipPos(g);return h.ch--,e.lastHSPos=a.charCoords(h,"div").left,g},moveToFirstNonWhiteSpaceCharacter:function(a,b){var c=b;return d(c.line,la(a.getLine(c.line)))},moveToMatchedSymbol:function(a,b){var c,e=b,f=e.line,g=e.ch,h=a.getLine(f);do if(c=h.charAt(g++),c&&o(c)){var i=a.getTokenTypeAt(d(f,g));if("string"!==i&&"comment"!==i)break}while(c);if(c){var j=a.findMatchingBracket(d(f,g));return j.to}return e},moveToStartOfLine:function(a,b){return d(b.line,0)},moveToLineOrEdgeOfDocument:function(a,b,c){var e=c.forward?a.lastLine():a.firstLine();return c.repeatIsExplicit&&(e=c.repeat-a.getOption("firstLineNumber")),d(e,la(a.getLine(e)))},textObjectManipulation:function(a,b,c,d){var e={"(":")",")":"(","{":"}","}":"{","[":"]","]":"["},f={"'":!0,'"':!0},g=c.selectedCharacter;"b"==g?g="(":"B"==g&&(g="{");var h,i=!c.textObjectInner;if(e[g])h=xa(a,b,g,i);else if(f[g])h=ya(a,b,g,i);else if("W"===g)h=ma(a,i,!0,!0);else if("w"===g)h=ma(a,i,!0,!1);else{if("p"!==g)return null;if(h=wa(a,b,c.repeat,0,i),c.linewise=!0,d.visualMode)d.visualLine||(d.visualLine=!0);else{var j=d.inputState.operatorArgs;j&&(j.linewise=!0),h.end.line--}}return a.state.vim.visualMode?ea(a,h.start,h.end):[h.start,h.end]},repeatLastCharacterSearch:function(a,b,c){var d=ub.lastChararacterSearch,e=c.repeat,f=c.forward===d.forward,g=(d.increment?1:0)*(f?-1:1);a.moveH(-g,"char"),c.inclusive=f?!0:!1;var h=sa(a,e,f,d.selectedCharacter);return h?(h.ch+=g,h):(a.moveH(g,"char"),b)}},zb={change:function(b,c,e){var f,g,h=b.state.vim;if(ub.macroModeState.lastInsertModeChanges.inVisualBlock=h.visualBlock,h.visualMode){g=b.getSelection();var i=G("",e.length);b.replaceSelections(i),f=U(e[0].head,e[0].anchor)}else{var j=e[0].anchor,k=e[0].head;g=b.getRange(j,k);var l=h.lastEditInputState||{};if("moveByWords"==l.motion&&!r(g)){var m=/\s+$/.exec(g);m&&l.motionArgs&&l.motionArgs.forward&&(k=L(k,0,-m[0].length),g=g.slice(0,-m[0].length))}var n=new d(j.line-1,Number.MAX_VALUE),o=b.firstLine()==b.lastLine();k.line>b.lastLine()&&c.linewise&&!o?b.replaceRange("",n,k):b.replaceRange("",j,k),c.linewise&&(o||(b.setCursor(n),a.commands.newlineAndIndent(b)),j.ch=Number.MAX_VALUE),f=j}ub.registerController.pushText(c.registerName,"change",g,c.linewise,e.length>1),Ab.enterInsertMode(b,{head:f},b.state.vim)},"delete":function(a,b,c){var e,f,g=a.state.vim;if(g.visualBlock){f=a.getSelection();var h=G("",c.length);a.replaceSelections(h),e=c[0].anchor}else{var i=c[0].anchor,j=c[0].head;b.linewise&&j.line!=a.firstLine()&&i.line==a.lastLine()&&i.line==j.line-1&&(i.line==a.firstLine()?i.ch=0:i=d(i.line-1,X(a,i.line-1))),f=a.getRange(i,j),a.replaceRange("",i,j),e=i,b.linewise&&(e=yb.moveToFirstNonWhiteSpaceCharacter(a,i))}return ub.registerController.pushText(b.registerName,"delete",f,b.linewise,g.visualBlock),J(a,e)},indent:function(a,b,c){var d=a.state.vim,e=c[0].anchor.line,f=d.visualBlock?c[c.length-1].anchor.line:c[0].head.line,g=d.visualMode?b.repeat:1;b.linewise&&f--;for(var h=e;f>=h;h++)for(var i=0;g>i;i++)a.indentLine(h,b.indentRight);return yb.moveToFirstNonWhiteSpaceCharacter(a,c[0].anchor)},changeCase:function(a,b,c,d,e){for(var f=a.getSelections(),g=[],h=b.toLower,i=0;ij.top?(i.line+=(h-j.top)/e,i.line=Math.ceil(i.line),a.setCursor(i),j=a.charCoords(i,"local"),a.scrollTo(null,j.top)):a.scrollTo(null,h);else{var k=h+a.getScrollInfo().clientHeight;k=g.anchor.line?L(g.head,0,1):d(g.anchor.line,0);else if("inplace"==f&&e.visualMode)return;b.setOption("keyMap","vim-insert"),b.setOption("disableInput",!1),c&&c.replace?(b.toggleOverwrite(!0),b.setOption("keyMap","vim-replace"),a.signal(b,"vim-mode-change",{mode:"replace"})):(b.setOption("keyMap","vim-insert"),a.signal(b,"vim-mode-change",{mode:"insert"})),ub.macroModeState.isPlaying||(b.on("change",_a),a.on(b.getInputField(),"keydown",eb)),e.visualMode&&ia(b),aa(b,h,i)}},toggleVisualMode:function(b,c,e){var f,g=c.repeat,h=b.getCursor();e.visualMode?e.visualLine^c.linewise||e.visualBlock^c.blockwise?(e.visualLine=!!c.linewise,e.visualBlock=!!c.blockwise,a.signal(b,"vim-mode-change",{mode:"visual",subMode:e.visualLine?"linewise":e.visualBlock?"blockwise":""}),fa(b)):ia(b):(e.visualMode=!0,e.visualLine=!!c.linewise,e.visualBlock=!!c.blockwise,f=J(b,d(h.line,h.ch+g-1),!0),e.sel={anchor:h,head:f},a.signal(b,"vim-mode-change",{mode:"visual",subMode:e.visualLine?"linewise":e.visualBlock?"blockwise":""}),fa(b),ua(b,e,"<",U(h,f)),ua(b,e,">",V(h,f)))},reselectLastSelection:function(b,c,d){var e=d.lastSelection;if(d.visualMode&&da(b,d),e){var f=e.anchorMark.find(),g=e.headMark.find();if(!f||!g)return;d.sel={anchor:f,head:g},d.visualMode=!0,d.visualLine=e.visualLine,d.visualBlock=e.visualBlock,fa(b),ua(b,d,"<",U(f,g)),ua(b,d,">",V(f,g)),a.signal(b,"vim-mode-change",{mode:"visual",subMode:d.visualLine?"linewise":d.visualBlock?"blockwise":""})}},joinLines:function(a,b,c){var e,f;if(c.visualMode){if(e=a.getCursor("anchor"),f=a.getCursor("head"),T(f,e)){var g=f;f=e,e=g}f.ch=X(a,f.line)-1}else{var h=Math.max(b.repeat,2);e=a.getCursor(),f=J(a,d(e.line+h-1,1/0))}for(var i=0,j=e.line;jc)return"";if(a.getOption("indentWithTabs")){var d=Math.floor(c/h);return Array(d+1).join(" ")}return Array(c+1).join(" ")});g+=m?"\n":""}if(b.repeat>1)var g=Array(b.repeat+1).join(g);var o=f.linewise,p=f.blockwise;if(o)c.visualMode?g=c.visualLine?g.slice(0,-1):"\n"+g.slice(0,g.length-1)+"\n":b.after?(g="\n"+g.slice(0,g.length-1),e.ch=X(a,e.line)):e.ch=0;else{if(p){g=g.split("\n");for(var q=0;qa.lastLine()&&a.replaceRange("\n",d(A,0));var B=X(a,A);Bk.length&&(f=k.length),g=d(i.line,f)}if("\n"==h)e.visualMode||b.replaceRange("",i,g),(a.commands.newlineAndIndentContinueComment||a.commands.newlineAndIndent)(b);else{var l=b.getRange(i,g);if(l=l.replace(/[^\n]/g,h),e.visualBlock){var m=new Array(b.getOption("tabSize")+1).join(" ");l=b.getSelection(),l=l.replace(/\t/g,m).replace(/[^\n]/g,h).split("\n"),b.replaceSelections(l)}else b.replaceRange(l,i,g);e.visualMode?(i=T(j[0].anchor,j[0].head)?j[0].anchor:j[0].head,b.setCursor(i),ia(b,!1)):b.setCursor(L(g,0,-1))}},incrementNumberToken:function(a,b){for(var c,e,f,g,h,i=a.getCursor(),j=a.getLine(i.line),k=/-?\d+/g;null!==(c=k.exec(j))&&(h=c[0],e=c.index,f=e+h.length,!(i.ch=1)return!0}else a.nextCh===a.reverseSymb&&a.depth--;return!1}},section:{init:function(a){a.curMoveThrough=!0,a.symb=(a.forward?"]":"[")===a.symb?"{":"}"},isComplete:function(a){return 0===a.index&&a.nextCh===a.symb}},comment:{isComplete:function(a){var b="*"===a.lastCh&&"/"===a.nextCh;return a.lastCh=a.nextCh,b}},method:{init:function(a){a.symb="m"===a.symb?"{":"}",a.reverseSymb="{"===a.symb?"}":"{"},isComplete:function(a){return a.nextCh===a.symb?!0:!1}},preprocess:{init:function(a){a.index=0},isComplete:function(a){if("#"===a.nextCh){var b=a.lineText.match(/#(\w+)/)[1];if("endif"===b){if(a.forward&&0===a.depth)return!0;a.depth++}else if("if"===b){if(!a.forward&&0===a.depth)return!0;a.depth--}if("else"===b&&0===a.depth)return!0}return!1}}};t("pcre",!0,"boolean"),za.prototype={getQuery:function(){return ub.query},setQuery:function(a){ub.query=a},getOverlay:function(){return this.searchOverlay},setOverlay:function(a){this.searchOverlay=a},isReversed:function(){return ub.isReversed},setReversed:function(a){ub.isReversed=a},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(a){this.annotate=a}};var Db={"\\n":"\n","\\r":"\r","\\t":" "},Eb={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":" "},Fb="(Javascript regexp)",Gb=function(){ -this.buildCommandMap_()};Gb.prototype={processCommand:function(a,b,c){var d=this;a.operation(function(){a.curOp.isVimOp=!0,d._processCommand(a,b,c)})},_processCommand:function(b,c,d){var e=b.state.vim,f=ub.registerController.getRegister(":"),g=f.toString();e.visualMode&&ia(b);var h=new a.StringStream(c);f.setText(c);var i=d||{};i.input=c;try{this.parseInput_(b,h,i)}catch(j){throw Ia(b,j),j}var k,l;if(i.commandName){if(k=this.matchCommand_(i.commandName)){if(l=k.name,k.excludeFromCommandHistory&&f.setText(g),this.parseCommandArgs_(h,i,k),"exToKey"==k.type){for(var m=0;m0;b--){var c=a.substring(0,b);if(this.commandMap_[c]){var d=this.commandMap_[c];if(0===d.name.indexOf(a))return d}}return null},buildCommandMap_:function(){this.commandMap_={};for(var a=0;a
    ";if(c){var f;c=c.join("");for(var g=0;g"}}else for(var f in d){var i=d[f].toString();i.length&&(e+='"'+f+" "+i+"
    ")}Ia(a,e)},sort:function(b,c){function e(){if(c.argString){var b=new a.StringStream(c.argString);if(b.eat("!")&&(g=!0),b.eol())return;if(!b.eatSpace())return"Invalid arguments";var d=b.match(/[a-z]+/);if(d){d=d[0],h=-1!=d.indexOf("i"),i=-1!=d.indexOf("u");var e=-1!=d.indexOf("d")&&1,f=-1!=d.indexOf("x")&&1,k=-1!=d.indexOf("o")&&1;if(e+f+k>1)return"Invalid arguments";j=e&&"decimal"||f&&"hex"||k&&"octal"}if(b.match(/\/.*\//))return"patterns not supported"}}function f(a,b){if(g){var c;c=a,a=b,b=c}h&&(a=a.toLowerCase(),b=b.toLowerCase());var d=j&&q.exec(a),e=j&&q.exec(b);return d?(d=parseInt((d[1]+d[2]).toLowerCase(),r),e=parseInt((e[1]+e[2]).toLowerCase(),r),d-e):b>a?-1:1}var g,h,i,j,k=e();if(k)return void Ia(b,k+": "+c.argString);var l=c.line||b.firstLine(),m=c.lineEnd||c.line||b.lastLine();if(l!=m){var n=d(l,0),o=d(m,X(b,m)),p=b.getRange(n,o).split("\n"),q="decimal"==j?/(-?)([\d]+)/:"hex"==j?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==j?/([0-7]+)/:null,r="decimal"==j?10:"hex"==j?16:"octal"==j?8:null,s=[],t=[];if(j)for(var u=0;u=m;m++){var n=j.test(a.getLine(m));n&&(k.push(m+1),l+=a.getLine(m)+"
    ")}if(!d)return void Ia(a,l);var o=0,p=function(){if(o=k)return void Ia(b,"Invalid argument: "+c.argString.substring(f));for(var l=0;k-j>=l;l++){var m=String.fromCharCode(j+l);delete d.marks[m]}}else delete d.marks[g]}}},Ib=new Gb;return a.keyMap.vim={attach:h,detach:g,call:i},t("insertModeEscKeysTimeout",200,"number"),a.keyMap["vim-insert"]={"Ctrl-N":"autocomplete","Ctrl-P":"autocomplete",Enter:function(b){var c=a.commands.newlineAndIndentContinueComment||a.commands.newlineAndIndent;c(b)},fallthrough:["default"],attach:h,detach:g,call:i},a.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:h,detach:g,call:i},y(),wb};a.Vim=e()}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../lib/codemirror"),require("../addon/search/searchcursor"),require("../addon/dialog/dialog"),require("../addon/edit/matchbrackets.js")):"function"==typeof define&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/dialog/dialog","../addon/edit/matchbrackets"],a):a(CodeMirror)}(function(a){"use strict";var b=[{keys:"",type:"keyToKey",toKeys:"h"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"",type:"keyToKey",toKeys:"W"},{keys:"",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"",type:"keyToKey",toKeys:"w"},{keys:"",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"",type:"keyToKey",toKeys:"0"},{keys:"",type:"keyToKey",toKeys:"$"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r",type:"action",action:"replace",isEdit:!0},{keys:"@",type:"action",action:"replayMacro"},{keys:"q",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0}},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"",type:"action",action:"redo"},{keys:"m",type:"action",action:"setMark"},{keys:'"',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"a",type:"motion",motion:"textObjectManipulation"},{keys:"i",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],c=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],d=a.Pos,e=function(){function e(b){b.setOption("disableInput",!0),b.setOption("showCursorWhenSelecting",!1),a.signal(b,"vim-mode-change",{mode:"normal"}),b.on("cursorActivity",ab),x(b),a.on(b.getInputField(),"paste",k(b))}function f(b){b.setOption("disableInput",!1),b.off("cursorActivity",ab),a.off(b.getInputField(),"paste",k(b)),b.state.vim=null}function g(b,c){this==a.keyMap.vim&&a.rmClass(b.getWrapperElement(),"cm-fat-cursor"),c&&c.attach==h||f(b,!1)}function h(b,c){this==a.keyMap.vim&&a.addClass(b.getWrapperElement(),"cm-fat-cursor"),c&&c.attach==h||e(b)}function i(b,c){if(!c)return void 0;var d=j(b);if(!d)return!1;var e=a.Vim.findKey(c,d);return"function"==typeof e&&a.signal(c,"vim-keypress",d),e}function j(a){if("'"==a.charAt(0))return a.charAt(1);var b=a.split(/-(?!$)/),c=b[b.length-1];if(1==b.length&&1==b[0].length)return!1;if(2==b.length&&"Shift"==b[0]&&1==c.length)return!1;for(var d=!1,e=0;e"):!1}function k(a){var b=a.state.vim;return b.onPasteFn||(b.onPasteFn=function(){b.insertMode||(a.setCursor(L(a.getCursor(),0,1)),Ab.enterInsertMode(a,{},b))}),b.onPasteFn}function l(a,b){for(var c=[],d=a;a+b>d;d++)c.push(String.fromCharCode(d));return c}function m(a,b){return b>=a.firstLine()&&b<=a.lastLine()}function n(a){return/^[a-z]$/.test(a)}function o(a){return-1!="()[]{}".indexOf(a)}function p(a){return jb.test(a)}function q(a){return/^[A-Z]$/.test(a)}function r(a){return/^\s*$/.test(a)}function s(a,b){for(var c=0;cd;d++)c.push(a);return c}function H(a,b){zb[a]=b}function I(a,b){Ab[a]=b}function J(a,b,c){var e=Math.min(Math.max(a.firstLine(),b.line),a.lastLine()),f=X(a,e)-1;f=c?f+1:f;var g=Math.min(Math.max(0,b.ch),f);return d(e,g)}function K(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function L(a,b,c){return"object"==typeof b&&(c=b.ch,b=b.line),d(a.line+b,a.ch+c)}function M(a,b){return{line:b.line-a.line,ch:b.line-a.line}}function N(a,b,c,d){for(var e,f=[],g=[],h=0;h"==b.slice(-11)){var c=b.length-11,d=a.slice(0,c),e=b.slice(0,c);return d==e&&a.length>c?"full":0==e.indexOf(d)?"partial":!1}return a==b?"full":0==b.indexOf(a)?"partial":!1}function P(a){var b=/^.*(<[\w\-]+>)$/.exec(a),c=b?b[1]:a.slice(-1);if(c.length>1)switch(c){case"":c="\n";break;case"":c=" "}return c}function Q(a,b,c){return function(){for(var d=0;c>d;d++)b(a)}}function R(a){return d(a.line,a.ch)}function S(a,b){return a.ch==b.ch&&a.line==b.line}function T(a,b){return a.line2&&(b=U.apply(void 0,Array.prototype.slice.call(arguments,1))),T(a,b)?a:b}function V(a,b){return arguments.length>2&&(b=V.apply(void 0,Array.prototype.slice.call(arguments,1))),T(a,b)?b:a}function W(a,b,c){var d=T(a,b),e=T(b,c);return d&&e}function X(a,b){return a.getLine(b).length}function Y(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function Z(a){return a.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function $(a,b,c){var e=X(a,b),f=new Array(c-e+1).join(" ");a.setCursor(d(b,e)),a.replaceRange(f,a.getCursor())}function _(a,b){var c=[],e=a.listSelections(),f=R(a.clipPos(b)),g=!S(b,f),h=a.getCursor("head"),i=ba(e,h),j=S(e[i].head,e[i].anchor),k=e.length-1,l=k-i>i?k:0,m=e[l].anchor,n=Math.min(m.line,f.line),o=Math.max(m.line,f.line),p=m.ch,q=f.ch,r=e[l].head.ch-p,s=q-p;r>0&&0>=s?(p++,g||q--):0>r&&s>=0?(p--,j||q++):0>r&&-1==s&&(p--,q++);for(var t=n;o>=t;t++){var u={anchor:new d(t,p),head:new d(t,q)};c.push(u)}return i=f.line==o?c.length-1:0,a.setSelections(c),b.ch=q,m.ch=p,m}function aa(a,b,c){for(var d=[],e=0;c>e;e++){var f=L(b,e,0);d.push({anchor:f,head:f})}a.setSelections(d,0)}function ba(a,b,c){for(var d=0;dj&&(f.line=j),f.ch=X(a,f.line)}return{ranges:[{anchor:g,head:f}],primary:0}}if("block"==c){for(var k=Math.min(g.line,f.line),l=Math.min(g.ch,f.ch),m=Math.max(g.line,f.line),n=Math.max(g.ch,f.ch)+1,o=m-k+1,p=f.line==k?0:o-1,q=[],r=0;o>r;r++)q.push({anchor:d(k+r,l),head:d(k+r,n)});return{ranges:q,primary:p}}}function ha(a){var b=a.getCursor("head");return 1==a.getSelection().length&&(b=U(b,a.getCursor("anchor"))),b}function ia(b,c){var d=b.state.vim;c!==!1&&b.setCursor(J(b,d.sel.head)),da(b,d),d.visualMode=!1,d.visualLine=!1,d.visualBlock=!1,a.signal(b,"vim-mode-change",{mode:"normal"}),d.fakeCursor&&d.fakeCursor.clear()}function ja(a,b,c){var d=a.getRange(b,c);if(/\n\s*$/.test(d)){var e=d.split("\n");e.pop();for(var f,f=e.pop();e.length>0&&f&&r(f);f=e.pop())c.line--,c.ch=0;f?(c.line--,c.ch=X(a,c.line)):c.ch=0}}function ka(a,b,c){b.ch=0,c.ch=0,c.line++}function la(a){if(!a)return 0;var b=a.search(/\S/);return-1==b?a.length:b}function ma(a,b,c,e,f){for(var g=ha(a),h=a.getLine(g.line),i=g.ch,j=f?kb[0]:lb[0];!j(h.charAt(i));)if(i++,i>=h.length)return null;e?j=lb[0]:(j=kb[0],j(h.charAt(i))||(j=kb[1]));for(var k=i,l=i;j(h.charAt(k))&&k=0;)l--;if(l++,b){for(var m=k;/\s/.test(h.charAt(k))&&k0;)l--;l||(l=n)}}return{start:d(g.line,l),end:d(g.line,k)}}function na(a,b,c){S(b,c)||ub.jumpList.add(a,b,c)}function oa(a,b){ub.lastChararacterSearch.increment=a,ub.lastChararacterSearch.forward=b.forward,ub.lastChararacterSearch.selectedCharacter=b.selectedCharacter}function pa(a,b,c,e){var f=R(a.getCursor()),g=c?1:-1,h=c?a.lineCount():-1,i=f.ch,j=f.line,k=a.getLine(j),l={lineText:k,nextCh:k.charAt(i),lastCh:null,index:i,symb:e,reverseSymb:(c?{")":"(","}":"{"}:{"(":")","{":"}"})[e],forward:c,depth:0,curMoveThrough:!1},m=Bb[e];if(!m)return f;var n=Cb[m].init,o=Cb[m].isComplete;for(n&&n(l);j!==h&&b;){if(l.index+=g,l.nextCh=l.lineText.charAt(l.index),!l.nextCh){if(j+=g,l.lineText=a.getLine(j)||"",g>0)l.index=0;else{var p=l.lineText.length;l.index=p>0?p-1:0}l.nextCh=l.lineText.charAt(l.index)}o(l)&&(f.line=j,f.ch=l.index,b--)}return l.nextCh||l.curMoveThrough?d(j,l.index):f}function qa(a,b,c,d,e){var f=b.line,g=b.ch,h=a.getLine(f),i=c?1:-1,j=d?lb:kb;if(e&&""==h){if(f+=i,h=a.getLine(f),!m(a,f))return null;g=c?0:h.length}for(;;){if(e&&""==h)return{from:0,to:0,line:f};for(var k=i>0?h.length:-1,l=k,n=k;g!=k;){for(var o=!1,p=0;p0?0:h.length}throw new Error("The impossible happened.")}function ra(a,b,c,e,f,g){var h=R(b),i=[];(e&&!f||!e&&f)&&c++;for(var j=!(e&&f),k=0;c>k;k++){var l=qa(a,b,e,g,j);if(!l){var m=X(a,a.lastLine());i.push(e?{line:a.lastLine(),from:m,to:m}:{line:0,from:0,to:0});break}i.push(l),b=d(l.line,e?l.to-1:l.from)}var n=i.length!=c,o=i[0],p=i.pop();return e&&!f?(n||o.from==h.ch&&o.line==h.line||(p=i.pop()),d(p.line,p.from)):e&&f?d(p.line,p.to-1):!e&&f?(n||o.to==h.ch&&o.line==h.line||(p=i.pop()),d(p.line,p.to)):d(p.line,p.from)}function sa(a,b,c,e){for(var f,g=a.getCursor(),h=g.ch,i=0;b>i;i++){var j=a.getLine(g.line);if(f=va(h,j,e,c,!0),-1==f)return null;h=f}return d(a.getCursor().line,f)}function ta(a,b){var c=a.getCursor().line;return J(a,d(c,b-1))}function ua(a,b,c,d){s(c,pb)&&(b.marks[c]&&b.marks[c].clear(),b.marks[c]=a.setBookmark(d))}function va(a,b,c,d,e){var f;return d?(f=b.indexOf(c,a+1),-1==f||e||(f-=1)):(f=b.lastIndexOf(c,a-1),-1==f||e||(f+=1)),f}function wa(a,b,c,e,f){function g(b){return!a.getLine(b)}function h(a,b,c){return c?g(a)!=g(a+b):!g(a)&&g(a+b)}var i,j,k=b.line,l=a.firstLine(),m=a.lastLine(),n=k;if(e){for(;n>=l&&m>=n&&c>0;)h(n,e)&&c--,n+=e;return new d(n,0)}var o=a.state.vim;if(o.visualLine&&h(k,1,!0)){var p=o.sel.anchor;h(p.line,-1,!0)&&(f&&p.line==k||(k+=1))}var q=g(k);for(n=k;m>=n&&c;n++)h(n,1,!0)&&(f&&g(n)==q||c--);for(j=new d(n,0),n>m&&!q?q=!0:f=!1,n=k;n>l&&(f&&g(n)!=q&&n!=k||!h(n,-1,!0));n--);return i=new d(n,0),{start:i,end:j}}function xa(a,b,c,e){var f,g,h=b,i={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/}[c],j={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{"}[c],k=a.getLine(h.line).charAt(h.ch),l=k===j?1:0;if(f=a.scanForBracket(d(h.line,h.ch+l),-1,null,{bracketRegex:i}),g=a.scanForBracket(d(h.line,h.ch+l),1,null,{bracketRegex:i}),!f||!g)return{start:h,end:h};if(f=f.pos,g=g.pos,f.line==g.line&&f.ch>g.ch||f.line>g.line){var m=f;f=g,g=m}return e?g.ch+=1:f.ch+=1,{start:f,end:g}}function ya(a,b,c,e){var f,g,h,i,j=R(b),k=a.getLine(j.line),l=k.split(""),m=l.indexOf(c);if(j.ch-1&&!f;h--)l[h]==c&&(f=h+1);else f=j.ch+1;if(f&&!g)for(h=f,i=l.length;i>h&&!g;h++)l[h]==c&&(g=h);return f&&g?(e&&(--f,++g),{start:d(j.line,f),end:d(j.line,g)}):{start:j,end:j}}function za(){}function Aa(a){var b=a.state.vim;return b.searchState_||(b.searchState_=new za)}function Ba(a,b,c,d,e){a.openDialog?a.openDialog(b,d,{bottom:!0,value:e.value,onKeyDown:e.onKeyDown,onKeyUp:e.onKeyUp,selectValueOnOpen:!1}):d(prompt(c,""))}function Ca(a){var b=Da(a)||[];if(!b.length)return[];var c=[];if(0===b[0]){for(var d=0;d'+b+"
    ",{bottom:!0,duration:5e3}):alert(b)}function Ja(a,b){var c="";return a&&(c+=''+a+""),c+=' ',b&&(c+='',c+=b,c+=""),c}function Ka(a,b){var c=(b.prefix||"")+" "+(b.desc||""),d=Ja(b.prefix,b.desc);Ba(a,d,c,b.onClose,b)}function La(a,b){if(a instanceof RegExp&&b instanceof RegExp){for(var c=["global","multiline","ignoreCase","source"],d=0;dh;h++){var i=g.find(b);if(0==h&&i&&S(g.from(),f)&&(i=g.find(b)),!i&&(g=a.getSearchCursor(c,b?d(a.lastLine()):d(a.firstLine(),0)),!g.find(b)))return}return g.from()})}function Qa(a){var b=Aa(a);a.removeOverlay(Aa(a).getOverlay()),b.setOverlay(null),b.getScrollbarAnnotate()&&(b.getScrollbarAnnotate().clear(),b.setScrollbarAnnotate(null))}function Ra(a,b,c){return"number"!=typeof a&&(a=a.line),b instanceof Array?s(a,b):c?a>=b&&c>=a:a==b}function Sa(a){var b=a.getScrollInfo(),c=6,d=10,e=a.coordsChar({left:0,top:c+b.top},"local"),f=b.clientHeight-d+b.top,g=a.coordsChar({left:0,top:f},"local");return{top:e.line,bottom:g.line}}function Ta(b,c,d,e,f,g,h,i,j){function k(){b.operation(function(){for(;!p;)l(),m();n()})}function l(){var a=b.getRange(g.from(),g.to()),c=a.replace(h,i);g.replace(c)}function m(){for(;g.findNext()&&Ra(g.from(),e,f);)if(d||!q||g.from().line!=q.line)return b.scrollIntoView(g.from(),30),b.setSelection(g.from(),g.to()),q=g.from(),void(p=!1);p=!0}function n(a){if(a&&a(),b.focus(),q){b.setCursor(q);var c=b.state.vim;c.exMode=!1,c.lastHPos=c.lastHSPos=q.ch}j&&j()}function o(c,d,e){a.e_stop(c);var f=a.keyName(c);switch(f){case"Y":l(),m();break;case"N":m();break;case"A":var g=j;j=void 0,b.operation(k),j=g;break;case"L":l();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":n(e)}return p&&n(e),!0}b.state.vim.exMode=!0;var p=!1,q=g.from();return m(),p?void Ia(b,"No matches for "+h.source):c?void Ka(b,{prefix:"replace with "+i+" (y/n/a/q/l)",onKeyDown:o}):(k(),void(j&&j()))}function Ua(b){var c=b.state.vim,d=ub.macroModeState,e=ub.registerController.getRegister("."),f=d.isPlaying,g=d.lastInsertModeChanges,h=[];if(!f){for(var i=g.inVisualBlock?c.lastSelection.visualBlock.height:1,j=g.changes,h=[],k=0;k1&&(fb(b,c,c.insertModeRepeat-1,!0),c.lastEditInputState.repeatOverride=c.insertModeRepeat),delete c.insertModeRepeat,c.insertMode=!1,b.setCursor(b.getCursor().line,b.getCursor().ch-1),b.setOption("keyMap","vim"),b.setOption("disableInput",!0),b.toggleOverwrite(!1),e.setText(g.changes.join("")),a.signal(b,"vim-mode-change",{mode:"normal"}),d.isRecording&&Za(d)}function Va(a){b.unshift(a)}function Wa(a,b,c,d,e){var f={keys:a,type:b};f[b]=c,f[b+"Args"]=d;for(var g in e)f[g]=e[g];Va(f)}function Xa(b,c,d,e){var f=ub.registerController.getRegister(e);if(":"==e)return f.keyBuffer[0]&&Ib.processCommand(b,f.keyBuffer[0]),void(d.isPlaying=!1);var g=f.keyBuffer,h=0;d.isPlaying=!0,d.replaySearchQueries=f.searchQueries.slice(0);for(var i=0;i|<\w+>|./.exec(l),k=j[0],l=l.substring(j.index+k.length),a.Vim.handleKey(b,k,"macro"),c.insertMode){var m=f.insertModeChanges[h++].changes; +ub.macroModeState.lastInsertModeChanges.changes=m,gb(b,m,1),Ua(b)}d.isPlaying=!1}function Ya(a,b){if(!a.isPlaying){var c=a.latestRegister,d=ub.registerController.getRegister(c);d&&d.pushText(b)}}function Za(a){if(!a.isPlaying){var b=a.latestRegister,c=ub.registerController.getRegister(b);c&&c.pushInsertModeChanges&&c.pushInsertModeChanges(a.lastInsertModeChanges)}}function $a(a,b){if(!a.isPlaying){var c=a.latestRegister,d=ub.registerController.getRegister(c);d&&d.pushSearchQuery&&d.pushSearchQuery(b)}}function _a(a,b){var c=ub.macroModeState,d=c.lastInsertModeChanges;if(!c.isPlaying)for(;b;){if(d.expectCursorActivityForChange=!0,"+input"==b.origin||"paste"==b.origin||void 0===b.origin){var e=b.text.join("\n");d.changes.push(e)}b=b.next}}function ab(a){var b=a.state.vim;if(b.insertMode){var c=ub.macroModeState;if(c.isPlaying)return;var d=c.lastInsertModeChanges;d.expectCursorActivityForChange?d.expectCursorActivityForChange=!1:d.changes=[]}else a.curOp.isVimOp||cb(a,b);b.visualMode&&bb(a)}function bb(a){var b=a.state.vim,c=J(a,R(b.sel.head)),d=L(c,0,1);b.fakeCursor&&b.fakeCursor.clear(),b.fakeCursor=a.markText(c,d,{className:"cm-animate-fat-cursor"})}function cb(b,c){var d=b.getCursor("anchor"),e=b.getCursor("head");if(c.visualMode&&!b.somethingSelected()?ia(b,!1):c.visualMode||c.insertMode||!b.somethingSelected()||(c.visualMode=!0,c.visualLine=!1,a.signal(b,"vim-mode-change",{mode:"visual"})),c.visualMode){var f=T(e,d)?0:-1,g=T(e,d)?-1:0;e=L(e,0,f),d=L(d,0,g),c.sel={anchor:d,head:e},ua(b,c,"<",U(e,d)),ua(b,c,">",V(e,d))}else c.insertMode||(c.lastHPos=b.getCursor().ch)}function db(a){this.keyName=a}function eb(b){function c(){return e.changes.push(new db(f)),!0}var d=ub.macroModeState,e=d.lastInsertModeChanges,f=a.keyName(b);f&&(-1!=f.indexOf("Delete")||-1!=f.indexOf("Backspace"))&&a.lookupKey(f,"vim-insert",c)}function fb(a,b,c,d){function e(){h?xb.processAction(a,b,b.lastEditActionCommand):xb.evalInput(a,b)}function f(c){if(g.lastInsertModeChanges.changes.length>0){c=b.lastEditActionCommand?c:1;var d=g.lastInsertModeChanges;gb(a,d.changes,c)}}var g=ub.macroModeState;g.isPlaying=!0;var h=!!b.lastEditActionCommand,i=b.inputState;if(b.inputState=b.lastEditInputState,h&&b.lastEditActionCommand.interlaceInsertRepeat)for(var j=0;c>j;j++)e(),f(1);else d||e(),f(c);b.inputState=i,b.insertMode&&!d&&Ua(a),g.isPlaying=!1}function gb(b,c,d){function e(c){return"string"==typeof c?a.commands[c](b):c(b),!0}var f=b.getCursor("head"),g=ub.macroModeState.lastInsertModeChanges.inVisualBlock;if(g){var h=b.state.vim,i=h.lastSelection,j=M(i.anchor,i.head);aa(b,f,j.line+1),d=b.listSelections().length,b.setCursor(f)}for(var k=0;d>k;k++){g&&b.setCursor(L(f,k,0));for(var l=0;l"]),qb=[].concat(mb,nb,ob,["-",'"',".",":","/"]),rb={};t("filetype",void 0,"string",["ft"],function(a,b){if(void 0!==b){if(void 0===a){var c=b.getOption("mode");return"null"==c?"":c}var c=""==a?"null":a;b.setOption("mode",c)}});var sb=function(){function a(a,b,h){function i(b){var e=++d%c,f=g[e];f&&f.clear(),g[e]=a.setBookmark(b)}var j=d%c,k=g[j];if(k){var l=k.find();l&&!S(l,b)&&i(b)}else i(b);i(h),e=d,f=d-c+1,0>f&&(f=0)}function b(a,b){d+=b,d>e?d=e:f>d&&(d=f);var h=g[(c+d)%c];if(h&&!h.find()){var i,j=b>0?1:-1,k=a.getCursor();do if(d+=j,h=g[(c+d)%c],h&&(i=h.find())&&!S(k,i))break;while(e>d&&d>f)}return h}var c=100,d=-1,e=0,f=0,g=new Array(c);return{cachedCursor:void 0,add:a,move:b}},tb=function(a){return a?{changes:a.changes,expectCursorActivityForChange:a.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};w.prototype={exitMacroRecordMode:function(){var a=ub.macroModeState;a.onRecordingDone&&a.onRecordingDone(),a.onRecordingDone=void 0,a.isRecording=!1},enterMacroRecordMode:function(a,b){var c=ub.registerController.getRegister(b);c&&(c.clear(),this.latestRegister=b,a.openDialog&&(this.onRecordingDone=a.openDialog("(recording)["+b+"]",null,{bottom:!0})),this.isRecording=!0)}};var ub,vb,wb={buildKeyMap:function(){},getRegisterController:function(){return ub.registerController},resetVimGlobalState_:y,getVimGlobalState_:function(){return ub},maybeInitVimState_:x,suppressErrorLogging:!1,InsertModeKey:db,map:function(a,b,c){Ib.map(a,b,c)},unmap:function(a,b){Ib.unmap(a,b)},setOption:u,getOption:v,defineOption:t,defineEx:function(a,b,c){if(b){if(0!==a.indexOf(b))throw new Error('(Vim.defineEx) "'+b+'" is not a prefix of "'+a+'", command not registered')}else b=a;Hb[a]=c,Ib.commandMap_[b]={name:a,shortName:b,type:"api"}},handleKey:function(a,b,c){var d=this.findKey(a,b,c);return"function"==typeof d?d():void 0},findKey:function(c,d,e){function f(){var a=ub.macroModeState;if(a.isRecording){if("q"==d)return a.exitMacroRecordMode(),A(c),!0;"mapping"!=e&&Ya(a,d)}}function g(){return""==d?(A(c),l.visualMode?ia(c):l.insertMode&&Ua(c),!0):void 0}function h(b){for(var e;b;)e=/<\w+-.+?>|<\w+>|./.exec(b),d=e[0],b=b.substring(e.index+d.length),a.Vim.handleKey(c,d,"mapping")}function i(){if(g())return!0;for(var a=l.inputState.keyBuffer=l.inputState.keyBuffer+d,e=1==d.length,f=xb.matchCommand(a,b,l.inputState,"insert");a.length>1&&"full"!=f.type;){var a=l.inputState.keyBuffer=a.slice(1),h=xb.matchCommand(a,b,l.inputState,"insert");"none"!=h.type&&(f=h)}if("none"==f.type)return A(c),!1;if("partial"==f.type)return vb&&window.clearTimeout(vb),vb=window.setTimeout(function(){l.insertMode&&l.inputState.keyBuffer&&A(c)},v("insertModeEscKeysTimeout")),!e;if(vb&&window.clearTimeout(vb),e){var i=c.getCursor();c.replaceRange("",L(i,0,-(a.length-1)),i,"+input")}return A(c),f.command}function j(){if(f()||g())return!0;var a=l.inputState.keyBuffer=l.inputState.keyBuffer+d;if(/^[1-9]\d*$/.test(a))return!0;var e=/^(\d*)(.*)$/.exec(a);if(!e)return A(c),!1;var h=l.visualMode?"visual":"normal",i=xb.matchCommand(e[2]||e[1],b,l.inputState,h);if("none"==i.type)return A(c),!1;if("partial"==i.type)return!0;l.inputState.keyBuffer="";var e=/^(\d*)(.*)$/.exec(a);return e[1]&&"0"!=e[1]&&l.inputState.pushRepeatDigit(e[1]),i.command}var k,l=x(c);return k=l.insertMode?i():j(),k===!1?void 0:k===!0?function(){}:function(){return c.operation(function(){c.curOp.isVimOp=!0;try{"keyToKey"==k.type?h(k.toKeys):xb.processCommand(c,l,k)}catch(b){throw c.state.vim=void 0,x(c),a.Vim.suppressErrorLogging||console.log(b),b}return!0})}},handleEx:function(a,b){Ib.processCommand(a,b)},defineMotion:F,defineAction:I,defineOperator:H,mapCommand:Wa,_mapCommand:Va,defineRegister:C,exitVisualMode:ia,exitInsertMode:Ua};z.prototype.pushRepeatDigit=function(a){this.operator?this.motionRepeat=this.motionRepeat.concat(a):this.prefixRepeat=this.prefixRepeat.concat(a)},z.prototype.getRepeat=function(){var a=0;return(this.prefixRepeat.length>0||this.motionRepeat.length>0)&&(a=1,this.prefixRepeat.length>0&&(a*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(a*=parseInt(this.motionRepeat.join(""),10))),a},B.prototype={setText:function(a,b,c){this.keyBuffer=[a||""],this.linewise=!!b,this.blockwise=!!c},pushText:function(a,b){b&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(a)},pushInsertModeChanges:function(a){this.insertModeChanges.push(tb(a))},pushSearchQuery:function(a){this.searchQueries.push(a)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},D.prototype={pushText:function(a,b,c,d,e){d&&"\n"==c.charAt(0)&&(c=c.slice(1)+"\n"),d&&"\n"!==c.charAt(c.length-1)&&(c+="\n");var f=this.isValidRegister(a)?this.getRegister(a):null;if(!f){switch(b){case"yank":this.registers[0]=new B(c,d,e);break;case"delete":case"change":-1==c.indexOf("\n")?this.registers["-"]=new B(c,d):(this.shiftNumericRegisters_(),this.registers[1]=new B(c,d))}return void this.unnamedRegister.setText(c,d,e)}var g=q(a);g?f.pushText(c,d):f.setText(c,d,e),this.unnamedRegister.setText(f.toString(),d)},getRegister:function(a){return this.isValidRegister(a)?(a=a.toLowerCase(),this.registers[a]||(this.registers[a]=new B),this.registers[a]):this.unnamedRegister},isValidRegister:function(a){return a&&s(a,qb)},shiftNumericRegisters_:function(){for(var a=9;a>=2;a--)this.registers[a]=this.getRegister(""+(a-1))}},E.prototype={nextMatch:function(a,b){var c=this.historyBuffer,d=b?-1:1;null===this.initialPrefix&&(this.initialPrefix=a);for(var e=this.iterator+d;b?e>=0:e=c.length?(this.iterator=c.length,this.initialPrefix):0>e?a:void 0},pushInput:function(a){var b=this.historyBuffer.indexOf(a);b>-1&&this.historyBuffer.splice(b,1),a.length&&this.historyBuffer.push(a)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var xb={matchCommand:function(a,b,c,d){var e=N(a,b,d,c);if(!e.full&&!e.partial)return{type:"none"};if(!e.full&&e.partial)return{type:"partial"};for(var f,g=0;g"==f.keys.slice(-11)&&(c.selectedCharacter=P(a)),{type:"full",command:f}},processCommand:function(a,b,c){switch(b.inputState.repeatOverride=c.repeatOverride,c.type){case"motion":this.processMotion(a,b,c);break;case"operator":this.processOperator(a,b,c);break;case"operatorMotion":this.processOperatorMotion(a,b,c);break;case"action":this.processAction(a,b,c);break;case"search":this.processSearch(a,b,c);break;case"ex":case"keyToEx":this.processEx(a,b,c)}},processMotion:function(a,b,c){b.inputState.motion=c.motion,b.inputState.motionArgs=K(c.motionArgs),this.evalInput(a,b)},processOperator:function(a,b,c){var d=b.inputState;if(d.operator){if(d.operator==c.operator)return d.motion="expandToLine",d.motionArgs={linewise:!0},void this.evalInput(a,b);A(a)}d.operator=c.operator,d.operatorArgs=K(c.operatorArgs),b.visualMode&&this.evalInput(a,b)},processOperatorMotion:function(a,b,c){var d=b.visualMode,e=K(c.operatorMotionArgs);e&&d&&e.visualLine&&(b.visualLine=!0),this.processOperator(a,b,c),d||this.processMotion(a,b,c)},processAction:function(a,b,c){var d=b.inputState,e=d.getRepeat(),f=!!e,g=K(c.actionArgs)||{};d.selectedCharacter&&(g.selectedCharacter=d.selectedCharacter),c.operator&&this.processOperator(a,b,c),c.motion&&this.processMotion(a,b,c),(c.motion||c.operator)&&this.evalInput(a,b),g.repeat=e||1,g.repeatIsExplicit=f,g.registerName=d.registerName,A(a),b.lastMotion=null,c.isEdit&&this.recordLastEdit(b,d,c),Ab[c.action](a,g,b)},processSearch:function(b,c,d){function e(a,e,f){ub.searchHistoryController.pushInput(a),ub.searchHistoryController.reset();try{Ma(b,a,e,f)}catch(g){return Ia(b,"Invalid regex: "+a),void A(b)}xb.processMotion(b,c,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:d.searchArgs.toJumplist}})}function f(a){b.scrollTo(m.left,m.top),e(a,!0,!0);var c=ub.macroModeState;c.isRecording&&$a(c,a)}function g(c,d,e){var f,g=a.keyName(c);"Up"==g||"Down"==g?(f="Up"==g?!0:!1,d=ub.searchHistoryController.nextMatch(d,f)||"",e(d)):"Left"!=g&&"Right"!=g&&"Ctrl"!=g&&"Alt"!=g&&"Shift"!=g&&ub.searchHistoryController.reset();var h;try{h=Ma(b,d,!0,!0)}catch(c){}h?b.scrollIntoView(Pa(b,!i,h),30):(Qa(b),b.scrollTo(m.left,m.top))}function h(c,d,e){var f=a.keyName(c);"Esc"==f||"Ctrl-C"==f||"Ctrl-["==f||"Backspace"==f&&""==d?(ub.searchHistoryController.pushInput(d),ub.searchHistoryController.reset(),Ma(b,l),Qa(b),b.scrollTo(m.left,m.top),a.e_stop(c),A(b),e(),b.focus()):"Ctrl-U"==f&&(a.e_stop(c),e(""))}if(b.getSearchCursor){var i=d.searchArgs.forward,j=d.searchArgs.wholeWordOnly;Aa(b).setReversed(!i);var k=i?"/":"?",l=Aa(b).getQuery(),m=b.getScrollInfo();switch(d.searchArgs.querySrc){case"prompt":var n=ub.macroModeState;if(n.isPlaying){var o=n.replaySearchQueries.shift();e(o,!0,!1)}else Ka(b,{onClose:f,prefix:k,desc:Fb,onKeyUp:g,onKeyDown:h});break;case"wordUnderCursor":var p=ma(b,!1,!0,!1,!0),q=!0;if(p||(p=ma(b,!1,!0,!1,!1),q=!1),!p)return;var o=b.getLine(p.start.line).substring(p.start.ch,p.end.ch);o=q&&j?"\\b"+o+"\\b":Z(o),ub.jumpList.cachedCursor=b.getCursor(),b.setCursor(p.start),e(o,!0,!1)}}},processEx:function(b,c,d){function e(a){ub.exCommandHistoryController.pushInput(a),ub.exCommandHistoryController.reset(),Ib.processCommand(b,a)}function f(c,d,e){var f,g=a.keyName(c);("Esc"==g||"Ctrl-C"==g||"Ctrl-["==g||"Backspace"==g&&""==d)&&(ub.exCommandHistoryController.pushInput(d),ub.exCommandHistoryController.reset(),a.e_stop(c),A(b),e(),b.focus()),"Up"==g||"Down"==g?(f="Up"==g?!0:!1,d=ub.exCommandHistoryController.nextMatch(d,f)||"",e(d)):"Ctrl-U"==g?(a.e_stop(c),e("")):"Left"!=g&&"Right"!=g&&"Ctrl"!=g&&"Alt"!=g&&"Shift"!=g&&ub.exCommandHistoryController.reset()}"keyToEx"==d.type?Ib.processCommand(b,d.exArgs.input):c.visualMode?Ka(b,{onClose:e,prefix:":",value:"'<,'>",onKeyDown:f}):Ka(b,{onClose:e,prefix:":",onKeyDown:f})},evalInput:function(a,b){var c,e,f,g=b.inputState,h=g.motion,i=g.motionArgs||{},j=g.operator,k=g.operatorArgs||{},l=g.registerName,m=b.sel,n=R(b.visualMode?J(a,m.head):a.getCursor("head")),o=R(b.visualMode?J(a,m.anchor):a.getCursor("anchor")),p=R(n),q=R(o);if(j&&this.recordLastEdit(b,g),f=void 0!==g.repeatOverride?g.repeatOverride:g.getRepeat(),f>0&&i.explicitRepeat?i.repeatIsExplicit=!0:(i.noRepeat||!i.explicitRepeat&&0===f)&&(f=1,i.repeatIsExplicit=!1),g.selectedCharacter&&(i.selectedCharacter=k.selectedCharacter=g.selectedCharacter),i.repeat=f,A(a),h){var r=yb[h](a,n,i,b);if(b.lastMotion=yb[h],!r)return;if(i.toJumplist){var s=ub.jumpList,t=s.cachedCursor;t?(na(a,t,r),delete s.cachedCursor):na(a,n,r)}r instanceof Array?(e=r[0],c=r[1]):c=r,c||(c=R(n)),b.visualMode?(b.visualBlock&&c.ch===1/0||(c=J(a,c,b.visualBlock)),e&&(e=J(a,e,!0)),e=e||q,m.anchor=e,m.head=c,fa(a),ua(a,b,"<",T(e,c)?e:c),ua(a,b,">",T(e,c)?c:e)):j||(c=J(a,c),a.setCursor(c.line,c.ch))}if(j){if(k.lastSel){e=q;var u=k.lastSel,v=Math.abs(u.head.line-u.anchor.line),w=Math.abs(u.head.ch-u.anchor.ch);c=u.visualLine?d(q.line+v,q.ch):u.visualBlock?d(q.line+v,q.ch+w):u.head.line==u.anchor.line?d(q.line,q.ch+w):d(q.line+v,q.ch),b.visualMode=!0,b.visualLine=u.visualLine,b.visualBlock=u.visualBlock,m=b.sel={anchor:e,head:c},fa(a)}else b.visualMode&&(k.lastSel={anchor:R(m.anchor),head:R(m.head),visualBlock:b.visualBlock,visualLine:b.visualLine});var x,y,z,B,C;if(b.visualMode){if(x=U(m.head,m.anchor),y=V(m.head,m.anchor),z=b.visualLine||k.linewise,B=b.visualBlock?"block":z?"line":"char",C=ga(a,{anchor:x,head:y},B),z){var D=C.ranges;if("block"==B)for(var E=0;Ei&&f.line==j?this.moveToStartOfLine(a,b,c,e):i>k&&f.line==k?this.moveToEol(a,b,c,e):(c.toFirstChar&&(g=la(a.getLine(i)),e.lastHPos=g),e.lastHSPos=a.charCoords(d(i,g),"div").left,d(i,g))},moveByDisplayLines:function(a,b,c,e){var f=b;switch(e.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:e.lastHSPos=a.charCoords(f,"div").left}var g=c.repeat,h=a.findPosV(f,c.forward?g:-g,"line",e.lastHSPos);if(h.hitSide)if(c.forward)var i=a.charCoords(h,"div"),j={top:i.top+8,left:e.lastHSPos},h=a.coordsChar(j,"div");else{var k=a.charCoords(d(a.firstLine(),0),"div");k.left=e.lastHSPos,h=a.coordsChar(k,"div")}return e.lastHPos=h.ch,h},moveByPage:function(a,b,c){var d=b,e=c.repeat;return a.findPosV(d,c.forward?e:-e,"page")},moveByParagraph:function(a,b,c){var d=c.forward?1:-1;return wa(a,b,c.repeat,d)},moveByScroll:function(a,b,c,d){var e=a.getScrollInfo(),f=null,g=c.repeat;g||(g=e.clientHeight/(2*a.defaultTextHeight()));var h=a.charCoords(b,"local");c.repeat=g;var f=yb.moveByDisplayLines(a,b,c,d);if(!f)return null;var i=a.charCoords(f,"local");return a.scrollTo(null,e.top+i.top-h.top),f},moveByWords:function(a,b,c){return ra(a,b,c.repeat,!!c.forward,!!c.wordEnd,!!c.bigWord)},moveTillCharacter:function(a,b,c){var d=c.repeat,e=sa(a,d,c.forward,c.selectedCharacter),f=c.forward?-1:1;return oa(f,c),e?(e.ch+=f,e):null},moveToCharacter:function(a,b,c){var d=c.repeat;return oa(0,c),sa(a,d,c.forward,c.selectedCharacter)||b},moveToSymbol:function(a,b,c){var d=c.repeat;return pa(a,d,c.forward,c.selectedCharacter)||b},moveToColumn:function(a,b,c,d){var e=c.repeat;return d.lastHPos=e-1,d.lastHSPos=a.charCoords(b,"div").left,ta(a,e)},moveToEol:function(a,b,c,e){var f=b;e.lastHPos=1/0;var g=d(f.line+c.repeat-1,1/0),h=a.clipPos(g);return h.ch--,e.lastHSPos=a.charCoords(h,"div").left,g},moveToFirstNonWhiteSpaceCharacter:function(a,b){var c=b;return d(c.line,la(a.getLine(c.line)))},moveToMatchedSymbol:function(a,b){var c,e=b,f=e.line,g=e.ch,h=a.getLine(f);do if(c=h.charAt(g++),c&&o(c)){var i=a.getTokenTypeAt(d(f,g));if("string"!==i&&"comment"!==i)break}while(c);if(c){var j=a.findMatchingBracket(d(f,g));return j.to}return e},moveToStartOfLine:function(a,b){return d(b.line,0)},moveToLineOrEdgeOfDocument:function(a,b,c){var e=c.forward?a.lastLine():a.firstLine();return c.repeatIsExplicit&&(e=c.repeat-a.getOption("firstLineNumber")),d(e,la(a.getLine(e)))},textObjectManipulation:function(a,b,c,d){var e={"(":")",")":"(","{":"}","}":"{","[":"]","]":"["},f={"'":!0,'"':!0},g=c.selectedCharacter;"b"==g?g="(":"B"==g&&(g="{");var h,i=!c.textObjectInner;if(e[g])h=xa(a,b,g,i);else if(f[g])h=ya(a,b,g,i);else if("W"===g)h=ma(a,i,!0,!0);else if("w"===g)h=ma(a,i,!0,!1);else{if("p"!==g)return null;if(h=wa(a,b,c.repeat,0,i),c.linewise=!0,d.visualMode)d.visualLine||(d.visualLine=!0);else{var j=d.inputState.operatorArgs;j&&(j.linewise=!0),h.end.line--}}return a.state.vim.visualMode?ea(a,h.start,h.end):[h.start,h.end]},repeatLastCharacterSearch:function(a,b,c){var d=ub.lastChararacterSearch,e=c.repeat,f=c.forward===d.forward,g=(d.increment?1:0)*(f?-1:1);a.moveH(-g,"char"),c.inclusive=f?!0:!1;var h=sa(a,e,f,d.selectedCharacter);return h?(h.ch+=g,h):(a.moveH(g,"char"),b)}},zb={change:function(b,c,e){var f,g,h=b.state.vim;if(ub.macroModeState.lastInsertModeChanges.inVisualBlock=h.visualBlock,h.visualMode){g=b.getSelection();var i=G("",e.length);b.replaceSelections(i),f=U(e[0].head,e[0].anchor)}else{var j=e[0].anchor,k=e[0].head;g=b.getRange(j,k);var l=h.lastEditInputState||{};if("moveByWords"==l.motion&&!r(g)){var m=/\s+$/.exec(g);m&&l.motionArgs&&l.motionArgs.forward&&(k=L(k,0,-m[0].length),g=g.slice(0,-m[0].length))}var n=new d(j.line-1,Number.MAX_VALUE),o=b.firstLine()==b.lastLine();k.line>b.lastLine()&&c.linewise&&!o?b.replaceRange("",n,k):b.replaceRange("",j,k),c.linewise&&(o||(b.setCursor(n),a.commands.newlineAndIndent(b)),j.ch=Number.MAX_VALUE),f=j}ub.registerController.pushText(c.registerName,"change",g,c.linewise,e.length>1),Ab.enterInsertMode(b,{head:f},b.state.vim)},"delete":function(a,b,c){var e,f,g=a.state.vim;if(g.visualBlock){f=a.getSelection();var h=G("",c.length);a.replaceSelections(h),e=c[0].anchor}else{var i=c[0].anchor,j=c[0].head;b.linewise&&j.line!=a.firstLine()&&i.line==a.lastLine()&&i.line==j.line-1&&(i.line==a.firstLine()?i.ch=0:i=d(i.line-1,X(a,i.line-1))),f=a.getRange(i,j),a.replaceRange("",i,j),e=i,b.linewise&&(e=yb.moveToFirstNonWhiteSpaceCharacter(a,i))}return ub.registerController.pushText(b.registerName,"delete",f,b.linewise,g.visualBlock),J(a,e)},indent:function(a,b,c){var d=a.state.vim,e=c[0].anchor.line,f=d.visualBlock?c[c.length-1].anchor.line:c[0].head.line,g=d.visualMode?b.repeat:1;b.linewise&&f--;for(var h=e;f>=h;h++)for(var i=0;g>i;i++)a.indentLine(h,b.indentRight);return yb.moveToFirstNonWhiteSpaceCharacter(a,c[0].anchor)},changeCase:function(a,b,c,d,e){for(var f=a.getSelections(),g=[],h=b.toLower,i=0;ij.top?(i.line+=(h-j.top)/e,i.line=Math.ceil(i.line),a.setCursor(i),j=a.charCoords(i,"local"),a.scrollTo(null,j.top)):a.scrollTo(null,h);else{var k=h+a.getScrollInfo().clientHeight;k=g.anchor.line?L(g.head,0,1):d(g.anchor.line,0);else if("inplace"==f&&e.visualMode)return;b.setOption("keyMap","vim-insert"),b.setOption("disableInput",!1),c&&c.replace?(b.toggleOverwrite(!0),b.setOption("keyMap","vim-replace"),a.signal(b,"vim-mode-change",{mode:"replace"})):(b.setOption("keyMap","vim-insert"),a.signal(b,"vim-mode-change",{mode:"insert"})),ub.macroModeState.isPlaying||(b.on("change",_a),a.on(b.getInputField(),"keydown",eb)),e.visualMode&&ia(b),aa(b,h,i)}},toggleVisualMode:function(b,c,e){var f,g=c.repeat,h=b.getCursor();e.visualMode?e.visualLine^c.linewise||e.visualBlock^c.blockwise?(e.visualLine=!!c.linewise,e.visualBlock=!!c.blockwise,a.signal(b,"vim-mode-change",{mode:"visual",subMode:e.visualLine?"linewise":e.visualBlock?"blockwise":""}),fa(b)):ia(b):(e.visualMode=!0,e.visualLine=!!c.linewise,e.visualBlock=!!c.blockwise,f=J(b,d(h.line,h.ch+g-1),!0),e.sel={anchor:h,head:f},a.signal(b,"vim-mode-change",{mode:"visual",subMode:e.visualLine?"linewise":e.visualBlock?"blockwise":""}),fa(b),ua(b,e,"<",U(h,f)),ua(b,e,">",V(h,f)))},reselectLastSelection:function(b,c,d){var e=d.lastSelection;if(d.visualMode&&da(b,d),e){var f=e.anchorMark.find(),g=e.headMark.find();if(!f||!g)return;d.sel={anchor:f,head:g},d.visualMode=!0,d.visualLine=e.visualLine,d.visualBlock=e.visualBlock,fa(b),ua(b,d,"<",U(f,g)),ua(b,d,">",V(f,g)),a.signal(b,"vim-mode-change",{mode:"visual",subMode:d.visualLine?"linewise":d.visualBlock?"blockwise":""})}},joinLines:function(a,b,c){var e,f;if(c.visualMode){if(e=a.getCursor("anchor"),f=a.getCursor("head"),T(f,e)){var g=f;f=e,e=g}f.ch=X(a,f.line)-1}else{var h=Math.max(b.repeat,2);e=a.getCursor(),f=J(a,d(e.line+h-1,1/0))}for(var i=0,j=e.line;jc)return"";if(a.getOption("indentWithTabs")){var d=Math.floor(c/h);return Array(d+1).join(" ")}return Array(c+1).join(" ")});g+=m?"\n":""}if(b.repeat>1)var g=Array(b.repeat+1).join(g);var o=f.linewise,p=f.blockwise;if(o)c.visualMode?g=c.visualLine?g.slice(0,-1):"\n"+g.slice(0,g.length-1)+"\n":b.after?(g="\n"+g.slice(0,g.length-1),e.ch=X(a,e.line)):e.ch=0;else{if(p){g=g.split("\n");for(var q=0;qa.lastLine()&&a.replaceRange("\n",d(A,0));var B=X(a,A);Bk.length&&(f=k.length),g=d(i.line,f)}if("\n"==h)e.visualMode||b.replaceRange("",i,g),(a.commands.newlineAndIndentContinueComment||a.commands.newlineAndIndent)(b);else{var l=b.getRange(i,g);if(l=l.replace(/[^\n]/g,h),e.visualBlock){var m=new Array(b.getOption("tabSize")+1).join(" ");l=b.getSelection(),l=l.replace(/\t/g,m).replace(/[^\n]/g,h).split("\n"),b.replaceSelections(l)}else b.replaceRange(l,i,g);e.visualMode?(i=T(j[0].anchor,j[0].head)?j[0].anchor:j[0].head,b.setCursor(i),ia(b,!1)):b.setCursor(L(g,0,-1))}},incrementNumberToken:function(a,b){for(var c,e,f,g,h,i=a.getCursor(),j=a.getLine(i.line),k=/-?\d+/g;null!==(c=k.exec(j))&&(h=c[0],e=c.index,f=e+h.length,!(i.ch=1)return!0}else a.nextCh===a.reverseSymb&&a.depth--;return!1}},section:{init:function(a){a.curMoveThrough=!0,a.symb=(a.forward?"]":"[")===a.symb?"{":"}"},isComplete:function(a){return 0===a.index&&a.nextCh===a.symb}},comment:{isComplete:function(a){var b="*"===a.lastCh&&"/"===a.nextCh;return a.lastCh=a.nextCh,b}},method:{init:function(a){a.symb="m"===a.symb?"{":"}",a.reverseSymb="{"===a.symb?"}":"{"},isComplete:function(a){return a.nextCh===a.symb?!0:!1}},preprocess:{init:function(a){a.index=0},isComplete:function(a){if("#"===a.nextCh){var b=a.lineText.match(/#(\w+)/)[1];if("endif"===b){if(a.forward&&0===a.depth)return!0;a.depth++}else if("if"===b){if(!a.forward&&0===a.depth)return!0;a.depth--}if("else"===b&&0===a.depth)return!0}return!1}}};t("pcre",!0,"boolean"),za.prototype={getQuery:function(){return ub.query},setQuery:function(a){ub.query=a},getOverlay:function(){return this.searchOverlay},setOverlay:function(a){this.searchOverlay=a},isReversed:function(){return ub.isReversed},setReversed:function(a){ub.isReversed=a},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(a){this.annotate=a}};var Db={"\\n":"\n","\\r":"\r","\\t":" "},Eb={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r", +"\\t":" "},Fb="(Javascript regexp)",Gb=function(){this.buildCommandMap_()};Gb.prototype={processCommand:function(a,b,c){var d=this;a.operation(function(){a.curOp.isVimOp=!0,d._processCommand(a,b,c)})},_processCommand:function(b,c,d){var e=b.state.vim,f=ub.registerController.getRegister(":"),g=f.toString();e.visualMode&&ia(b);var h=new a.StringStream(c);f.setText(c);var i=d||{};i.input=c;try{this.parseInput_(b,h,i)}catch(j){throw Ia(b,j),j}var k,l;if(i.commandName){if(k=this.matchCommand_(i.commandName)){if(l=k.name,k.excludeFromCommandHistory&&f.setText(g),this.parseCommandArgs_(h,i,k),"exToKey"==k.type){for(var m=0;m0;b--){var c=a.substring(0,b);if(this.commandMap_[c]){var d=this.commandMap_[c];if(0===d.name.indexOf(a))return d}}return null},buildCommandMap_:function(){this.commandMap_={};for(var a=0;a
    ";if(c){var f;c=c.join("");for(var g=0;g"}}else for(var f in d){var i=d[f].toString();i.length&&(e+='"'+f+" "+i+"
    ")}Ia(a,e)},sort:function(b,c){function e(){if(c.argString){var b=new a.StringStream(c.argString);if(b.eat("!")&&(g=!0),b.eol())return;if(!b.eatSpace())return"Invalid arguments";var d=b.match(/[a-z]+/);if(d){d=d[0],h=-1!=d.indexOf("i"),i=-1!=d.indexOf("u");var e=-1!=d.indexOf("d")&&1,f=-1!=d.indexOf("x")&&1,k=-1!=d.indexOf("o")&&1;if(e+f+k>1)return"Invalid arguments";j=e&&"decimal"||f&&"hex"||k&&"octal"}if(b.match(/\/.*\//))return"patterns not supported"}}function f(a,b){if(g){var c;c=a,a=b,b=c}h&&(a=a.toLowerCase(),b=b.toLowerCase());var d=j&&q.exec(a),e=j&&q.exec(b);return d?(d=parseInt((d[1]+d[2]).toLowerCase(),r),e=parseInt((e[1]+e[2]).toLowerCase(),r),d-e):b>a?-1:1}var g,h,i,j,k=e();if(k)return void Ia(b,k+": "+c.argString);var l=c.line||b.firstLine(),m=c.lineEnd||c.line||b.lastLine();if(l!=m){var n=d(l,0),o=d(m,X(b,m)),p=b.getRange(n,o).split("\n"),q="decimal"==j?/(-?)([\d]+)/:"hex"==j?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==j?/([0-7]+)/:null,r="decimal"==j?10:"hex"==j?16:"octal"==j?8:null,s=[],t=[];if(j)for(var u=0;u=m;m++){var n=j.test(a.getLine(m));n&&(k.push(m+1),l+=a.getLine(m)+"
    ")}if(!d)return void Ia(a,l);var o=0,p=function(){if(o=k)return void Ia(b,"Invalid argument: "+c.argString.substring(f));for(var l=0;k-j>=l;l++){var m=String.fromCharCode(j+l);delete d.marks[m]}}else delete d.marks[g]}}},Ib=new Gb;return a.keyMap.vim={attach:h,detach:g,call:i},t("insertModeEscKeysTimeout",200,"number"),a.keyMap["vim-insert"]={"Ctrl-N":"autocomplete","Ctrl-P":"autocomplete",Enter:function(b){var c=a.commands.newlineAndIndentContinueComment||a.commands.newlineAndIndent;c(b)},fallthrough:["default"],attach:h,detach:g,call:i},a.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:h,detach:g,call:i},y(),wb};a.Vim=e()}); \ No newline at end of file diff --git a/media/editors/codemirror/lib/addons.js b/media/editors/codemirror/lib/addons.js index ee4ccdbb4a121..3f4714083d5e6 100644 --- a/media/editors/codemirror/lib/addons.js +++ b/media/editors/codemirror/lib/addons.js @@ -1543,16 +1543,20 @@ CodeMirror.multiplexingMode = function(outer /*, others */) { CodeMirror.on(this.node, "DOMMouseScroll", onWheel); } - Bar.prototype.moveTo = function(pos, update) { + Bar.prototype.setPos = function(pos) { if (pos < 0) pos = 0; if (pos > this.total - this.screen) pos = this.total - this.screen; - if (pos == this.pos) return; + if (pos == this.pos) return false; this.pos = pos; this.inner.style[this.orientation == "horizontal" ? "left" : "top"] = (pos * (this.size / this.total)) + "px"; - if (update !== false) this.scroll(pos, this.orientation); + return true }; + Bar.prototype.moveTo = function(pos) { + if (this.setPos(pos)) this.scroll(pos, this.orientation); + } + var minButtonSize = 10; Bar.prototype.update = function(scrollSize, clientSize, barSize) { @@ -1567,8 +1571,7 @@ CodeMirror.multiplexingMode = function(outer /*, others */) { } this.inner.style[this.orientation == "horizontal" ? "width" : "height"] = buttonSize + "px"; - this.inner.style[this.orientation == "horizontal" ? "left" : "top"] = - this.pos * (this.size / this.total) + "px"; + this.setPos(this.pos); }; function SimpleScrollbars(cls, place, scroll) { @@ -1595,7 +1598,6 @@ CodeMirror.multiplexingMode = function(outer /*, others */) { if (needsV) { this.vert.update(measure.scrollHeight, measure.clientHeight, measure.viewHeight - (needsH ? width : 0)); - this.vert.node.style.display = "block"; this.vert.node.style.bottom = needsH ? width + "px" : "0"; } if (needsH) { @@ -1609,11 +1611,11 @@ CodeMirror.multiplexingMode = function(outer /*, others */) { }; SimpleScrollbars.prototype.setScrollTop = function(pos) { - this.vert.moveTo(pos, false); + this.vert.setPos(pos); }; SimpleScrollbars.prototype.setScrollLeft = function(pos) { - this.horiz.moveTo(pos, false); + this.horiz.setPos(pos); }; SimpleScrollbars.prototype.clear = function() { @@ -1771,9 +1773,9 @@ CodeMirror.multiplexingMode = function(outer /*, others */) { { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, { keys: 's', type: 'keyToKey', toKeys: 'cl', context: 'normal' }, - { keys: 's', type: 'keyToKey', toKeys: 'xi', context: 'visual'}, + { keys: 's', type: 'keyToKey', toKeys: 'c', context: 'visual'}, { keys: 'S', type: 'keyToKey', toKeys: 'cc', context: 'normal' }, - { keys: 'S', type: 'keyToKey', toKeys: 'dcc', context: 'visual' }, + { keys: 'S', type: 'keyToKey', toKeys: 'VdO', context: 'visual' }, { keys: '', type: 'keyToKey', toKeys: '0' }, { keys: '', type: 'keyToKey', toKeys: '$' }, { keys: '', type: 'keyToKey', toKeys: '' }, @@ -3403,11 +3405,12 @@ CodeMirror.multiplexingMode = function(outer /*, others */) { var line = motionArgs.forward ? cur.line + repeat : cur.line - repeat; var first = cm.firstLine(); var last = cm.lastLine(); - // Vim cancels linewise motions that start on an edge and move beyond - // that edge. It does not cancel motions that do not start on an edge. - if ((line < first && cur.line == first) || - (line > last && cur.line == last)) { - return; + // Vim go to line begin or line end when cursor at first/last line and + // move to previous/next line is triggered. + if (line < first && cur.line == first){ + return this.moveToStartOfLine(cm, head, motionArgs, vim); + }else if (line > last && cur.line == last){ + return this.moveToEol(cm, head, motionArgs, vim); } if (motionArgs.toFirstChar){ endCh=findFirstNonWhiteSpaceCharacter(cm.getLine(line)); diff --git a/media/editors/codemirror/lib/addons.min.js b/media/editors/codemirror/lib/addons.min.js index cbb30b0079922..37dfde130674a 100644 --- a/media/editors/codemirror/lib/addons.min.js +++ b/media/editors/codemirror/lib/addons.min.js @@ -1,4 +1,4 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(a){var b=a.getWrapperElement();a.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:b.style.width,height:b.style.height},b.style.width="",b.style.height="auto",b.className+=" CodeMirror-fullscreen",document.documentElement.style.overflow="hidden",a.refresh()}function c(a){var b=a.getWrapperElement();b.className=b.className.replace(/\s*CodeMirror-fullscreen\b/,""),document.documentElement.style.overflow="";var c=a.state.fullScreenRestore;b.style.width=c.width,b.style.height=c.height,window.scrollTo(c.scrollLeft,c.scrollTop),a.refresh()}a.defineOption("fullScreen",!1,function(d,e,f){f==a.Init&&(f=!1),!f!=!e&&(e?b(d):c(d))})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function b(a,b,c,d){this.cm=a,this.node=b,this.options=c,this.height=d,this.cleared=!1}function c(a){var b=a.getWrapperElement(),c=window.getComputedStyle?window.getComputedStyle(b):b.currentStyle,d=parseInt(c.height),e=a.state.panels={setHeight:b.style.height,heightLeft:d,panels:0,wrapper:document.createElement("div")};b.parentNode.insertBefore(e.wrapper,b);var f=a.hasFocus();e.wrapper.appendChild(b),f&&a.focus(),a._setSize=a.setSize,null!=d&&(a.setSize=function(b,c){if(null==c)return this._setSize(b,c);if(e.setHeight=c,"number"!=typeof c){var f=/^(\d+\.?\d*)px$/.exec(c);f?c=Number(f[1]):(e.wrapper.style.height=c,c=e.wrapper.offsetHeight,e.wrapper.style.height="")}a._setSize(b,e.heightLeft+=c-d),d=c})}function d(a){var b=a.state.panels;a.state.panels=null;var c=a.getWrapperElement();b.wrapper.parentNode.replaceChild(c,b.wrapper),c.style.height=b.setHeight,a.setSize=a._setSize,a.setSize()}a.defineExtension("addPanel",function(a,d){d=d||{},this.state.panels||c(this);var e=this.state.panels,f=e.wrapper,g=this.getWrapperElement();d.after instanceof b&&!d.after.cleared?f.insertBefore(a,d.before.node.nextSibling):d.before instanceof b&&!d.before.cleared?f.insertBefore(a,d.before.node):d.replace instanceof b&&!d.replace.cleared?(f.insertBefore(a,d.replace.node),d.replace.clear()):"bottom"==d.position?f.appendChild(a):"before-bottom"==d.position?f.insertBefore(a,g.nextSibling):"after-top"==d.position?f.insertBefore(a,g):f.insertBefore(a,f.firstChild);var h=d&&d.height||a.offsetHeight;return this._setSize(null,e.heightLeft-=h),e.panels++,new b(this,a,d,h)}),b.prototype.clear=function(){if(!this.cleared){this.cleared=!0;var a=this.cm.state.panels;this.cm._setSize(null,a.heightLeft+=this.height),a.wrapper.removeChild(this.node),0==--a.panels&&d(this.cm)}},b.prototype.changed=function(a){var b=null==a?this.node.offsetHeight:a,c=this.cm.state.panels;this.cm._setSize(null,c.height+=b-this.height),this.height=b}}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function b(a,b){return"pairs"==b&&"string"==typeof a?a:"object"==typeof a&&null!=a[b]?a[b]:l[b]}function c(a){return function(b){return h(b,a)}}function d(a){var b=a.state.closeBrackets;if(!b)return null;var c=a.getModeAt(a.getCursor());return c.closeBrackets||b}function e(c){var e=d(c);if(!e||c.getOption("disableInput"))return a.Pass;for(var f=b(e,"pairs"),g=c.listSelections(),h=0;h=0;h--){var k=g[h].head;c.replaceRange("",m(k.line,k.ch-1),m(k.line,k.ch+1),"+delete")}}function f(c){var e=d(c),f=e&&b(e,"explode");if(!f||c.getOption("disableInput"))return a.Pass;for(var g=c.listSelections(),h=0;h0;return{anchor:new m(b.anchor.line,b.anchor.ch+(c?-1:1)),head:new m(b.head.line,b.head.ch+(c?1:-1))}}function h(c,e){var f=d(c);if(!f||c.getOption("disableInput"))return a.Pass;var h=b(f,"pairs"),j=h.indexOf(e);if(-1==j)return a.Pass;for(var l,n,o=b(f,"triples"),p=h.charAt(j+1)==e,q=c.listSelections(),r=j%2==0,s=0;s1&&o.indexOf(e)>=0&&c.getRange(m(v.line,v.ch-2),v)==e+e&&(v.ch<=2||c.getRange(m(v.line,v.ch-3),m(v.line,v.ch-2))!=e))t="addFour";else if(p){if(a.isWordChar(n)||!k(c,v,e))return a.Pass;t="both"}else{if(!r||c.getLine(v.line).length!=v.ch&&!i(n,h)&&!/\s/.test(n))return a.Pass;t="both"}else t=o.indexOf(e)>=0&&c.getRange(v,m(v.line,v.ch+3))==e+e+e?"skipThree":"skip";if(l){if(l!=t)return a.Pass}else l=t}var w=j%2?h.charAt(j-1):e,x=j%2?e:h.charAt(j+1);c.operation(function(){if("skip"==l)c.execCommand("goCharRight");else if("skipThree"==l)for(var a=0;3>a;a++)c.execCommand("goCharRight");else if("surround"==l){for(var b=c.getSelections(),a=0;a-1&&c%2==1}function j(a,b){var c=a.getRange(m(b.line,b.ch-1),m(b.line,b.ch+1));return 2==c.length?c:null}function k(b,c,d){var e=b.getLine(c.line),f=b.getTokenAt(c);if(/\bstring2?\b/.test(f.type))return!1;var g=new a.StringStream(e.slice(0,c.ch)+d+e.slice(c.ch),4);for(g.pos=g.start=f.start;;){var h=b.getMode().token(g,f.state);if(g.pos>=c.ch+1)return/\bstring2?\b/.test(h);g.start=g.pos}}var l={pairs:"()[]{}''\"\"",triples:"",explode:"[]{}"},m=a.Pos;a.defineOption("autoCloseBrackets",!1,function(b,c,d){d&&d!=a.Init&&(b.removeKeyMap(o),b.state.closeBrackets=null),c&&(b.state.closeBrackets=c,b.addKeyMap(o))});for(var n=l.pairs+"`",o={Backspace:e,Enter:f},p=0;pj.ch&&(r=r.slice(0,r.length-k.end+j.ch));var s=r.toLowerCase();if(!r||"string"==k.type&&(k.end!=j.ch||!/[\"\']/.test(k.string.charAt(k.string.length-1))||1==k.string.length)||"tag"==k.type&&"closeTag"==m.type||k.string.indexOf("/")==k.string.length-1||p&&e(p,s)>-1||f(b,r,j,m,!0))return a.Pass;var t=q&&e(q,s)>-1;d[i]={indent:t,text:">"+(t?"\n\n":"")+"",newPos:t?a.Pos(j.line+1,0):a.Pos(j.line,j.ch+1)}}for(var i=c.length-1;i>=0;i--){var u=d[i];b.replaceRange(u.text,c[i].head,c[i].anchor,"+insert");var v=b.listSelections().slice(0);v[i]={head:u.newPos,anchor:u.newPos},b.setSelections(v),u.indent&&(b.indentLine(u.newPos.line,null,!0),b.indentLine(u.newPos.line+1,null,!0))}}function c(b,c){for(var d=b.listSelections(),e=[],g=c?"/":""!=b.getLine(i.line).charAt(j.end)&&(m+=">"),e[h]=m}b.replaceSelections(e),d=b.listSelections();for(var h=0;hc;++c)if(a[c]==b)return c;return-1}function f(b,c,d,e,f){if(!a.scanForClosingTag)return!1;var g=Math.min(b.lastLine()+1,d.line+500),h=a.scanForClosingTag(b,d,null,g);if(!h||h.tag!=c)return!1;for(var i=e.context,j=f?1:0;i&&i.tagName==c;i=i.prev)++j;d=h.to;for(var k=1;j>k;k++){var l=a.scanForClosingTag(b,d,null,g);if(!l||l.tag!=c)return!1;d=l.to}return!0}a.defineOption("autoCloseTags",!1,function(c,e,f){if(f!=a.Init&&f&&c.removeKeyMap("autoCloseTags"),e){var g={name:"autoCloseTags"};("object"!=typeof e||e.whenClosing)&&(g["'/'"]=function(a){return d(a)}),("object"!=typeof e||e.whenOpening)&&(g["'>'"]=function(a){return b(a)}),c.addKeyMap(g)}});var g=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],h=["applet","blockquote","body","button","div","dl","fieldset","form","frameset","h1","h2","h3","h4","h5","h6","head","html","iframe","layer","legend","object","ol","p","select","table","ul"];a.commands.closeTag=function(a){return c(a)}}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function b(a,b,d,e){var f=a.getLineHandle(b.line),i=b.ch-1,j=i>=0&&h[f.text.charAt(i)]||h[f.text.charAt(++i)];if(!j)return null;var k=">"==j.charAt(1)?1:-1;if(d&&k>0!=(i==b.ch))return null;var l=a.getTokenTypeAt(g(b.line,i+1)),m=c(a,g(b.line,i+(k>0?1:0)),k,l||null,e);return null==m?null:{from:g(b.line,i),to:m&&m.pos,match:m&&m.ch==j.charAt(0),forward:k>0}}function c(a,b,c,d,e){for(var f=e&&e.maxScanLineLength||1e4,i=e&&e.maxScanLines||1e3,j=[],k=e&&e.bracketRegex?e.bracketRegex:/[(){}[\]]/,l=c>0?Math.min(b.line+i,a.lastLine()+1):Math.max(a.firstLine()-1,b.line-i),m=b.line;m!=l;m+=c){var n=a.getLine(m);if(n){var o=c>0?0:n.length-1,p=c>0?n.length:-1;if(!(n.length>f))for(m==b.line&&(o=b.ch-(0>c?1:0));o!=p;o+=c){var q=n.charAt(o);if(k.test(q)&&(void 0===d||a.getTokenTypeAt(g(m,o+1))==d)){var r=h[q];if(">"==r.charAt(1)==c>0)j.push(q);else{if(!j.length)return{pos:g(m,o),ch:q};j.pop()}}}}}return m-c==(c>0?a.lastLine():a.firstLine())?!1:null}function d(a,c,d){for(var e=a.state.matchBrackets.maxHighlightLineLength||1e3,h=[],i=a.listSelections(),j=0;j",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},i=null;a.defineOption("matchBrackets",!1,function(b,c,d){d&&d!=a.Init&&b.off("cursorActivity",e),c&&(b.state.matchBrackets="object"==typeof c?c:{},b.on("cursorActivity",e))}),a.defineExtension("matchBrackets",function(){d(this,!0)}),a.defineExtension("findMatchingBracket",function(a,c,d){return b(this,a,c,d)}),a.defineExtension("scanForBracket",function(a,b,d,e){return c(this,a,b,d,e)})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("../fold/xml-fold")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../fold/xml-fold"],a):a(CodeMirror)}(function(a){"use strict";function b(a){a.state.tagHit&&a.state.tagHit.clear(),a.state.tagOther&&a.state.tagOther.clear(),a.state.tagHit=a.state.tagOther=null}function c(c){c.state.failedTagMatch=!1,c.operation(function(){if(b(c),!c.somethingSelected()){var d=c.getCursor(),e=c.getViewport();e.from=Math.min(e.from,d.line),e.to=Math.max(d.line+1,e.to);var f=a.findMatchingTag(c,d,e);if(f){if(c.state.matchBothTags){var g="open"==f.at?f.open:f.close;g&&(c.state.tagHit=c.markText(g.from,g.to,{className:"CodeMirror-matchingtag"}))}var h="close"==f.at?f.open:f.close;h?c.state.tagOther=c.markText(h.from,h.to,{className:"CodeMirror-matchingtag"}):c.state.failedTagMatch=!0}}})}function d(a){a.state.failedTagMatch&&c(a)}a.defineOption("matchTags",!1,function(e,f,g){g&&g!=a.Init&&(e.off("cursorActivity",c),e.off("viewportChange",d),b(e)),f&&(e.state.matchBothTags="object"==typeof f&&f.bothTags,e.on("cursorActivity",c),e.on("viewportChange",d),c(e))}),a.commands.toMatchingTag=function(b){var c=a.findMatchingTag(b,b.getCursor());if(c){var d="close"==c.at?c.open:c.close;d&&b.extendSelection(d.to,d.from)}}}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.registerHelper("fold","brace",function(b,c){function d(d){for(var e=c.ch,i=0;;){var j=0>=e?-1:h.lastIndexOf(d,e-1);if(-1!=j){if(1==i&&j=o;++o)for(var p=b.getLine(o),q=o==g?e:0;;){var r=p.indexOf(i,q),s=p.indexOf(j,q);if(0>r&&(r=p.length),0>s&&(s=p.length),q=Math.min(r,s),q==p.length)break;if(b.getTokenTypeAt(a.Pos(o,q+1))==f)if(q==r)++m;else if(!--m){k=o,l=q;break a}++q}if(null!=k&&(g!=k||l!=e))return{from:a.Pos(g,e),to:a.Pos(k,l)}}}),a.registerHelper("fold","import",function(b,c){function d(c){if(cb.lastLine())return null;var d=b.getTokenAt(a.Pos(c,1));if(/\S/.test(d.string)||(d=b.getTokenAt(a.Pos(c,d.end+1))),"keyword"!=d.type||"import"!=d.string)return null;for(var e=c,f=Math.min(b.lastLine(),c+10);f>=e;++e){var g=b.getLine(e),h=g.indexOf(";");if(-1!=h)return{startCh:d.end,end:a.Pos(e,h)}}}var e,c=c.line,f=d(c);if(!f||d(c-1)||(e=d(c-2))&&e.end.line==c-1)return null;for(var g=f.end;;){var h=d(g.line+1);if(null==h)break;g=h.end}return{from:b.clipPos(a.Pos(c,f.startCh+1)),to:g}}),a.registerHelper("fold","include",function(b,c){function d(c){if(cb.lastLine())return null;var d=b.getTokenAt(a.Pos(c,1));return/\S/.test(d.string)||(d=b.getTokenAt(a.Pos(c,d.end+1))),"meta"==d.type&&"#include"==d.string.slice(0,8)?d.start+8:void 0}var c=c.line,e=d(c);if(null==e||null!=d(c-1))return null;for(var f=c;;){var g=d(f+1);if(null==g)break;++f}return{from:a.Pos(c,e+1),to:b.clipPos(a.Pos(f))}})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(b,e,f,g){function h(a){var c=i(b,e);if(!c||c.to.line-c.from.lineb.firstLine();)e=a.Pos(e.line-1,0),k=h(!1);if(k&&!k.cleared&&"unfold"!==g){var l=c(b,f);a.on(l,"mousedown",function(b){m.clear(),a.e_preventDefault(b)});var m=b.markText(k.from,k.to,{replacedWith:l,clearOnEnter:!0,__isFold:!0});m.on("clear",function(c,d){a.signal(b,"unfold",b,c,d)}),a.signal(b,"fold",b,k.from,k.to)}}function c(a,b){var c=d(a,b,"widget");if("string"==typeof c){var e=document.createTextNode(c);c=document.createElement("span"),c.appendChild(e),c.className="CodeMirror-foldmarker"}return c}function d(a,b,c){if(b&&void 0!==b[c])return b[c];var d=a.options.foldOptions;return d&&void 0!==d[c]?d[c]:e[c]}a.newFoldFunction=function(a,c){return function(d,e){b(d,e,{rangeFinder:a,widget:c})}},a.defineExtension("foldCode",function(a,c,d){b(this,a,c,d)}),a.defineExtension("isFolded",function(a){for(var b=this.findMarksAt(a),c=0;c=c;c++)b.foldCode(a.Pos(c,0),null,"fold")})},a.commands.unfoldAll=function(b){b.operation(function(){for(var c=b.firstLine(),d=b.lastLine();d>=c;c++)b.foldCode(a.Pos(c,0),null,"unfold")})},a.registerHelper("fold","combine",function(){var a=Array.prototype.slice.call(arguments,0);return function(b,c){for(var d=0;d=h&&(c=e(f.indicatorOpen))}a.setGutterMarker(b,f.gutter,c),++g})}function g(a){var b=a.getViewport(),c=a.state.foldGutter;c&&(a.operation(function(){f(a,b.from,b.to)}),c.from=b.from,c.to=b.to)}function h(a,b,c){var e=a.state.foldGutter;if(e){var f=e.options;if(c==f.gutter){var g=d(a,b);g?g.clear():a.foldCode(l(b,0),f.rangeFinder)}}}function i(a){var b=a.state.foldGutter;if(b){var c=b.options;b.from=b.to=0,clearTimeout(b.changeUpdate),b.changeUpdate=setTimeout(function(){g(a)},c.foldOnChangeTimeSpan||600)}}function j(a){var b=a.state.foldGutter;if(b){var c=b.options;clearTimeout(b.changeUpdate),b.changeUpdate=setTimeout(function(){var c=a.getViewport();b.from==b.to||c.from-b.to>20||b.from-c.to>20?g(a):a.operation(function(){c.fromb.to&&(f(a,b.to,c.to),b.to=c.to)})},c.updateViewportTimeSpan||400)}}function k(a,b){var c=a.state.foldGutter;if(c){var d=b.line;d>=c.from&&d=a.max?void 0:(a.ch=0,a.text=a.cm.getLine(++a.line),!0)}function f(a){return a.line<=a.min?void 0:(a.text=a.cm.getLine(--a.line),a.ch=a.text.length,!0)}function g(a){for(;;){var b=a.text.indexOf(">",a.ch);if(-1==b){if(e(a))continue;return}{if(d(a,b+1)){var c=a.text.lastIndexOf("/",b),f=c>-1&&!/\S/.test(a.text.slice(c+1,b));return a.ch=b+1,f?"selfClose":"regular"}a.ch=b+1}}}function h(a){for(;;){var b=a.ch?a.text.lastIndexOf("<",a.ch-1):-1;if(-1==b){if(f(a))continue;return}if(d(a,b+1)){p.lastIndex=b,a.ch=b;var c=p.exec(a.text);if(c&&c.index==b)return c}else a.ch=b}}function i(a){for(;;){p.lastIndex=a.ch;var b=p.exec(a.text);if(!b){if(e(a))continue;return}{if(d(a,b.index+1))return a.ch=b.index+b[0].length,b;a.ch=b.index+1}}}function j(a){for(;;){var b=a.ch?a.text.lastIndexOf(">",a.ch-1):-1;if(-1==b){if(f(a))continue;return}{if(d(a,b+1)){var c=a.text.lastIndexOf("/",b),e=c>-1&&!/\S/.test(a.text.slice(c+1,b));return a.ch=b+1,e?"selfClose":"regular"}a.ch=b}}}function k(a,b){for(var c=[];;){var d,e=i(a),f=a.line,h=a.ch-(e?e[0].length:0);if(!e||!(d=g(a)))return;if("selfClose"!=d)if(e[1]){for(var j=c.length-1;j>=0;--j)if(c[j]==e[2]){c.length=j;break}if(0>j&&(!b||b==e[2]))return{tag:e[2],from:m(f,h),to:m(a.line,a.ch)}}else c.push(e[2])}}function l(a,b){for(var c=[];;){var d=j(a);if(!d)return;if("selfClose"!=d){var e=a.line,f=a.ch,g=h(a);if(!g)return;if(g[1])c.push(g[2]);else{for(var i=c.length-1;i>=0;--i)if(c[i]==g[2]){c.length=i;break}if(0>i&&(!b||b==g[2]))return{tag:g[2],from:m(a.line,a.ch),to:m(e,f)}}}else h(a)}}var m=a.Pos,n="A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",o=n+"-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",p=new RegExp("<(/?)(["+n+"]["+o+"]*)","g");a.registerHelper("fold","xml",function(a,b){for(var d=new c(a,b.line,0);;){var e,f=i(d);if(!f||d.line!=b.line||!(e=g(d)))return;if(!f[1]&&"selfClose"!=e){var b=m(d.line,d.ch),h=k(d,f[2]);return h&&{from:b,to:h.from}}}}),a.findMatchingTag=function(a,d,e){var f=new c(a,d.line,d.ch,e);if(-1!=f.text.indexOf(">")||-1!=f.text.indexOf("<")){var i=g(f),j=i&&m(f.line,f.ch),n=i&&h(f);if(i&&n&&!(b(f,d)>0)){var o={from:m(f.line,f.ch),to:j,tag:n[2]};return"selfClose"==i?{open:o,close:null,at:"open"}:n[1]?{open:l(f,n[2]),close:o,at:"close"}:(f=new c(a,j.line,j.ch,e),{open:o,close:k(f,n[2]),at:"open"})}}},a.findEnclosingTag=function(a,b,d){for(var e=new c(a,b.line,b.ch,d);;){var f=l(e);if(!f)break;var g=new c(a,b.line,b.ch,d),h=k(g,f.tag);if(h)return{open:f,close:h}}},a.scanForClosingTag=function(a,b,d,e){var f=new c(a,b.line,b.ch,e?{from:0,to:e}:null);return k(f,d)}}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),"cjs"):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],function(b){a(b,"amd")}):a(CodeMirror,"plain")}(function(a,b){function c(a,b){var c=b;return function(){0==--c&&a()}}function d(b,d){var e=a.modes[b].dependencies;if(!e)return d();for(var f=[],g=0;g-1?e+b.length:e}var f=b.exec(c?a.slice(c):a);return f?f.index+c+(d?f[0].length:0):-1}var d=Array.prototype.slice.call(arguments,1);return{startState:function(){return{outer:a.startState(b),innerActive:null,inner:null}},copyState:function(c){return{outer:a.copyState(b,c.outer),innerActive:c.innerActive,inner:c.innerActive&&a.copyState(c.innerActive.mode,c.inner)}},token:function(e,f){if(f.innerActive){var g=f.innerActive,h=e.string;if(!g.close&&e.sol())return f.innerActive=f.inner=null,this.token(e,f);var i=g.close?c(h,g.close,e.pos,g.parseDelimiters):-1;if(i==e.pos&&!g.parseDelimiters)return e.match(g.close),f.innerActive=f.inner=null,g.delimStyle&&g.delimStyle+" "+g.delimStyle+"-close";i>-1&&(e.string=h.slice(0,i));var j=g.mode.token(e,f.inner);return i>-1&&(e.string=h),i==e.pos&&g.parseDelimiters&&(f.innerActive=f.inner=null),g.innerStyle&&(j=j?j+" "+g.innerStyle:g.innerStyle),j}for(var k=1/0,h=e.string,l=0;li&&(k=i)}k!=1/0&&(e.string=h.slice(0,k));var n=b.token(e,f.outer);return k!=1/0&&(e.string=h),n},indent:function(c,d){var e=c.innerActive?c.innerActive.mode:b;return e.indent?e.indent(c.innerActive?c.inner:c.outer,d):a.Pass},blankLine:function(c){var e=c.innerActive?c.innerActive.mode:b;if(e.blankLine&&e.blankLine(c.innerActive?c.inner:c.outer),c.innerActive)"\n"===c.innerActive.close&&(c.innerActive=c.inner=null);else for(var f=0;fd.right?1:0:b.clientYd.bottom?1:0,f.moveTo(f.pos+c*f.screen)}),a.on(this.node,"mousewheel",e),a.on(this.node,"DOMMouseScroll",e)}function c(a,c,d){this.addClass=a,this.horiz=new b(a,"horizontal",d),c(this.horiz.node),this.vert=new b(a,"vertical",d),c(this.vert.node),this.width=null}b.prototype.moveTo=function(a,b){0>a&&(a=0),a>this.total-this.screen&&(a=this.total-this.screen),a!=this.pos&&(this.pos=a,this.inner.style["horizontal"==this.orientation?"left":"top"]=a*(this.size/this.total)+"px",b!==!1&&this.scroll(a,this.orientation))};var d=10;b.prototype.update=function(a,b,c){this.screen=b,this.total=a,this.size=c;var e=this.screen*(this.size/this.total);d>e&&(this.size-=d-e,e=d),this.inner.style["horizontal"==this.orientation?"width":"height"]=e+"px",this.inner.style["horizontal"==this.orientation?"left":"top"]=this.pos*(this.size/this.total)+"px"},c.prototype.update=function(a){if(null==this.width){var b=window.getComputedStyle?window.getComputedStyle(this.horiz.node):this.horiz.node.currentStyle;b&&(this.width=parseInt(b.height))}var c=this.width||0,d=a.scrollWidth>a.clientWidth+1,e=a.scrollHeight>a.clientHeight+1;return this.vert.node.style.display=e?"block":"none",this.horiz.node.style.display=d?"block":"none",e&&(this.vert.update(a.scrollHeight,a.clientHeight,a.viewHeight-(d?c:0)),this.vert.node.style.display="block",this.vert.node.style.bottom=d?c+"px":"0"),d&&(this.horiz.update(a.scrollWidth,a.clientWidth,a.viewWidth-(e?c:0)-a.barLeft),this.horiz.node.style.right=e?c+"px":"0",this.horiz.node.style.left=a.barLeft+"px"),{right:e?c:0,bottom:d?c:0}},c.prototype.setScrollTop=function(a){this.vert.moveTo(a,!1)},c.prototype.setScrollLeft=function(a){this.horiz.moveTo(a,!1)},c.prototype.clear=function(){var a=this.horiz.node.parentNode;a.removeChild(this.horiz.node),a.removeChild(this.vert.node)},a.scrollbarModel.simple=function(a,b){return new c("CodeMirror-simplescroll",a,b)},a.scrollbarModel.overlay=function(a,b){return new c("CodeMirror-overlayscroll",a,b)}}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(a){for(var b=0;b",type:"keyToKey",toKeys:"h"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"",type:"keyToKey",toKeys:"W"},{keys:"",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"", -type:"keyToKey",toKeys:"w"},{keys:"",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"xi",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"dcc",context:"visual"},{keys:"",type:"keyToKey",toKeys:"0"},{keys:"",type:"keyToKey",toKeys:"$"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r",type:"action",action:"replace",isEdit:!0},{keys:"@",type:"action",action:"replayMacro"},{keys:"q",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0}},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"",type:"action",action:"redo"},{keys:"m",type:"action",action:"setMark"},{keys:'"',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"a",type:"motion",motion:"textObjectManipulation"},{keys:"i",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],c=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],d=a.Pos,e=function(){function e(b){b.setOption("disableInput",!0),b.setOption("showCursorWhenSelecting",!1),a.signal(b,"vim-mode-change",{mode:"normal"}),b.on("cursorActivity",ab),x(b),a.on(b.getInputField(),"paste",k(b))}function f(b){b.setOption("disableInput",!1),b.off("cursorActivity",ab),a.off(b.getInputField(),"paste",k(b)),b.state.vim=null}function g(b,c){this==a.keyMap.vim&&a.rmClass(b.getWrapperElement(),"cm-fat-cursor"),c&&c.attach==h||f(b,!1)}function h(b,c){this==a.keyMap.vim&&a.addClass(b.getWrapperElement(),"cm-fat-cursor"),c&&c.attach==h||e(b)}function i(b,c){if(!c)return void 0;var d=j(b);if(!d)return!1;var e=a.Vim.findKey(c,d);return"function"==typeof e&&a.signal(c,"vim-keypress",d),e}function j(a){if("'"==a.charAt(0))return a.charAt(1);var b=a.split(/-(?!$)/),c=b[b.length-1];if(1==b.length&&1==b[0].length)return!1;if(2==b.length&&"Shift"==b[0]&&1==c.length)return!1;for(var d=!1,e=0;e"):!1}function k(a){var b=a.state.vim;return b.onPasteFn||(b.onPasteFn=function(){b.insertMode||(a.setCursor(L(a.getCursor(),0,1)),Ab.enterInsertMode(a,{},b))}),b.onPasteFn}function l(a,b){for(var c=[],d=a;a+b>d;d++)c.push(String.fromCharCode(d));return c}function m(a,b){return b>=a.firstLine()&&b<=a.lastLine()}function n(a){return/^[a-z]$/.test(a)}function o(a){return-1!="()[]{}".indexOf(a)}function p(a){return jb.test(a)}function q(a){return/^[A-Z]$/.test(a)}function r(a){return/^\s*$/.test(a)}function s(a,b){for(var c=0;cd;d++)c.push(a);return c}function H(a,b){zb[a]=b}function I(a,b){Ab[a]=b}function J(a,b,c){var e=Math.min(Math.max(a.firstLine(),b.line),a.lastLine()),f=X(a,e)-1;f=c?f+1:f;var g=Math.min(Math.max(0,b.ch),f);return d(e,g)}function K(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function L(a,b,c){return"object"==typeof b&&(c=b.ch,b=b.line),d(a.line+b,a.ch+c)}function M(a,b){return{line:b.line-a.line,ch:b.line-a.line}}function N(a,b,c,d){for(var e,f=[],g=[],h=0;h"==b.slice(-11)){var c=b.length-11,d=a.slice(0,c),e=b.slice(0,c);return d==e&&a.length>c?"full":0==e.indexOf(d)?"partial":!1}return a==b?"full":0==b.indexOf(a)?"partial":!1}function P(a){var b=/^.*(<[\w\-]+>)$/.exec(a),c=b?b[1]:a.slice(-1);if(c.length>1)switch(c){case"":c="\n";break;case"":c=" "}return c}function Q(a,b,c){return function(){for(var d=0;c>d;d++)b(a)}}function R(a){return d(a.line,a.ch)}function S(a,b){return a.ch==b.ch&&a.line==b.line}function T(a,b){return a.line2&&(b=U.apply(void 0,Array.prototype.slice.call(arguments,1))),T(a,b)?a:b}function V(a,b){return arguments.length>2&&(b=V.apply(void 0,Array.prototype.slice.call(arguments,1))),T(a,b)?b:a}function W(a,b,c){var d=T(a,b),e=T(b,c);return d&&e}function X(a,b){return a.getLine(b).length}function Y(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function Z(a){return a.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function $(a,b,c){var e=X(a,b),f=new Array(c-e+1).join(" ");a.setCursor(d(b,e)),a.replaceRange(f,a.getCursor())}function _(a,b){var c=[],e=a.listSelections(),f=R(a.clipPos(b)),g=!S(b,f),h=a.getCursor("head"),i=ba(e,h),j=S(e[i].head,e[i].anchor),k=e.length-1,l=k-i>i?k:0,m=e[l].anchor,n=Math.min(m.line,f.line),o=Math.max(m.line,f.line),p=m.ch,q=f.ch,r=e[l].head.ch-p,s=q-p;r>0&&0>=s?(p++,g||q--):0>r&&s>=0?(p--,j||q++):0>r&&-1==s&&(p--,q++);for(var t=n;o>=t;t++){var u={anchor:new d(t,p),head:new d(t,q)};c.push(u)}return i=f.line==o?c.length-1:0,a.setSelections(c),b.ch=q,m.ch=p,m}function aa(a,b,c){for(var d=[],e=0;c>e;e++){var f=L(b,e,0);d.push({anchor:f,head:f})}a.setSelections(d,0)}function ba(a,b,c){for(var d=0;dj&&(f.line=j),f.ch=X(a,f.line)}return{ranges:[{anchor:g,head:f}],primary:0}}if("block"==c){for(var k=Math.min(g.line,f.line),l=Math.min(g.ch,f.ch),m=Math.max(g.line,f.line),n=Math.max(g.ch,f.ch)+1,o=m-k+1,p=f.line==k?0:o-1,q=[],r=0;o>r;r++)q.push({anchor:d(k+r,l),head:d(k+r,n)});return{ranges:q,primary:p}}}function ha(a){var b=a.getCursor("head");return 1==a.getSelection().length&&(b=U(b,a.getCursor("anchor"))),b}function ia(b,c){var d=b.state.vim;c!==!1&&b.setCursor(J(b,d.sel.head)),da(b,d),d.visualMode=!1,d.visualLine=!1,d.visualBlock=!1,a.signal(b,"vim-mode-change",{mode:"normal"}),d.fakeCursor&&d.fakeCursor.clear()}function ja(a,b,c){var d=a.getRange(b,c);if(/\n\s*$/.test(d)){var e=d.split("\n");e.pop();for(var f,f=e.pop();e.length>0&&f&&r(f);f=e.pop())c.line--,c.ch=0;f?(c.line--,c.ch=X(a,c.line)):c.ch=0}}function ka(a,b,c){b.ch=0,c.ch=0,c.line++}function la(a){if(!a)return 0;var b=a.search(/\S/);return-1==b?a.length:b}function ma(a,b,c,e,f){for(var g=ha(a),h=a.getLine(g.line),i=g.ch,j=f?kb[0]:lb[0];!j(h.charAt(i));)if(i++,i>=h.length)return null;e?j=lb[0]:(j=kb[0],j(h.charAt(i))||(j=kb[1]));for(var k=i,l=i;j(h.charAt(k))&&k=0;)l--;if(l++,b){for(var m=k;/\s/.test(h.charAt(k))&&k0;)l--;l||(l=n)}}return{start:d(g.line,l),end:d(g.line,k)}}function na(a,b,c){S(b,c)||ub.jumpList.add(a,b,c)}function oa(a,b){ub.lastChararacterSearch.increment=a,ub.lastChararacterSearch.forward=b.forward,ub.lastChararacterSearch.selectedCharacter=b.selectedCharacter}function pa(a,b,c,e){var f=R(a.getCursor()),g=c?1:-1,h=c?a.lineCount():-1,i=f.ch,j=f.line,k=a.getLine(j),l={lineText:k,nextCh:k.charAt(i),lastCh:null,index:i,symb:e,reverseSymb:(c?{")":"(","}":"{"}:{"(":")","{":"}"})[e],forward:c,depth:0,curMoveThrough:!1},m=Bb[e];if(!m)return f;var n=Cb[m].init,o=Cb[m].isComplete;for(n&&n(l);j!==h&&b;){if(l.index+=g,l.nextCh=l.lineText.charAt(l.index),!l.nextCh){if(j+=g,l.lineText=a.getLine(j)||"",g>0)l.index=0;else{var p=l.lineText.length;l.index=p>0?p-1:0}l.nextCh=l.lineText.charAt(l.index)}o(l)&&(f.line=j,f.ch=l.index,b--)}return l.nextCh||l.curMoveThrough?d(j,l.index):f}function qa(a,b,c,d,e){var f=b.line,g=b.ch,h=a.getLine(f),i=c?1:-1,j=d?lb:kb;if(e&&""==h){if(f+=i,h=a.getLine(f),!m(a,f))return null;g=c?0:h.length}for(;;){if(e&&""==h)return{from:0,to:0,line:f};for(var k=i>0?h.length:-1,l=k,n=k;g!=k;){for(var o=!1,p=0;p0?0:h.length}throw new Error("The impossible happened.")}function ra(a,b,c,e,f,g){var h=R(b),i=[];(e&&!f||!e&&f)&&c++;for(var j=!(e&&f),k=0;c>k;k++){var l=qa(a,b,e,g,j);if(!l){var m=X(a,a.lastLine());i.push(e?{line:a.lastLine(),from:m,to:m}:{line:0,from:0,to:0});break}i.push(l),b=d(l.line,e?l.to-1:l.from)}var n=i.length!=c,o=i[0],p=i.pop();return e&&!f?(n||o.from==h.ch&&o.line==h.line||(p=i.pop()),d(p.line,p.from)):e&&f?d(p.line,p.to-1):!e&&f?(n||o.to==h.ch&&o.line==h.line||(p=i.pop()),d(p.line,p.to)):d(p.line,p.from)}function sa(a,b,c,e){for(var f,g=a.getCursor(),h=g.ch,i=0;b>i;i++){var j=a.getLine(g.line);if(f=va(h,j,e,c,!0),-1==f)return null;h=f}return d(a.getCursor().line,f)}function ta(a,b){var c=a.getCursor().line;return J(a,d(c,b-1))}function ua(a,b,c,d){s(c,pb)&&(b.marks[c]&&b.marks[c].clear(),b.marks[c]=a.setBookmark(d))}function va(a,b,c,d,e){var f;return d?(f=b.indexOf(c,a+1),-1==f||e||(f-=1)):(f=b.lastIndexOf(c,a-1),-1==f||e||(f+=1)),f}function wa(a,b,c,e,f){function g(b){return!a.getLine(b)}function h(a,b,c){return c?g(a)!=g(a+b):!g(a)&&g(a+b)}var i,j,k=b.line,l=a.firstLine(),m=a.lastLine(),n=k;if(e){for(;n>=l&&m>=n&&c>0;)h(n,e)&&c--,n+=e;return new d(n,0)}var o=a.state.vim;if(o.visualLine&&h(k,1,!0)){var p=o.sel.anchor;h(p.line,-1,!0)&&(f&&p.line==k||(k+=1))}var q=g(k);for(n=k;m>=n&&c;n++)h(n,1,!0)&&(f&&g(n)==q||c--);for(j=new d(n,0),n>m&&!q?q=!0:f=!1,n=k;n>l&&(f&&g(n)!=q&&n!=k||!h(n,-1,!0));n--);return i=new d(n,0),{start:i,end:j}}function xa(a,b,c,e){var f,g,h=b,i={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/}[c],j={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{"}[c],k=a.getLine(h.line).charAt(h.ch),l=k===j?1:0;if(f=a.scanForBracket(d(h.line,h.ch+l),-1,null,{bracketRegex:i}),g=a.scanForBracket(d(h.line,h.ch+l),1,null,{bracketRegex:i}),!f||!g)return{start:h,end:h};if(f=f.pos,g=g.pos,f.line==g.line&&f.ch>g.ch||f.line>g.line){var m=f;f=g,g=m}return e?g.ch+=1:f.ch+=1,{start:f,end:g}}function ya(a,b,c,e){var f,g,h,i,j=R(b),k=a.getLine(j.line),l=k.split(""),m=l.indexOf(c);if(j.ch-1&&!f;h--)l[h]==c&&(f=h+1);else f=j.ch+1;if(f&&!g)for(h=f,i=l.length;i>h&&!g;h++)l[h]==c&&(g=h);return f&&g?(e&&(--f,++g),{start:d(j.line,f),end:d(j.line,g)}):{start:j,end:j}}function za(){}function Aa(a){var b=a.state.vim;return b.searchState_||(b.searchState_=new za)}function Ba(a,b,c,d,e){a.openDialog?a.openDialog(b,d,{bottom:!0,value:e.value,onKeyDown:e.onKeyDown,onKeyUp:e.onKeyUp,selectValueOnOpen:!1}):d(prompt(c,""))}function Ca(a){var b=Da(a)||[];if(!b.length)return[];var c=[];if(0===b[0]){for(var d=0;d'+b+"
    ",{bottom:!0,duration:5e3}):alert(b)}function Ja(a,b){var c="";return a&&(c+=''+a+""),c+=' ',b&&(c+='',c+=b,c+=""),c}function Ka(a,b){var c=(b.prefix||"")+" "+(b.desc||""),d=Ja(b.prefix,b.desc);Ba(a,d,c,b.onClose,b)}function La(a,b){if(a instanceof RegExp&&b instanceof RegExp){for(var c=["global","multiline","ignoreCase","source"],d=0;dh;h++){var i=g.find(b);if(0==h&&i&&S(g.from(),f)&&(i=g.find(b)),!i&&(g=a.getSearchCursor(c,b?d(a.lastLine()):d(a.firstLine(),0)),!g.find(b)))return}return g.from()})}function Qa(a){var b=Aa(a);a.removeOverlay(Aa(a).getOverlay()),b.setOverlay(null),b.getScrollbarAnnotate()&&(b.getScrollbarAnnotate().clear(),b.setScrollbarAnnotate(null))}function Ra(a,b,c){return"number"!=typeof a&&(a=a.line),b instanceof Array?s(a,b):c?a>=b&&c>=a:a==b}function Sa(a){var b=a.getScrollInfo(),c=6,d=10,e=a.coordsChar({left:0,top:c+b.top},"local"),f=b.clientHeight-d+b.top,g=a.coordsChar({left:0,top:f},"local");return{top:e.line,bottom:g.line}}function Ta(b,c,d,e,f,g,h,i,j){function k(){b.operation(function(){for(;!p;)l(),m();n()})}function l(){var a=b.getRange(g.from(),g.to()),c=a.replace(h,i);g.replace(c)}function m(){for(;g.findNext()&&Ra(g.from(),e,f);)if(d||!q||g.from().line!=q.line)return b.scrollIntoView(g.from(),30),b.setSelection(g.from(),g.to()),q=g.from(),void(p=!1);p=!0}function n(a){if(a&&a(),b.focus(),q){b.setCursor(q);var c=b.state.vim;c.exMode=!1,c.lastHPos=c.lastHSPos=q.ch}j&&j()}function o(c,d,e){a.e_stop(c);var f=a.keyName(c);switch(f){case"Y":l(),m();break;case"N":m();break;case"A":var g=j;j=void 0,b.operation(k),j=g;break;case"L":l();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":n(e)}return p&&n(e),!0}b.state.vim.exMode=!0;var p=!1,q=g.from();return m(),p?void Ia(b,"No matches for "+h.source):c?void Ka(b,{prefix:"replace with "+i+" (y/n/a/q/l)",onKeyDown:o}):(k(),void(j&&j()))}function Ua(b){var c=b.state.vim,d=ub.macroModeState,e=ub.registerController.getRegister("."),f=d.isPlaying,g=d.lastInsertModeChanges,h=[];if(!f){for(var i=g.inVisualBlock?c.lastSelection.visualBlock.height:1,j=g.changes,h=[],k=0;k1&&(fb(b,c,c.insertModeRepeat-1,!0),c.lastEditInputState.repeatOverride=c.insertModeRepeat),delete c.insertModeRepeat,c.insertMode=!1,b.setCursor(b.getCursor().line,b.getCursor().ch-1),b.setOption("keyMap","vim"),b.setOption("disableInput",!0),b.toggleOverwrite(!1),e.setText(g.changes.join("")),a.signal(b,"vim-mode-change",{mode:"normal"}),d.isRecording&&Za(d)}function Va(a){b.unshift(a)}function Wa(a,b,c,d,e){var f={keys:a,type:b};f[b]=c,f[b+"Args"]=d;for(var g in e)f[g]=e[g];Va(f)}function Xa(b,c,d,e){var f=ub.registerController.getRegister(e);if(":"==e)return f.keyBuffer[0]&&Ib.processCommand(b,f.keyBuffer[0]),void(d.isPlaying=!1);var g=f.keyBuffer,h=0;d.isPlaying=!0,d.replaySearchQueries=f.searchQueries.slice(0);for(var i=0;i|<\w+>|./.exec(l),k=j[0],l=l.substring(j.index+k.length),a.Vim.handleKey(b,k,"macro"),c.insertMode){var m=f.insertModeChanges[h++].changes;ub.macroModeState.lastInsertModeChanges.changes=m,gb(b,m,1),Ua(b)}d.isPlaying=!1}function Ya(a,b){if(!a.isPlaying){var c=a.latestRegister,d=ub.registerController.getRegister(c);d&&d.pushText(b)}}function Za(a){if(!a.isPlaying){var b=a.latestRegister,c=ub.registerController.getRegister(b);c&&c.pushInsertModeChanges&&c.pushInsertModeChanges(a.lastInsertModeChanges)}}function $a(a,b){if(!a.isPlaying){var c=a.latestRegister,d=ub.registerController.getRegister(c);d&&d.pushSearchQuery&&d.pushSearchQuery(b)}}function _a(a,b){var c=ub.macroModeState,d=c.lastInsertModeChanges;if(!c.isPlaying)for(;b;){if(d.expectCursorActivityForChange=!0,"+input"==b.origin||"paste"==b.origin||void 0===b.origin){var e=b.text.join("\n");d.changes.push(e)}b=b.next}}function ab(a){var b=a.state.vim;if(b.insertMode){ -var c=ub.macroModeState;if(c.isPlaying)return;var d=c.lastInsertModeChanges;d.expectCursorActivityForChange?d.expectCursorActivityForChange=!1:d.changes=[]}else a.curOp.isVimOp||cb(a,b);b.visualMode&&bb(a)}function bb(a){var b=a.state.vim,c=J(a,R(b.sel.head)),d=L(c,0,1);b.fakeCursor&&b.fakeCursor.clear(),b.fakeCursor=a.markText(c,d,{className:"cm-animate-fat-cursor"})}function cb(b,c){var d=b.getCursor("anchor"),e=b.getCursor("head");if(c.visualMode&&!b.somethingSelected()?ia(b,!1):c.visualMode||c.insertMode||!b.somethingSelected()||(c.visualMode=!0,c.visualLine=!1,a.signal(b,"vim-mode-change",{mode:"visual"})),c.visualMode){var f=T(e,d)?0:-1,g=T(e,d)?-1:0;e=L(e,0,f),d=L(d,0,g),c.sel={anchor:d,head:e},ua(b,c,"<",U(e,d)),ua(b,c,">",V(e,d))}else c.insertMode||(c.lastHPos=b.getCursor().ch)}function db(a){this.keyName=a}function eb(b){function c(){return e.changes.push(new db(f)),!0}var d=ub.macroModeState,e=d.lastInsertModeChanges,f=a.keyName(b);f&&(-1!=f.indexOf("Delete")||-1!=f.indexOf("Backspace"))&&a.lookupKey(f,"vim-insert",c)}function fb(a,b,c,d){function e(){h?xb.processAction(a,b,b.lastEditActionCommand):xb.evalInput(a,b)}function f(c){if(g.lastInsertModeChanges.changes.length>0){c=b.lastEditActionCommand?c:1;var d=g.lastInsertModeChanges;gb(a,d.changes,c)}}var g=ub.macroModeState;g.isPlaying=!0;var h=!!b.lastEditActionCommand,i=b.inputState;if(b.inputState=b.lastEditInputState,h&&b.lastEditActionCommand.interlaceInsertRepeat)for(var j=0;c>j;j++)e(),f(1);else d||e(),f(c);b.inputState=i,b.insertMode&&!d&&Ua(a),g.isPlaying=!1}function gb(b,c,d){function e(c){return"string"==typeof c?a.commands[c](b):c(b),!0}var f=b.getCursor("head"),g=ub.macroModeState.lastInsertModeChanges.inVisualBlock;if(g){var h=b.state.vim,i=h.lastSelection,j=M(i.anchor,i.head);aa(b,f,j.line+1),d=b.listSelections().length,b.setCursor(f)}for(var k=0;d>k;k++){g&&b.setCursor(L(f,k,0));for(var l=0;l"]),qb=[].concat(mb,nb,ob,["-",'"',".",":","/"]),rb={};t("filetype",void 0,"string",["ft"],function(a,b){if(void 0!==b){if(void 0===a){var c=b.getOption("mode");return"null"==c?"":c}var c=""==a?"null":a;b.setOption("mode",c)}});var sb=function(){function a(a,b,h){function i(b){var e=++d%c,f=g[e];f&&f.clear(),g[e]=a.setBookmark(b)}var j=d%c,k=g[j];if(k){var l=k.find();l&&!S(l,b)&&i(b)}else i(b);i(h),e=d,f=d-c+1,0>f&&(f=0)}function b(a,b){d+=b,d>e?d=e:f>d&&(d=f);var h=g[(c+d)%c];if(h&&!h.find()){var i,j=b>0?1:-1,k=a.getCursor();do if(d+=j,h=g[(c+d)%c],h&&(i=h.find())&&!S(k,i))break;while(e>d&&d>f)}return h}var c=100,d=-1,e=0,f=0,g=new Array(c);return{cachedCursor:void 0,add:a,move:b}},tb=function(a){return a?{changes:a.changes,expectCursorActivityForChange:a.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};w.prototype={exitMacroRecordMode:function(){var a=ub.macroModeState;a.onRecordingDone&&a.onRecordingDone(),a.onRecordingDone=void 0,a.isRecording=!1},enterMacroRecordMode:function(a,b){var c=ub.registerController.getRegister(b);c&&(c.clear(),this.latestRegister=b,a.openDialog&&(this.onRecordingDone=a.openDialog("(recording)["+b+"]",null,{bottom:!0})),this.isRecording=!0)}};var ub,vb,wb={buildKeyMap:function(){},getRegisterController:function(){return ub.registerController},resetVimGlobalState_:y,getVimGlobalState_:function(){return ub},maybeInitVimState_:x,suppressErrorLogging:!1,InsertModeKey:db,map:function(a,b,c){Ib.map(a,b,c)},unmap:function(a,b){Ib.unmap(a,b)},setOption:u,getOption:v,defineOption:t,defineEx:function(a,b,c){if(b){if(0!==a.indexOf(b))throw new Error('(Vim.defineEx) "'+b+'" is not a prefix of "'+a+'", command not registered')}else b=a;Hb[a]=c,Ib.commandMap_[b]={name:a,shortName:b,type:"api"}},handleKey:function(a,b,c){var d=this.findKey(a,b,c);return"function"==typeof d?d():void 0},findKey:function(c,d,e){function f(){var a=ub.macroModeState;if(a.isRecording){if("q"==d)return a.exitMacroRecordMode(),A(c),!0;"mapping"!=e&&Ya(a,d)}}function g(){return""==d?(A(c),l.visualMode?ia(c):l.insertMode&&Ua(c),!0):void 0}function h(b){for(var e;b;)e=/<\w+-.+?>|<\w+>|./.exec(b),d=e[0],b=b.substring(e.index+d.length),a.Vim.handleKey(c,d,"mapping")}function i(){if(g())return!0;for(var a=l.inputState.keyBuffer=l.inputState.keyBuffer+d,e=1==d.length,f=xb.matchCommand(a,b,l.inputState,"insert");a.length>1&&"full"!=f.type;){var a=l.inputState.keyBuffer=a.slice(1),h=xb.matchCommand(a,b,l.inputState,"insert");"none"!=h.type&&(f=h)}if("none"==f.type)return A(c),!1;if("partial"==f.type)return vb&&window.clearTimeout(vb),vb=window.setTimeout(function(){l.insertMode&&l.inputState.keyBuffer&&A(c)},v("insertModeEscKeysTimeout")),!e;if(vb&&window.clearTimeout(vb),e){var i=c.getCursor();c.replaceRange("",L(i,0,-(a.length-1)),i,"+input")}return A(c),f.command}function j(){if(f()||g())return!0;var a=l.inputState.keyBuffer=l.inputState.keyBuffer+d;if(/^[1-9]\d*$/.test(a))return!0;var e=/^(\d*)(.*)$/.exec(a);if(!e)return A(c),!1;var h=l.visualMode?"visual":"normal",i=xb.matchCommand(e[2]||e[1],b,l.inputState,h);if("none"==i.type)return A(c),!1;if("partial"==i.type)return!0;l.inputState.keyBuffer="";var e=/^(\d*)(.*)$/.exec(a);return e[1]&&"0"!=e[1]&&l.inputState.pushRepeatDigit(e[1]),i.command}var k,l=x(c);return k=l.insertMode?i():j(),k===!1?void 0:k===!0?function(){}:function(){return c.operation(function(){c.curOp.isVimOp=!0;try{"keyToKey"==k.type?h(k.toKeys):xb.processCommand(c,l,k)}catch(b){throw c.state.vim=void 0,x(c),a.Vim.suppressErrorLogging||console.log(b),b}return!0})}},handleEx:function(a,b){Ib.processCommand(a,b)},defineMotion:F,defineAction:I,defineOperator:H,mapCommand:Wa,_mapCommand:Va,defineRegister:C,exitVisualMode:ia,exitInsertMode:Ua};z.prototype.pushRepeatDigit=function(a){this.operator?this.motionRepeat=this.motionRepeat.concat(a):this.prefixRepeat=this.prefixRepeat.concat(a)},z.prototype.getRepeat=function(){var a=0;return(this.prefixRepeat.length>0||this.motionRepeat.length>0)&&(a=1,this.prefixRepeat.length>0&&(a*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(a*=parseInt(this.motionRepeat.join(""),10))),a},B.prototype={setText:function(a,b,c){this.keyBuffer=[a||""],this.linewise=!!b,this.blockwise=!!c},pushText:function(a,b){b&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(a)},pushInsertModeChanges:function(a){this.insertModeChanges.push(tb(a))},pushSearchQuery:function(a){this.searchQueries.push(a)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},D.prototype={pushText:function(a,b,c,d,e){d&&"\n"==c.charAt(0)&&(c=c.slice(1)+"\n"),d&&"\n"!==c.charAt(c.length-1)&&(c+="\n");var f=this.isValidRegister(a)?this.getRegister(a):null;if(!f){switch(b){case"yank":this.registers[0]=new B(c,d,e);break;case"delete":case"change":-1==c.indexOf("\n")?this.registers["-"]=new B(c,d):(this.shiftNumericRegisters_(),this.registers[1]=new B(c,d))}return void this.unnamedRegister.setText(c,d,e)}var g=q(a);g?f.pushText(c,d):f.setText(c,d,e),this.unnamedRegister.setText(f.toString(),d)},getRegister:function(a){return this.isValidRegister(a)?(a=a.toLowerCase(),this.registers[a]||(this.registers[a]=new B),this.registers[a]):this.unnamedRegister},isValidRegister:function(a){return a&&s(a,qb)},shiftNumericRegisters_:function(){for(var a=9;a>=2;a--)this.registers[a]=this.getRegister(""+(a-1))}},E.prototype={nextMatch:function(a,b){var c=this.historyBuffer,d=b?-1:1;null===this.initialPrefix&&(this.initialPrefix=a);for(var e=this.iterator+d;b?e>=0:e=c.length?(this.iterator=c.length,this.initialPrefix):0>e?a:void 0},pushInput:function(a){var b=this.historyBuffer.indexOf(a);b>-1&&this.historyBuffer.splice(b,1),a.length&&this.historyBuffer.push(a)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var xb={matchCommand:function(a,b,c,d){var e=N(a,b,d,c);if(!e.full&&!e.partial)return{type:"none"};if(!e.full&&e.partial)return{type:"partial"};for(var f,g=0;g"==f.keys.slice(-11)&&(c.selectedCharacter=P(a)),{type:"full",command:f}},processCommand:function(a,b,c){switch(b.inputState.repeatOverride=c.repeatOverride,c.type){case"motion":this.processMotion(a,b,c);break;case"operator":this.processOperator(a,b,c);break;case"operatorMotion":this.processOperatorMotion(a,b,c);break;case"action":this.processAction(a,b,c);break;case"search":this.processSearch(a,b,c);break;case"ex":case"keyToEx":this.processEx(a,b,c)}},processMotion:function(a,b,c){b.inputState.motion=c.motion,b.inputState.motionArgs=K(c.motionArgs),this.evalInput(a,b)},processOperator:function(a,b,c){var d=b.inputState;if(d.operator){if(d.operator==c.operator)return d.motion="expandToLine",d.motionArgs={linewise:!0},void this.evalInput(a,b);A(a)}d.operator=c.operator,d.operatorArgs=K(c.operatorArgs),b.visualMode&&this.evalInput(a,b)},processOperatorMotion:function(a,b,c){var d=b.visualMode,e=K(c.operatorMotionArgs);e&&d&&e.visualLine&&(b.visualLine=!0),this.processOperator(a,b,c),d||this.processMotion(a,b,c)},processAction:function(a,b,c){var d=b.inputState,e=d.getRepeat(),f=!!e,g=K(c.actionArgs)||{};d.selectedCharacter&&(g.selectedCharacter=d.selectedCharacter),c.operator&&this.processOperator(a,b,c),c.motion&&this.processMotion(a,b,c),(c.motion||c.operator)&&this.evalInput(a,b),g.repeat=e||1,g.repeatIsExplicit=f,g.registerName=d.registerName,A(a),b.lastMotion=null,c.isEdit&&this.recordLastEdit(b,d,c),Ab[c.action](a,g,b)},processSearch:function(b,c,d){function e(a,e,f){ub.searchHistoryController.pushInput(a),ub.searchHistoryController.reset();try{Ma(b,a,e,f)}catch(g){return Ia(b,"Invalid regex: "+a),void A(b)}xb.processMotion(b,c,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:d.searchArgs.toJumplist}})}function f(a){b.scrollTo(m.left,m.top),e(a,!0,!0);var c=ub.macroModeState;c.isRecording&&$a(c,a)}function g(c,d,e){var f,g=a.keyName(c);"Up"==g||"Down"==g?(f="Up"==g?!0:!1,d=ub.searchHistoryController.nextMatch(d,f)||"",e(d)):"Left"!=g&&"Right"!=g&&"Ctrl"!=g&&"Alt"!=g&&"Shift"!=g&&ub.searchHistoryController.reset();var h;try{h=Ma(b,d,!0,!0)}catch(c){}h?b.scrollIntoView(Pa(b,!i,h),30):(Qa(b),b.scrollTo(m.left,m.top))}function h(c,d,e){var f=a.keyName(c);"Esc"==f||"Ctrl-C"==f||"Ctrl-["==f||"Backspace"==f&&""==d?(ub.searchHistoryController.pushInput(d),ub.searchHistoryController.reset(),Ma(b,l),Qa(b),b.scrollTo(m.left,m.top),a.e_stop(c),A(b),e(),b.focus()):"Ctrl-U"==f&&(a.e_stop(c),e(""))}if(b.getSearchCursor){var i=d.searchArgs.forward,j=d.searchArgs.wholeWordOnly;Aa(b).setReversed(!i);var k=i?"/":"?",l=Aa(b).getQuery(),m=b.getScrollInfo();switch(d.searchArgs.querySrc){case"prompt":var n=ub.macroModeState;if(n.isPlaying){var o=n.replaySearchQueries.shift();e(o,!0,!1)}else Ka(b,{onClose:f,prefix:k,desc:Fb,onKeyUp:g,onKeyDown:h});break;case"wordUnderCursor":var p=ma(b,!1,!0,!1,!0),q=!0;if(p||(p=ma(b,!1,!0,!1,!1),q=!1),!p)return;var o=b.getLine(p.start.line).substring(p.start.ch,p.end.ch);o=q&&j?"\\b"+o+"\\b":Z(o),ub.jumpList.cachedCursor=b.getCursor(),b.setCursor(p.start),e(o,!0,!1)}}},processEx:function(b,c,d){function e(a){ub.exCommandHistoryController.pushInput(a),ub.exCommandHistoryController.reset(),Ib.processCommand(b,a)}function f(c,d,e){var f,g=a.keyName(c);("Esc"==g||"Ctrl-C"==g||"Ctrl-["==g||"Backspace"==g&&""==d)&&(ub.exCommandHistoryController.pushInput(d),ub.exCommandHistoryController.reset(),a.e_stop(c),A(b),e(),b.focus()),"Up"==g||"Down"==g?(f="Up"==g?!0:!1,d=ub.exCommandHistoryController.nextMatch(d,f)||"",e(d)):"Ctrl-U"==g?(a.e_stop(c),e("")):"Left"!=g&&"Right"!=g&&"Ctrl"!=g&&"Alt"!=g&&"Shift"!=g&&ub.exCommandHistoryController.reset()}"keyToEx"==d.type?Ib.processCommand(b,d.exArgs.input):c.visualMode?Ka(b,{onClose:e,prefix:":",value:"'<,'>",onKeyDown:f}):Ka(b,{onClose:e,prefix:":",onKeyDown:f})},evalInput:function(a,b){var c,e,f,g=b.inputState,h=g.motion,i=g.motionArgs||{},j=g.operator,k=g.operatorArgs||{},l=g.registerName,m=b.sel,n=R(b.visualMode?J(a,m.head):a.getCursor("head")),o=R(b.visualMode?J(a,m.anchor):a.getCursor("anchor")),p=R(n),q=R(o);if(j&&this.recordLastEdit(b,g),f=void 0!==g.repeatOverride?g.repeatOverride:g.getRepeat(),f>0&&i.explicitRepeat?i.repeatIsExplicit=!0:(i.noRepeat||!i.explicitRepeat&&0===f)&&(f=1,i.repeatIsExplicit=!1),g.selectedCharacter&&(i.selectedCharacter=k.selectedCharacter=g.selectedCharacter),i.repeat=f,A(a),h){var r=yb[h](a,n,i,b);if(b.lastMotion=yb[h],!r)return;if(i.toJumplist){var s=ub.jumpList,t=s.cachedCursor;t?(na(a,t,r),delete s.cachedCursor):na(a,n,r)}r instanceof Array?(e=r[0],c=r[1]):c=r,c||(c=R(n)),b.visualMode?(b.visualBlock&&c.ch===1/0||(c=J(a,c,b.visualBlock)),e&&(e=J(a,e,!0)),e=e||q,m.anchor=e,m.head=c,fa(a),ua(a,b,"<",T(e,c)?e:c),ua(a,b,">",T(e,c)?c:e)):j||(c=J(a,c),a.setCursor(c.line,c.ch))}if(j){if(k.lastSel){e=q;var u=k.lastSel,v=Math.abs(u.head.line-u.anchor.line),w=Math.abs(u.head.ch-u.anchor.ch);c=u.visualLine?d(q.line+v,q.ch):u.visualBlock?d(q.line+v,q.ch+w):u.head.line==u.anchor.line?d(q.line,q.ch+w):d(q.line+v,q.ch),b.visualMode=!0,b.visualLine=u.visualLine,b.visualBlock=u.visualBlock,m=b.sel={anchor:e,head:c},fa(a)}else b.visualMode&&(k.lastSel={anchor:R(m.anchor),head:R(m.head),visualBlock:b.visualBlock,visualLine:b.visualLine});var x,y,z,B,C;if(b.visualMode){if(x=U(m.head,m.anchor),y=V(m.head,m.anchor),z=b.visualLine||k.linewise,B=b.visualBlock?"block":z?"line":"char",C=ga(a,{anchor:x,head:y},B),z){var D=C.ranges;if("block"==B)for(var E=0;Ei&&f.line==j||i>k&&f.line==k?void 0:(c.toFirstChar&&(g=la(a.getLine(i)),e.lastHPos=g),e.lastHSPos=a.charCoords(d(i,g),"div").left,d(i,g))},moveByDisplayLines:function(a,b,c,e){var f=b;switch(e.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:e.lastHSPos=a.charCoords(f,"div").left}var g=c.repeat,h=a.findPosV(f,c.forward?g:-g,"line",e.lastHSPos);if(h.hitSide)if(c.forward)var i=a.charCoords(h,"div"),j={top:i.top+8,left:e.lastHSPos},h=a.coordsChar(j,"div");else{var k=a.charCoords(d(a.firstLine(),0),"div");k.left=e.lastHSPos,h=a.coordsChar(k,"div")}return e.lastHPos=h.ch,h},moveByPage:function(a,b,c){var d=b,e=c.repeat;return a.findPosV(d,c.forward?e:-e,"page")},moveByParagraph:function(a,b,c){var d=c.forward?1:-1;return wa(a,b,c.repeat,d)},moveByScroll:function(a,b,c,d){var e=a.getScrollInfo(),f=null,g=c.repeat;g||(g=e.clientHeight/(2*a.defaultTextHeight()));var h=a.charCoords(b,"local");c.repeat=g;var f=yb.moveByDisplayLines(a,b,c,d);if(!f)return null;var i=a.charCoords(f,"local");return a.scrollTo(null,e.top+i.top-h.top),f},moveByWords:function(a,b,c){return ra(a,b,c.repeat,!!c.forward,!!c.wordEnd,!!c.bigWord)},moveTillCharacter:function(a,b,c){var d=c.repeat,e=sa(a,d,c.forward,c.selectedCharacter),f=c.forward?-1:1;return oa(f,c),e?(e.ch+=f,e):null},moveToCharacter:function(a,b,c){var d=c.repeat;return oa(0,c),sa(a,d,c.forward,c.selectedCharacter)||b},moveToSymbol:function(a,b,c){var d=c.repeat;return pa(a,d,c.forward,c.selectedCharacter)||b},moveToColumn:function(a,b,c,d){var e=c.repeat;return d.lastHPos=e-1,d.lastHSPos=a.charCoords(b,"div").left,ta(a,e)},moveToEol:function(a,b,c,e){var f=b;e.lastHPos=1/0;var g=d(f.line+c.repeat-1,1/0),h=a.clipPos(g);return h.ch--,e.lastHSPos=a.charCoords(h,"div").left,g},moveToFirstNonWhiteSpaceCharacter:function(a,b){var c=b;return d(c.line,la(a.getLine(c.line)))},moveToMatchedSymbol:function(a,b){var c,e=b,f=e.line,g=e.ch,h=a.getLine(f);do if(c=h.charAt(g++),c&&o(c)){var i=a.getTokenTypeAt(d(f,g));if("string"!==i&&"comment"!==i)break}while(c);if(c){var j=a.findMatchingBracket(d(f,g));return j.to}return e},moveToStartOfLine:function(a,b){return d(b.line,0)},moveToLineOrEdgeOfDocument:function(a,b,c){var e=c.forward?a.lastLine():a.firstLine();return c.repeatIsExplicit&&(e=c.repeat-a.getOption("firstLineNumber")),d(e,la(a.getLine(e)))},textObjectManipulation:function(a,b,c,d){var e={"(":")",")":"(","{":"}","}":"{","[":"]","]":"["},f={"'":!0,'"':!0},g=c.selectedCharacter;"b"==g?g="(":"B"==g&&(g="{");var h,i=!c.textObjectInner;if(e[g])h=xa(a,b,g,i);else if(f[g])h=ya(a,b,g,i);else if("W"===g)h=ma(a,i,!0,!0);else if("w"===g)h=ma(a,i,!0,!1);else{if("p"!==g)return null;if(h=wa(a,b,c.repeat,0,i),c.linewise=!0,d.visualMode)d.visualLine||(d.visualLine=!0);else{var j=d.inputState.operatorArgs;j&&(j.linewise=!0),h.end.line--}}return a.state.vim.visualMode?ea(a,h.start,h.end):[h.start,h.end]},repeatLastCharacterSearch:function(a,b,c){var d=ub.lastChararacterSearch,e=c.repeat,f=c.forward===d.forward,g=(d.increment?1:0)*(f?-1:1);a.moveH(-g,"char"),c.inclusive=f?!0:!1;var h=sa(a,e,f,d.selectedCharacter);return h?(h.ch+=g,h):(a.moveH(g,"char"),b)}},zb={change:function(b,c,e){var f,g,h=b.state.vim;if(ub.macroModeState.lastInsertModeChanges.inVisualBlock=h.visualBlock,h.visualMode){g=b.getSelection();var i=G("",e.length);b.replaceSelections(i),f=U(e[0].head,e[0].anchor)}else{var j=e[0].anchor,k=e[0].head;g=b.getRange(j,k);var l=h.lastEditInputState||{};if("moveByWords"==l.motion&&!r(g)){var m=/\s+$/.exec(g);m&&l.motionArgs&&l.motionArgs.forward&&(k=L(k,0,-m[0].length),g=g.slice(0,-m[0].length))}var n=new d(j.line-1,Number.MAX_VALUE),o=b.firstLine()==b.lastLine();k.line>b.lastLine()&&c.linewise&&!o?b.replaceRange("",n,k):b.replaceRange("",j,k),c.linewise&&(o||(b.setCursor(n),a.commands.newlineAndIndent(b)),j.ch=Number.MAX_VALUE),f=j}ub.registerController.pushText(c.registerName,"change",g,c.linewise,e.length>1),Ab.enterInsertMode(b,{head:f},b.state.vim)},"delete":function(a,b,c){var e,f,g=a.state.vim;if(g.visualBlock){f=a.getSelection();var h=G("",c.length);a.replaceSelections(h),e=c[0].anchor}else{var i=c[0].anchor,j=c[0].head;b.linewise&&j.line!=a.firstLine()&&i.line==a.lastLine()&&i.line==j.line-1&&(i.line==a.firstLine()?i.ch=0:i=d(i.line-1,X(a,i.line-1))),f=a.getRange(i,j),a.replaceRange("",i,j),e=i,b.linewise&&(e=yb.moveToFirstNonWhiteSpaceCharacter(a,i))}return ub.registerController.pushText(b.registerName,"delete",f,b.linewise,g.visualBlock),J(a,e)},indent:function(a,b,c){var d=a.state.vim,e=c[0].anchor.line,f=d.visualBlock?c[c.length-1].anchor.line:c[0].head.line,g=d.visualMode?b.repeat:1;b.linewise&&f--;for(var h=e;f>=h;h++)for(var i=0;g>i;i++)a.indentLine(h,b.indentRight);return yb.moveToFirstNonWhiteSpaceCharacter(a,c[0].anchor)},changeCase:function(a,b,c,d,e){for(var f=a.getSelections(),g=[],h=b.toLower,i=0;ij.top?(i.line+=(h-j.top)/e,i.line=Math.ceil(i.line),a.setCursor(i),j=a.charCoords(i,"local"),a.scrollTo(null,j.top)):a.scrollTo(null,h);else{var k=h+a.getScrollInfo().clientHeight;k=g.anchor.line?L(g.head,0,1):d(g.anchor.line,0);else if("inplace"==f&&e.visualMode)return;b.setOption("keyMap","vim-insert"),b.setOption("disableInput",!1),c&&c.replace?(b.toggleOverwrite(!0),b.setOption("keyMap","vim-replace"),a.signal(b,"vim-mode-change",{mode:"replace"})):(b.setOption("keyMap","vim-insert"),a.signal(b,"vim-mode-change",{mode:"insert"})),ub.macroModeState.isPlaying||(b.on("change",_a),a.on(b.getInputField(),"keydown",eb)),e.visualMode&&ia(b),aa(b,h,i)}},toggleVisualMode:function(b,c,e){var f,g=c.repeat,h=b.getCursor();e.visualMode?e.visualLine^c.linewise||e.visualBlock^c.blockwise?(e.visualLine=!!c.linewise,e.visualBlock=!!c.blockwise,a.signal(b,"vim-mode-change",{mode:"visual",subMode:e.visualLine?"linewise":e.visualBlock?"blockwise":""}),fa(b)):ia(b):(e.visualMode=!0,e.visualLine=!!c.linewise,e.visualBlock=!!c.blockwise,f=J(b,d(h.line,h.ch+g-1),!0),e.sel={anchor:h,head:f},a.signal(b,"vim-mode-change",{mode:"visual",subMode:e.visualLine?"linewise":e.visualBlock?"blockwise":""}),fa(b),ua(b,e,"<",U(h,f)),ua(b,e,">",V(h,f)))},reselectLastSelection:function(b,c,d){var e=d.lastSelection;if(d.visualMode&&da(b,d),e){var f=e.anchorMark.find(),g=e.headMark.find();if(!f||!g)return;d.sel={anchor:f,head:g},d.visualMode=!0,d.visualLine=e.visualLine,d.visualBlock=e.visualBlock,fa(b),ua(b,d,"<",U(f,g)),ua(b,d,">",V(f,g)),a.signal(b,"vim-mode-change",{mode:"visual",subMode:d.visualLine?"linewise":d.visualBlock?"blockwise":""})}},joinLines:function(a,b,c){var e,f;if(c.visualMode){if(e=a.getCursor("anchor"),f=a.getCursor("head"),T(f,e)){var g=f;f=e,e=g}f.ch=X(a,f.line)-1}else{var h=Math.max(b.repeat,2);e=a.getCursor(),f=J(a,d(e.line+h-1,1/0))}for(var i=0,j=e.line;jc)return"";if(a.getOption("indentWithTabs")){var d=Math.floor(c/h);return Array(d+1).join(" ")}return Array(c+1).join(" ")});g+=m?"\n":""}if(b.repeat>1)var g=Array(b.repeat+1).join(g);var o=f.linewise,p=f.blockwise;if(o)c.visualMode?g=c.visualLine?g.slice(0,-1):"\n"+g.slice(0,g.length-1)+"\n":b.after?(g="\n"+g.slice(0,g.length-1),e.ch=X(a,e.line)):e.ch=0;else{if(p){g=g.split("\n");for(var q=0;qa.lastLine()&&a.replaceRange("\n",d(A,0));var B=X(a,A);Bk.length&&(f=k.length),g=d(i.line,f)}if("\n"==h)e.visualMode||b.replaceRange("",i,g),(a.commands.newlineAndIndentContinueComment||a.commands.newlineAndIndent)(b);else{var l=b.getRange(i,g);if(l=l.replace(/[^\n]/g,h),e.visualBlock){var m=new Array(b.getOption("tabSize")+1).join(" ");l=b.getSelection(),l=l.replace(/\t/g,m).replace(/[^\n]/g,h).split("\n"),b.replaceSelections(l)}else b.replaceRange(l,i,g);e.visualMode?(i=T(j[0].anchor,j[0].head)?j[0].anchor:j[0].head,b.setCursor(i),ia(b,!1)):b.setCursor(L(g,0,-1))}},incrementNumberToken:function(a,b){for(var c,e,f,g,h,i=a.getCursor(),j=a.getLine(i.line),k=/-?\d+/g;null!==(c=k.exec(j))&&(h=c[0],e=c.index,f=e+h.length,!(i.ch=1)return!0}else a.nextCh===a.reverseSymb&&a.depth--;return!1}},section:{init:function(a){a.curMoveThrough=!0,a.symb=(a.forward?"]":"[")===a.symb?"{":"}"},isComplete:function(a){return 0===a.index&&a.nextCh===a.symb}},comment:{isComplete:function(a){var b="*"===a.lastCh&&"/"===a.nextCh;return a.lastCh=a.nextCh,b}},method:{init:function(a){a.symb="m"===a.symb?"{":"}",a.reverseSymb="{"===a.symb?"}":"{"},isComplete:function(a){return a.nextCh===a.symb?!0:!1}},preprocess:{init:function(a){a.index=0},isComplete:function(a){if("#"===a.nextCh){var b=a.lineText.match(/#(\w+)/)[1];if("endif"===b){if(a.forward&&0===a.depth)return!0;a.depth++}else if("if"===b){if(!a.forward&&0===a.depth)return!0;a.depth--}if("else"===b&&0===a.depth)return!0}return!1}}};t("pcre",!0,"boolean"),za.prototype={getQuery:function(){return ub.query},setQuery:function(a){ub.query=a},getOverlay:function(){return this.searchOverlay},setOverlay:function(a){this.searchOverlay=a},isReversed:function(){return ub.isReversed},setReversed:function(a){ub.isReversed=a},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(a){this.annotate=a}};var Db={"\\n":"\n","\\r":"\r","\\t":" "},Eb={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":" "},Fb="(Javascript regexp)",Gb=function(){this.buildCommandMap_()};Gb.prototype={processCommand:function(a,b,c){var d=this;a.operation(function(){a.curOp.isVimOp=!0,d._processCommand(a,b,c)})},_processCommand:function(b,c,d){var e=b.state.vim,f=ub.registerController.getRegister(":"),g=f.toString();e.visualMode&&ia(b);var h=new a.StringStream(c);f.setText(c);var i=d||{};i.input=c;try{this.parseInput_(b,h,i)}catch(j){throw Ia(b,j),j}var k,l;if(i.commandName){if(k=this.matchCommand_(i.commandName)){if(l=k.name,k.excludeFromCommandHistory&&f.setText(g),this.parseCommandArgs_(h,i,k),"exToKey"==k.type){for(var m=0;m0;b--){var c=a.substring(0,b);if(this.commandMap_[c]){var d=this.commandMap_[c];if(0===d.name.indexOf(a))return d}}return null},buildCommandMap_:function(){this.commandMap_={};for(var a=0;a
    ";if(c){var f;c=c.join("");for(var g=0;g"}}else for(var f in d){var i=d[f].toString();i.length&&(e+='"'+f+" "+i+"
    ")}Ia(a,e)},sort:function(b,c){function e(){if(c.argString){var b=new a.StringStream(c.argString);if(b.eat("!")&&(g=!0),b.eol())return;if(!b.eatSpace())return"Invalid arguments";var d=b.match(/[a-z]+/);if(d){d=d[0],h=-1!=d.indexOf("i"),i=-1!=d.indexOf("u");var e=-1!=d.indexOf("d")&&1,f=-1!=d.indexOf("x")&&1,k=-1!=d.indexOf("o")&&1;if(e+f+k>1)return"Invalid arguments";j=e&&"decimal"||f&&"hex"||k&&"octal"}if(b.match(/\/.*\//))return"patterns not supported"}}function f(a,b){if(g){var c;c=a,a=b,b=c}h&&(a=a.toLowerCase(),b=b.toLowerCase());var d=j&&q.exec(a),e=j&&q.exec(b);return d?(d=parseInt((d[1]+d[2]).toLowerCase(),r),e=parseInt((e[1]+e[2]).toLowerCase(),r),d-e):b>a?-1:1}var g,h,i,j,k=e();if(k)return void Ia(b,k+": "+c.argString);var l=c.line||b.firstLine(),m=c.lineEnd||c.line||b.lastLine();if(l!=m){var n=d(l,0),o=d(m,X(b,m)),p=b.getRange(n,o).split("\n"),q="decimal"==j?/(-?)([\d]+)/:"hex"==j?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==j?/([0-7]+)/:null,r="decimal"==j?10:"hex"==j?16:"octal"==j?8:null,s=[],t=[];if(j)for(var u=0;u=m;m++){var n=j.test(a.getLine(m));n&&(k.push(m+1),l+=a.getLine(m)+"
    ")}if(!d)return void Ia(a,l);var o=0,p=function(){if(o=k)return void Ia(b,"Invalid argument: "+c.argString.substring(f));for(var l=0;k-j>=l;l++){var m=String.fromCharCode(j+l);delete d.marks[m]}}else delete d.marks[g]}}},Ib=new Gb;return a.keyMap.vim={attach:h,detach:g,call:i},t("insertModeEscKeysTimeout",200,"number"),a.keyMap["vim-insert"]={"Ctrl-N":"autocomplete","Ctrl-P":"autocomplete",Enter:function(b){var c=a.commands.newlineAndIndentContinueComment||a.commands.newlineAndIndent;c(b)},fallthrough:["default"],attach:h,detach:g,call:i},a.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:h,detach:g,call:i},y(),wb};a.Vim=e()}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(a){var b=a.getWrapperElement();a.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:b.style.width,height:b.style.height},b.style.width="",b.style.height="auto",b.className+=" CodeMirror-fullscreen",document.documentElement.style.overflow="hidden",a.refresh()}function c(a){var b=a.getWrapperElement();b.className=b.className.replace(/\s*CodeMirror-fullscreen\b/,""),document.documentElement.style.overflow="";var c=a.state.fullScreenRestore;b.style.width=c.width,b.style.height=c.height,window.scrollTo(c.scrollLeft,c.scrollTop),a.refresh()}a.defineOption("fullScreen",!1,function(d,e,f){f==a.Init&&(f=!1),!f!=!e&&(e?b(d):c(d))})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function b(a,b,c,d){this.cm=a,this.node=b,this.options=c,this.height=d,this.cleared=!1}function c(a){var b=a.getWrapperElement(),c=window.getComputedStyle?window.getComputedStyle(b):b.currentStyle,d=parseInt(c.height),e=a.state.panels={setHeight:b.style.height,heightLeft:d,panels:0,wrapper:document.createElement("div")};b.parentNode.insertBefore(e.wrapper,b);var f=a.hasFocus();e.wrapper.appendChild(b),f&&a.focus(),a._setSize=a.setSize,null!=d&&(a.setSize=function(b,c){if(null==c)return this._setSize(b,c);if(e.setHeight=c,"number"!=typeof c){var f=/^(\d+\.?\d*)px$/.exec(c);f?c=Number(f[1]):(e.wrapper.style.height=c,c=e.wrapper.offsetHeight,e.wrapper.style.height="")}a._setSize(b,e.heightLeft+=c-d),d=c})}function d(a){var b=a.state.panels;a.state.panels=null;var c=a.getWrapperElement();b.wrapper.parentNode.replaceChild(c,b.wrapper),c.style.height=b.setHeight,a.setSize=a._setSize,a.setSize()}a.defineExtension("addPanel",function(a,d){d=d||{},this.state.panels||c(this);var e=this.state.panels,f=e.wrapper,g=this.getWrapperElement();d.after instanceof b&&!d.after.cleared?f.insertBefore(a,d.before.node.nextSibling):d.before instanceof b&&!d.before.cleared?f.insertBefore(a,d.before.node):d.replace instanceof b&&!d.replace.cleared?(f.insertBefore(a,d.replace.node),d.replace.clear()):"bottom"==d.position?f.appendChild(a):"before-bottom"==d.position?f.insertBefore(a,g.nextSibling):"after-top"==d.position?f.insertBefore(a,g):f.insertBefore(a,f.firstChild);var h=d&&d.height||a.offsetHeight;return this._setSize(null,e.heightLeft-=h),e.panels++,new b(this,a,d,h)}),b.prototype.clear=function(){if(!this.cleared){this.cleared=!0;var a=this.cm.state.panels;this.cm._setSize(null,a.heightLeft+=this.height),a.wrapper.removeChild(this.node),0==--a.panels&&d(this.cm)}},b.prototype.changed=function(a){var b=null==a?this.node.offsetHeight:a,c=this.cm.state.panels;this.cm._setSize(null,c.height+=b-this.height),this.height=b}}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function b(a,b){return"pairs"==b&&"string"==typeof a?a:"object"==typeof a&&null!=a[b]?a[b]:l[b]}function c(a){return function(b){return h(b,a)}}function d(a){var b=a.state.closeBrackets;if(!b)return null;var c=a.getModeAt(a.getCursor());return c.closeBrackets||b}function e(c){var e=d(c);if(!e||c.getOption("disableInput"))return a.Pass;for(var f=b(e,"pairs"),g=c.listSelections(),h=0;h=0;h--){var k=g[h].head;c.replaceRange("",m(k.line,k.ch-1),m(k.line,k.ch+1),"+delete")}}function f(c){var e=d(c),f=e&&b(e,"explode");if(!f||c.getOption("disableInput"))return a.Pass;for(var g=c.listSelections(),h=0;h0;return{anchor:new m(b.anchor.line,b.anchor.ch+(c?-1:1)),head:new m(b.head.line,b.head.ch+(c?1:-1))}}function h(c,e){var f=d(c);if(!f||c.getOption("disableInput"))return a.Pass;var h=b(f,"pairs"),j=h.indexOf(e);if(-1==j)return a.Pass;for(var l,n,o=b(f,"triples"),p=h.charAt(j+1)==e,q=c.listSelections(),r=j%2==0,s=0;s1&&o.indexOf(e)>=0&&c.getRange(m(v.line,v.ch-2),v)==e+e&&(v.ch<=2||c.getRange(m(v.line,v.ch-3),m(v.line,v.ch-2))!=e))t="addFour";else if(p){if(a.isWordChar(n)||!k(c,v,e))return a.Pass;t="both"}else{if(!r||c.getLine(v.line).length!=v.ch&&!i(n,h)&&!/\s/.test(n))return a.Pass;t="both"}else t=o.indexOf(e)>=0&&c.getRange(v,m(v.line,v.ch+3))==e+e+e?"skipThree":"skip";if(l){if(l!=t)return a.Pass}else l=t}var w=j%2?h.charAt(j-1):e,x=j%2?e:h.charAt(j+1);c.operation(function(){if("skip"==l)c.execCommand("goCharRight");else if("skipThree"==l)for(var a=0;3>a;a++)c.execCommand("goCharRight");else if("surround"==l){for(var b=c.getSelections(),a=0;a-1&&c%2==1}function j(a,b){var c=a.getRange(m(b.line,b.ch-1),m(b.line,b.ch+1));return 2==c.length?c:null}function k(b,c,d){var e=b.getLine(c.line),f=b.getTokenAt(c);if(/\bstring2?\b/.test(f.type))return!1;var g=new a.StringStream(e.slice(0,c.ch)+d+e.slice(c.ch),4);for(g.pos=g.start=f.start;;){var h=b.getMode().token(g,f.state);if(g.pos>=c.ch+1)return/\bstring2?\b/.test(h);g.start=g.pos}}var l={pairs:"()[]{}''\"\"",triples:"",explode:"[]{}"},m=a.Pos;a.defineOption("autoCloseBrackets",!1,function(b,c,d){d&&d!=a.Init&&(b.removeKeyMap(o),b.state.closeBrackets=null),c&&(b.state.closeBrackets=c,b.addKeyMap(o))});for(var n=l.pairs+"`",o={Backspace:e,Enter:f},p=0;pj.ch&&(r=r.slice(0,r.length-k.end+j.ch));var s=r.toLowerCase();if(!r||"string"==k.type&&(k.end!=j.ch||!/[\"\']/.test(k.string.charAt(k.string.length-1))||1==k.string.length)||"tag"==k.type&&"closeTag"==m.type||k.string.indexOf("/")==k.string.length-1||p&&e(p,s)>-1||f(b,r,j,m,!0))return a.Pass;var t=q&&e(q,s)>-1;d[i]={indent:t,text:">"+(t?"\n\n":"")+"",newPos:t?a.Pos(j.line+1,0):a.Pos(j.line,j.ch+1)}}for(var i=c.length-1;i>=0;i--){var u=d[i];b.replaceRange(u.text,c[i].head,c[i].anchor,"+insert");var v=b.listSelections().slice(0);v[i]={head:u.newPos,anchor:u.newPos},b.setSelections(v),u.indent&&(b.indentLine(u.newPos.line,null,!0),b.indentLine(u.newPos.line+1,null,!0))}}function c(b,c){for(var d=b.listSelections(),e=[],g=c?"/":""!=b.getLine(i.line).charAt(j.end)&&(m+=">"),e[h]=m}b.replaceSelections(e),d=b.listSelections();for(var h=0;hc;++c)if(a[c]==b)return c;return-1}function f(b,c,d,e,f){if(!a.scanForClosingTag)return!1;var g=Math.min(b.lastLine()+1,d.line+500),h=a.scanForClosingTag(b,d,null,g);if(!h||h.tag!=c)return!1;for(var i=e.context,j=f?1:0;i&&i.tagName==c;i=i.prev)++j;d=h.to;for(var k=1;j>k;k++){var l=a.scanForClosingTag(b,d,null,g);if(!l||l.tag!=c)return!1;d=l.to}return!0}a.defineOption("autoCloseTags",!1,function(c,e,f){if(f!=a.Init&&f&&c.removeKeyMap("autoCloseTags"),e){var g={name:"autoCloseTags"};("object"!=typeof e||e.whenClosing)&&(g["'/'"]=function(a){return d(a)}),("object"!=typeof e||e.whenOpening)&&(g["'>'"]=function(a){return b(a)}),c.addKeyMap(g)}});var g=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],h=["applet","blockquote","body","button","div","dl","fieldset","form","frameset","h1","h2","h3","h4","h5","h6","head","html","iframe","layer","legend","object","ol","p","select","table","ul"];a.commands.closeTag=function(a){return c(a)}}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function b(a,b,d,e){var f=a.getLineHandle(b.line),i=b.ch-1,j=i>=0&&h[f.text.charAt(i)]||h[f.text.charAt(++i)];if(!j)return null;var k=">"==j.charAt(1)?1:-1;if(d&&k>0!=(i==b.ch))return null;var l=a.getTokenTypeAt(g(b.line,i+1)),m=c(a,g(b.line,i+(k>0?1:0)),k,l||null,e);return null==m?null:{from:g(b.line,i),to:m&&m.pos,match:m&&m.ch==j.charAt(0),forward:k>0}}function c(a,b,c,d,e){for(var f=e&&e.maxScanLineLength||1e4,i=e&&e.maxScanLines||1e3,j=[],k=e&&e.bracketRegex?e.bracketRegex:/[(){}[\]]/,l=c>0?Math.min(b.line+i,a.lastLine()+1):Math.max(a.firstLine()-1,b.line-i),m=b.line;m!=l;m+=c){var n=a.getLine(m);if(n){var o=c>0?0:n.length-1,p=c>0?n.length:-1;if(!(n.length>f))for(m==b.line&&(o=b.ch-(0>c?1:0));o!=p;o+=c){var q=n.charAt(o);if(k.test(q)&&(void 0===d||a.getTokenTypeAt(g(m,o+1))==d)){var r=h[q];if(">"==r.charAt(1)==c>0)j.push(q);else{if(!j.length)return{pos:g(m,o),ch:q};j.pop()}}}}}return m-c==(c>0?a.lastLine():a.firstLine())?!1:null}function d(a,c,d){for(var e=a.state.matchBrackets.maxHighlightLineLength||1e3,h=[],i=a.listSelections(),j=0;j",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},i=null;a.defineOption("matchBrackets",!1,function(b,c,d){d&&d!=a.Init&&b.off("cursorActivity",e),c&&(b.state.matchBrackets="object"==typeof c?c:{},b.on("cursorActivity",e))}),a.defineExtension("matchBrackets",function(){d(this,!0)}),a.defineExtension("findMatchingBracket",function(a,c,d){return b(this,a,c,d)}),a.defineExtension("scanForBracket",function(a,b,d,e){return c(this,a,b,d,e)})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("../fold/xml-fold")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../fold/xml-fold"],a):a(CodeMirror)}(function(a){"use strict";function b(a){a.state.tagHit&&a.state.tagHit.clear(),a.state.tagOther&&a.state.tagOther.clear(),a.state.tagHit=a.state.tagOther=null}function c(c){c.state.failedTagMatch=!1,c.operation(function(){if(b(c),!c.somethingSelected()){var d=c.getCursor(),e=c.getViewport();e.from=Math.min(e.from,d.line),e.to=Math.max(d.line+1,e.to);var f=a.findMatchingTag(c,d,e);if(f){if(c.state.matchBothTags){var g="open"==f.at?f.open:f.close;g&&(c.state.tagHit=c.markText(g.from,g.to,{className:"CodeMirror-matchingtag"}))}var h="close"==f.at?f.open:f.close;h?c.state.tagOther=c.markText(h.from,h.to,{className:"CodeMirror-matchingtag"}):c.state.failedTagMatch=!0}}})}function d(a){a.state.failedTagMatch&&c(a)}a.defineOption("matchTags",!1,function(e,f,g){g&&g!=a.Init&&(e.off("cursorActivity",c),e.off("viewportChange",d),b(e)),f&&(e.state.matchBothTags="object"==typeof f&&f.bothTags,e.on("cursorActivity",c),e.on("viewportChange",d),c(e))}),a.commands.toMatchingTag=function(b){var c=a.findMatchingTag(b,b.getCursor());if(c){var d="close"==c.at?c.open:c.close;d&&b.extendSelection(d.to,d.from)}}}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.registerHelper("fold","brace",function(b,c){function d(d){for(var e=c.ch,i=0;;){var j=0>=e?-1:h.lastIndexOf(d,e-1);if(-1!=j){if(1==i&&j=o;++o)for(var p=b.getLine(o),q=o==g?e:0;;){var r=p.indexOf(i,q),s=p.indexOf(j,q);if(0>r&&(r=p.length),0>s&&(s=p.length),q=Math.min(r,s),q==p.length)break;if(b.getTokenTypeAt(a.Pos(o,q+1))==f)if(q==r)++m;else if(!--m){k=o,l=q;break a}++q}if(null!=k&&(g!=k||l!=e))return{from:a.Pos(g,e),to:a.Pos(k,l)}}}),a.registerHelper("fold","import",function(b,c){function d(c){if(cb.lastLine())return null;var d=b.getTokenAt(a.Pos(c,1));if(/\S/.test(d.string)||(d=b.getTokenAt(a.Pos(c,d.end+1))),"keyword"!=d.type||"import"!=d.string)return null;for(var e=c,f=Math.min(b.lastLine(),c+10);f>=e;++e){var g=b.getLine(e),h=g.indexOf(";");if(-1!=h)return{startCh:d.end,end:a.Pos(e,h)}}}var e,c=c.line,f=d(c);if(!f||d(c-1)||(e=d(c-2))&&e.end.line==c-1)return null;for(var g=f.end;;){var h=d(g.line+1);if(null==h)break;g=h.end}return{from:b.clipPos(a.Pos(c,f.startCh+1)),to:g}}),a.registerHelper("fold","include",function(b,c){function d(c){if(cb.lastLine())return null;var d=b.getTokenAt(a.Pos(c,1));return/\S/.test(d.string)||(d=b.getTokenAt(a.Pos(c,d.end+1))),"meta"==d.type&&"#include"==d.string.slice(0,8)?d.start+8:void 0}var c=c.line,e=d(c);if(null==e||null!=d(c-1))return null;for(var f=c;;){var g=d(f+1);if(null==g)break;++f}return{from:a.Pos(c,e+1),to:b.clipPos(a.Pos(f))}})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(b,e,f,g){function h(a){var c=i(b,e);if(!c||c.to.line-c.from.lineb.firstLine();)e=a.Pos(e.line-1,0),k=h(!1);if(k&&!k.cleared&&"unfold"!==g){var l=c(b,f);a.on(l,"mousedown",function(b){m.clear(),a.e_preventDefault(b)});var m=b.markText(k.from,k.to,{replacedWith:l,clearOnEnter:!0,__isFold:!0});m.on("clear",function(c,d){a.signal(b,"unfold",b,c,d)}),a.signal(b,"fold",b,k.from,k.to)}}function c(a,b){var c=d(a,b,"widget");if("string"==typeof c){var e=document.createTextNode(c);c=document.createElement("span"),c.appendChild(e),c.className="CodeMirror-foldmarker"}return c}function d(a,b,c){if(b&&void 0!==b[c])return b[c];var d=a.options.foldOptions;return d&&void 0!==d[c]?d[c]:e[c]}a.newFoldFunction=function(a,c){return function(d,e){b(d,e,{rangeFinder:a,widget:c})}},a.defineExtension("foldCode",function(a,c,d){b(this,a,c,d)}),a.defineExtension("isFolded",function(a){for(var b=this.findMarksAt(a),c=0;c=c;c++)b.foldCode(a.Pos(c,0),null,"fold")})},a.commands.unfoldAll=function(b){b.operation(function(){for(var c=b.firstLine(),d=b.lastLine();d>=c;c++)b.foldCode(a.Pos(c,0),null,"unfold")})},a.registerHelper("fold","combine",function(){var a=Array.prototype.slice.call(arguments,0);return function(b,c){for(var d=0;d=h&&(c=e(f.indicatorOpen))}a.setGutterMarker(b,f.gutter,c),++g})}function g(a){var b=a.getViewport(),c=a.state.foldGutter;c&&(a.operation(function(){f(a,b.from,b.to)}),c.from=b.from,c.to=b.to)}function h(a,b,c){var e=a.state.foldGutter;if(e){var f=e.options;if(c==f.gutter){var g=d(a,b);g?g.clear():a.foldCode(l(b,0),f.rangeFinder)}}}function i(a){var b=a.state.foldGutter;if(b){var c=b.options;b.from=b.to=0,clearTimeout(b.changeUpdate),b.changeUpdate=setTimeout(function(){g(a)},c.foldOnChangeTimeSpan||600)}}function j(a){var b=a.state.foldGutter;if(b){var c=b.options;clearTimeout(b.changeUpdate),b.changeUpdate=setTimeout(function(){var c=a.getViewport();b.from==b.to||c.from-b.to>20||b.from-c.to>20?g(a):a.operation(function(){c.fromb.to&&(f(a,b.to,c.to),b.to=c.to)})},c.updateViewportTimeSpan||400)}}function k(a,b){var c=a.state.foldGutter;if(c){var d=b.line;d>=c.from&&d=a.max?void 0:(a.ch=0,a.text=a.cm.getLine(++a.line),!0)}function f(a){return a.line<=a.min?void 0:(a.text=a.cm.getLine(--a.line),a.ch=a.text.length,!0)}function g(a){for(;;){var b=a.text.indexOf(">",a.ch);if(-1==b){if(e(a))continue;return}{if(d(a,b+1)){var c=a.text.lastIndexOf("/",b),f=c>-1&&!/\S/.test(a.text.slice(c+1,b));return a.ch=b+1,f?"selfClose":"regular"}a.ch=b+1}}}function h(a){for(;;){var b=a.ch?a.text.lastIndexOf("<",a.ch-1):-1;if(-1==b){if(f(a))continue;return}if(d(a,b+1)){p.lastIndex=b,a.ch=b;var c=p.exec(a.text);if(c&&c.index==b)return c}else a.ch=b}}function i(a){for(;;){p.lastIndex=a.ch;var b=p.exec(a.text);if(!b){if(e(a))continue;return}{if(d(a,b.index+1))return a.ch=b.index+b[0].length,b;a.ch=b.index+1}}}function j(a){for(;;){var b=a.ch?a.text.lastIndexOf(">",a.ch-1):-1;if(-1==b){if(f(a))continue;return}{if(d(a,b+1)){var c=a.text.lastIndexOf("/",b),e=c>-1&&!/\S/.test(a.text.slice(c+1,b));return a.ch=b+1,e?"selfClose":"regular"}a.ch=b}}}function k(a,b){for(var c=[];;){var d,e=i(a),f=a.line,h=a.ch-(e?e[0].length:0);if(!e||!(d=g(a)))return;if("selfClose"!=d)if(e[1]){for(var j=c.length-1;j>=0;--j)if(c[j]==e[2]){c.length=j;break}if(0>j&&(!b||b==e[2]))return{tag:e[2],from:m(f,h),to:m(a.line,a.ch)}}else c.push(e[2])}}function l(a,b){for(var c=[];;){var d=j(a);if(!d)return;if("selfClose"!=d){var e=a.line,f=a.ch,g=h(a);if(!g)return;if(g[1])c.push(g[2]);else{for(var i=c.length-1;i>=0;--i)if(c[i]==g[2]){c.length=i;break}if(0>i&&(!b||b==g[2]))return{tag:g[2],from:m(a.line,a.ch),to:m(e,f)}}}else h(a)}}var m=a.Pos,n="A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",o=n+"-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",p=new RegExp("<(/?)(["+n+"]["+o+"]*)","g");a.registerHelper("fold","xml",function(a,b){for(var d=new c(a,b.line,0);;){var e,f=i(d);if(!f||d.line!=b.line||!(e=g(d)))return;if(!f[1]&&"selfClose"!=e){var b=m(d.line,d.ch),h=k(d,f[2]);return h&&{from:b,to:h.from}}}}),a.findMatchingTag=function(a,d,e){var f=new c(a,d.line,d.ch,e);if(-1!=f.text.indexOf(">")||-1!=f.text.indexOf("<")){var i=g(f),j=i&&m(f.line,f.ch),n=i&&h(f);if(i&&n&&!(b(f,d)>0)){var o={from:m(f.line,f.ch),to:j,tag:n[2]};return"selfClose"==i?{open:o,close:null,at:"open"}:n[1]?{open:l(f,n[2]),close:o,at:"close"}:(f=new c(a,j.line,j.ch,e),{open:o,close:k(f,n[2]),at:"open"})}}},a.findEnclosingTag=function(a,b,d){for(var e=new c(a,b.line,b.ch,d);;){var f=l(e);if(!f)break;var g=new c(a,b.line,b.ch,d),h=k(g,f.tag);if(h)return{open:f,close:h}}},a.scanForClosingTag=function(a,b,d,e){var f=new c(a,b.line,b.ch,e?{from:0,to:e}:null);return k(f,d)}}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),"cjs"):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],function(b){a(b,"amd")}):a(CodeMirror,"plain")}(function(a,b){function c(a,b){var c=b;return function(){0==--c&&a()}}function d(b,d){var e=a.modes[b].dependencies;if(!e)return d();for(var f=[],g=0;g-1?e+b.length:e}var f=b.exec(c?a.slice(c):a);return f?f.index+c+(d?f[0].length:0):-1}var d=Array.prototype.slice.call(arguments,1);return{startState:function(){return{outer:a.startState(b),innerActive:null,inner:null}},copyState:function(c){return{outer:a.copyState(b,c.outer),innerActive:c.innerActive,inner:c.innerActive&&a.copyState(c.innerActive.mode,c.inner)}},token:function(e,f){if(f.innerActive){var g=f.innerActive,h=e.string;if(!g.close&&e.sol())return f.innerActive=f.inner=null,this.token(e,f);var i=g.close?c(h,g.close,e.pos,g.parseDelimiters):-1;if(i==e.pos&&!g.parseDelimiters)return e.match(g.close),f.innerActive=f.inner=null,g.delimStyle&&g.delimStyle+" "+g.delimStyle+"-close";i>-1&&(e.string=h.slice(0,i));var j=g.mode.token(e,f.inner);return i>-1&&(e.string=h),i==e.pos&&g.parseDelimiters&&(f.innerActive=f.inner=null),g.innerStyle&&(j=j?j+" "+g.innerStyle:g.innerStyle),j}for(var k=1/0,h=e.string,l=0;li&&(k=i)}k!=1/0&&(e.string=h.slice(0,k));var n=b.token(e,f.outer);return k!=1/0&&(e.string=h),n},indent:function(c,d){var e=c.innerActive?c.innerActive.mode:b;return e.indent?e.indent(c.innerActive?c.inner:c.outer,d):a.Pass},blankLine:function(c){var e=c.innerActive?c.innerActive.mode:b;if(e.blankLine&&e.blankLine(c.innerActive?c.inner:c.outer),c.innerActive)"\n"===c.innerActive.close&&(c.innerActive=c.inner=null);else for(var f=0;fd.right?1:0:b.clientYd.bottom?1:0,f.moveTo(f.pos+c*f.screen)}),a.on(this.node,"mousewheel",e),a.on(this.node,"DOMMouseScroll",e)}function c(a,c,d){this.addClass=a,this.horiz=new b(a,"horizontal",d),c(this.horiz.node),this.vert=new b(a,"vertical",d),c(this.vert.node),this.width=null}b.prototype.setPos=function(a){return 0>a&&(a=0),a>this.total-this.screen&&(a=this.total-this.screen),a==this.pos?!1:(this.pos=a,this.inner.style["horizontal"==this.orientation?"left":"top"]=a*(this.size/this.total)+"px",!0)},b.prototype.moveTo=function(a){this.setPos(a)&&this.scroll(a,this.orientation)};var d=10;b.prototype.update=function(a,b,c){this.screen=b,this.total=a,this.size=c;var e=this.screen*(this.size/this.total);d>e&&(this.size-=d-e,e=d),this.inner.style["horizontal"==this.orientation?"width":"height"]=e+"px",this.setPos(this.pos)},c.prototype.update=function(a){if(null==this.width){var b=window.getComputedStyle?window.getComputedStyle(this.horiz.node):this.horiz.node.currentStyle;b&&(this.width=parseInt(b.height))}var c=this.width||0,d=a.scrollWidth>a.clientWidth+1,e=a.scrollHeight>a.clientHeight+1;return this.vert.node.style.display=e?"block":"none",this.horiz.node.style.display=d?"block":"none",e&&(this.vert.update(a.scrollHeight,a.clientHeight,a.viewHeight-(d?c:0)),this.vert.node.style.bottom=d?c+"px":"0"),d&&(this.horiz.update(a.scrollWidth,a.clientWidth,a.viewWidth-(e?c:0)-a.barLeft),this.horiz.node.style.right=e?c+"px":"0",this.horiz.node.style.left=a.barLeft+"px"),{right:e?c:0,bottom:d?c:0}},c.prototype.setScrollTop=function(a){this.vert.setPos(a)},c.prototype.setScrollLeft=function(a){this.horiz.setPos(a)},c.prototype.clear=function(){var a=this.horiz.node.parentNode;a.removeChild(this.horiz.node),a.removeChild(this.vert.node)},a.scrollbarModel.simple=function(a,b){return new c("CodeMirror-simplescroll",a,b)},a.scrollbarModel.overlay=function(a,b){return new c("CodeMirror-overlayscroll",a,b)}}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(a){for(var b=0;b",type:"keyToKey",toKeys:"h"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"",type:"keyToKey",toKeys:"W"},{keys:"",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"",type:"keyToKey",toKeys:"w"},{keys:"",type:"keyToKey",toKeys:"b", +context:"normal"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"",type:"keyToKey",toKeys:"0"},{keys:"",type:"keyToKey",toKeys:"$"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r",type:"action",action:"replace",isEdit:!0},{keys:"@",type:"action",action:"replayMacro"},{keys:"q",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0}},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"",type:"action",action:"redo"},{keys:"m",type:"action",action:"setMark"},{keys:'"',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"a",type:"motion",motion:"textObjectManipulation"},{keys:"i",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],c=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],d=a.Pos,e=function(){function e(b){b.setOption("disableInput",!0),b.setOption("showCursorWhenSelecting",!1),a.signal(b,"vim-mode-change",{mode:"normal"}),b.on("cursorActivity",ab),x(b),a.on(b.getInputField(),"paste",k(b))}function f(b){b.setOption("disableInput",!1),b.off("cursorActivity",ab),a.off(b.getInputField(),"paste",k(b)),b.state.vim=null}function g(b,c){this==a.keyMap.vim&&a.rmClass(b.getWrapperElement(),"cm-fat-cursor"),c&&c.attach==h||f(b,!1)}function h(b,c){this==a.keyMap.vim&&a.addClass(b.getWrapperElement(),"cm-fat-cursor"),c&&c.attach==h||e(b)}function i(b,c){if(!c)return void 0;var d=j(b);if(!d)return!1;var e=a.Vim.findKey(c,d);return"function"==typeof e&&a.signal(c,"vim-keypress",d),e}function j(a){if("'"==a.charAt(0))return a.charAt(1);var b=a.split(/-(?!$)/),c=b[b.length-1];if(1==b.length&&1==b[0].length)return!1;if(2==b.length&&"Shift"==b[0]&&1==c.length)return!1;for(var d=!1,e=0;e"):!1}function k(a){var b=a.state.vim;return b.onPasteFn||(b.onPasteFn=function(){b.insertMode||(a.setCursor(L(a.getCursor(),0,1)),Ab.enterInsertMode(a,{},b))}),b.onPasteFn}function l(a,b){for(var c=[],d=a;a+b>d;d++)c.push(String.fromCharCode(d));return c}function m(a,b){return b>=a.firstLine()&&b<=a.lastLine()}function n(a){return/^[a-z]$/.test(a)}function o(a){return-1!="()[]{}".indexOf(a)}function p(a){return jb.test(a)}function q(a){return/^[A-Z]$/.test(a)}function r(a){return/^\s*$/.test(a)}function s(a,b){for(var c=0;cd;d++)c.push(a);return c}function H(a,b){zb[a]=b}function I(a,b){Ab[a]=b}function J(a,b,c){var e=Math.min(Math.max(a.firstLine(),b.line),a.lastLine()),f=X(a,e)-1;f=c?f+1:f;var g=Math.min(Math.max(0,b.ch),f);return d(e,g)}function K(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function L(a,b,c){return"object"==typeof b&&(c=b.ch,b=b.line),d(a.line+b,a.ch+c)}function M(a,b){return{line:b.line-a.line,ch:b.line-a.line}}function N(a,b,c,d){for(var e,f=[],g=[],h=0;h"==b.slice(-11)){var c=b.length-11,d=a.slice(0,c),e=b.slice(0,c);return d==e&&a.length>c?"full":0==e.indexOf(d)?"partial":!1}return a==b?"full":0==b.indexOf(a)?"partial":!1}function P(a){var b=/^.*(<[\w\-]+>)$/.exec(a),c=b?b[1]:a.slice(-1);if(c.length>1)switch(c){case"":c="\n";break;case"":c=" "}return c}function Q(a,b,c){return function(){for(var d=0;c>d;d++)b(a)}}function R(a){return d(a.line,a.ch)}function S(a,b){return a.ch==b.ch&&a.line==b.line}function T(a,b){return a.line2&&(b=U.apply(void 0,Array.prototype.slice.call(arguments,1))),T(a,b)?a:b}function V(a,b){return arguments.length>2&&(b=V.apply(void 0,Array.prototype.slice.call(arguments,1))),T(a,b)?b:a}function W(a,b,c){var d=T(a,b),e=T(b,c);return d&&e}function X(a,b){return a.getLine(b).length}function Y(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function Z(a){return a.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function $(a,b,c){var e=X(a,b),f=new Array(c-e+1).join(" ");a.setCursor(d(b,e)),a.replaceRange(f,a.getCursor())}function _(a,b){var c=[],e=a.listSelections(),f=R(a.clipPos(b)),g=!S(b,f),h=a.getCursor("head"),i=ba(e,h),j=S(e[i].head,e[i].anchor),k=e.length-1,l=k-i>i?k:0,m=e[l].anchor,n=Math.min(m.line,f.line),o=Math.max(m.line,f.line),p=m.ch,q=f.ch,r=e[l].head.ch-p,s=q-p;r>0&&0>=s?(p++,g||q--):0>r&&s>=0?(p--,j||q++):0>r&&-1==s&&(p--,q++);for(var t=n;o>=t;t++){var u={anchor:new d(t,p),head:new d(t,q)};c.push(u)}return i=f.line==o?c.length-1:0,a.setSelections(c),b.ch=q,m.ch=p,m}function aa(a,b,c){for(var d=[],e=0;c>e;e++){var f=L(b,e,0);d.push({anchor:f,head:f})}a.setSelections(d,0)}function ba(a,b,c){for(var d=0;dj&&(f.line=j),f.ch=X(a,f.line)}return{ranges:[{anchor:g,head:f}],primary:0}}if("block"==c){for(var k=Math.min(g.line,f.line),l=Math.min(g.ch,f.ch),m=Math.max(g.line,f.line),n=Math.max(g.ch,f.ch)+1,o=m-k+1,p=f.line==k?0:o-1,q=[],r=0;o>r;r++)q.push({anchor:d(k+r,l),head:d(k+r,n)});return{ranges:q,primary:p}}}function ha(a){var b=a.getCursor("head");return 1==a.getSelection().length&&(b=U(b,a.getCursor("anchor"))),b}function ia(b,c){var d=b.state.vim;c!==!1&&b.setCursor(J(b,d.sel.head)),da(b,d),d.visualMode=!1,d.visualLine=!1,d.visualBlock=!1,a.signal(b,"vim-mode-change",{mode:"normal"}),d.fakeCursor&&d.fakeCursor.clear()}function ja(a,b,c){var d=a.getRange(b,c);if(/\n\s*$/.test(d)){var e=d.split("\n");e.pop();for(var f,f=e.pop();e.length>0&&f&&r(f);f=e.pop())c.line--,c.ch=0;f?(c.line--,c.ch=X(a,c.line)):c.ch=0}}function ka(a,b,c){b.ch=0,c.ch=0,c.line++}function la(a){if(!a)return 0;var b=a.search(/\S/);return-1==b?a.length:b}function ma(a,b,c,e,f){for(var g=ha(a),h=a.getLine(g.line),i=g.ch,j=f?kb[0]:lb[0];!j(h.charAt(i));)if(i++,i>=h.length)return null;e?j=lb[0]:(j=kb[0],j(h.charAt(i))||(j=kb[1]));for(var k=i,l=i;j(h.charAt(k))&&k=0;)l--;if(l++,b){for(var m=k;/\s/.test(h.charAt(k))&&k0;)l--;l||(l=n)}}return{start:d(g.line,l),end:d(g.line,k)}}function na(a,b,c){S(b,c)||ub.jumpList.add(a,b,c)}function oa(a,b){ub.lastChararacterSearch.increment=a,ub.lastChararacterSearch.forward=b.forward,ub.lastChararacterSearch.selectedCharacter=b.selectedCharacter}function pa(a,b,c,e){var f=R(a.getCursor()),g=c?1:-1,h=c?a.lineCount():-1,i=f.ch,j=f.line,k=a.getLine(j),l={lineText:k,nextCh:k.charAt(i),lastCh:null,index:i,symb:e,reverseSymb:(c?{")":"(","}":"{"}:{"(":")","{":"}"})[e],forward:c,depth:0,curMoveThrough:!1},m=Bb[e];if(!m)return f;var n=Cb[m].init,o=Cb[m].isComplete;for(n&&n(l);j!==h&&b;){if(l.index+=g,l.nextCh=l.lineText.charAt(l.index),!l.nextCh){if(j+=g,l.lineText=a.getLine(j)||"",g>0)l.index=0;else{var p=l.lineText.length;l.index=p>0?p-1:0}l.nextCh=l.lineText.charAt(l.index)}o(l)&&(f.line=j,f.ch=l.index,b--)}return l.nextCh||l.curMoveThrough?d(j,l.index):f}function qa(a,b,c,d,e){var f=b.line,g=b.ch,h=a.getLine(f),i=c?1:-1,j=d?lb:kb;if(e&&""==h){if(f+=i,h=a.getLine(f),!m(a,f))return null;g=c?0:h.length}for(;;){if(e&&""==h)return{from:0,to:0,line:f};for(var k=i>0?h.length:-1,l=k,n=k;g!=k;){for(var o=!1,p=0;p0?0:h.length}throw new Error("The impossible happened.")}function ra(a,b,c,e,f,g){var h=R(b),i=[];(e&&!f||!e&&f)&&c++;for(var j=!(e&&f),k=0;c>k;k++){var l=qa(a,b,e,g,j);if(!l){var m=X(a,a.lastLine());i.push(e?{line:a.lastLine(),from:m,to:m}:{line:0,from:0,to:0});break}i.push(l),b=d(l.line,e?l.to-1:l.from)}var n=i.length!=c,o=i[0],p=i.pop();return e&&!f?(n||o.from==h.ch&&o.line==h.line||(p=i.pop()),d(p.line,p.from)):e&&f?d(p.line,p.to-1):!e&&f?(n||o.to==h.ch&&o.line==h.line||(p=i.pop()),d(p.line,p.to)):d(p.line,p.from)}function sa(a,b,c,e){for(var f,g=a.getCursor(),h=g.ch,i=0;b>i;i++){var j=a.getLine(g.line);if(f=va(h,j,e,c,!0),-1==f)return null;h=f}return d(a.getCursor().line,f)}function ta(a,b){var c=a.getCursor().line;return J(a,d(c,b-1))}function ua(a,b,c,d){s(c,pb)&&(b.marks[c]&&b.marks[c].clear(),b.marks[c]=a.setBookmark(d))}function va(a,b,c,d,e){var f;return d?(f=b.indexOf(c,a+1),-1==f||e||(f-=1)):(f=b.lastIndexOf(c,a-1),-1==f||e||(f+=1)),f}function wa(a,b,c,e,f){function g(b){return!a.getLine(b)}function h(a,b,c){return c?g(a)!=g(a+b):!g(a)&&g(a+b)}var i,j,k=b.line,l=a.firstLine(),m=a.lastLine(),n=k;if(e){for(;n>=l&&m>=n&&c>0;)h(n,e)&&c--,n+=e;return new d(n,0)}var o=a.state.vim;if(o.visualLine&&h(k,1,!0)){var p=o.sel.anchor;h(p.line,-1,!0)&&(f&&p.line==k||(k+=1))}var q=g(k);for(n=k;m>=n&&c;n++)h(n,1,!0)&&(f&&g(n)==q||c--);for(j=new d(n,0),n>m&&!q?q=!0:f=!1,n=k;n>l&&(f&&g(n)!=q&&n!=k||!h(n,-1,!0));n--);return i=new d(n,0),{start:i,end:j}}function xa(a,b,c,e){var f,g,h=b,i={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/}[c],j={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{"}[c],k=a.getLine(h.line).charAt(h.ch),l=k===j?1:0;if(f=a.scanForBracket(d(h.line,h.ch+l),-1,null,{bracketRegex:i}),g=a.scanForBracket(d(h.line,h.ch+l),1,null,{bracketRegex:i}),!f||!g)return{start:h,end:h};if(f=f.pos,g=g.pos,f.line==g.line&&f.ch>g.ch||f.line>g.line){var m=f;f=g,g=m}return e?g.ch+=1:f.ch+=1,{start:f,end:g}}function ya(a,b,c,e){var f,g,h,i,j=R(b),k=a.getLine(j.line),l=k.split(""),m=l.indexOf(c);if(j.ch-1&&!f;h--)l[h]==c&&(f=h+1);else f=j.ch+1;if(f&&!g)for(h=f,i=l.length;i>h&&!g;h++)l[h]==c&&(g=h);return f&&g?(e&&(--f,++g),{start:d(j.line,f),end:d(j.line,g)}):{start:j,end:j}}function za(){}function Aa(a){var b=a.state.vim;return b.searchState_||(b.searchState_=new za)}function Ba(a,b,c,d,e){a.openDialog?a.openDialog(b,d,{bottom:!0,value:e.value,onKeyDown:e.onKeyDown,onKeyUp:e.onKeyUp,selectValueOnOpen:!1}):d(prompt(c,""))}function Ca(a){var b=Da(a)||[];if(!b.length)return[];var c=[];if(0===b[0]){for(var d=0;d'+b+"
    ",{bottom:!0,duration:5e3}):alert(b)}function Ja(a,b){var c="";return a&&(c+=''+a+""),c+=' ',b&&(c+='',c+=b,c+=""),c}function Ka(a,b){var c=(b.prefix||"")+" "+(b.desc||""),d=Ja(b.prefix,b.desc);Ba(a,d,c,b.onClose,b)}function La(a,b){if(a instanceof RegExp&&b instanceof RegExp){for(var c=["global","multiline","ignoreCase","source"],d=0;dh;h++){var i=g.find(b);if(0==h&&i&&S(g.from(),f)&&(i=g.find(b)),!i&&(g=a.getSearchCursor(c,b?d(a.lastLine()):d(a.firstLine(),0)),!g.find(b)))return}return g.from()})}function Qa(a){var b=Aa(a);a.removeOverlay(Aa(a).getOverlay()),b.setOverlay(null),b.getScrollbarAnnotate()&&(b.getScrollbarAnnotate().clear(),b.setScrollbarAnnotate(null))}function Ra(a,b,c){return"number"!=typeof a&&(a=a.line),b instanceof Array?s(a,b):c?a>=b&&c>=a:a==b}function Sa(a){var b=a.getScrollInfo(),c=6,d=10,e=a.coordsChar({left:0,top:c+b.top},"local"),f=b.clientHeight-d+b.top,g=a.coordsChar({left:0,top:f},"local");return{top:e.line,bottom:g.line}}function Ta(b,c,d,e,f,g,h,i,j){function k(){b.operation(function(){for(;!p;)l(),m();n()})}function l(){var a=b.getRange(g.from(),g.to()),c=a.replace(h,i);g.replace(c)}function m(){for(;g.findNext()&&Ra(g.from(),e,f);)if(d||!q||g.from().line!=q.line)return b.scrollIntoView(g.from(),30),b.setSelection(g.from(),g.to()),q=g.from(),void(p=!1);p=!0}function n(a){if(a&&a(),b.focus(),q){b.setCursor(q);var c=b.state.vim;c.exMode=!1,c.lastHPos=c.lastHSPos=q.ch}j&&j()}function o(c,d,e){a.e_stop(c);var f=a.keyName(c);switch(f){case"Y":l(),m();break;case"N":m();break;case"A":var g=j;j=void 0,b.operation(k),j=g;break;case"L":l();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":n(e)}return p&&n(e),!0}b.state.vim.exMode=!0;var p=!1,q=g.from();return m(),p?void Ia(b,"No matches for "+h.source):c?void Ka(b,{prefix:"replace with "+i+" (y/n/a/q/l)",onKeyDown:o}):(k(),void(j&&j()))}function Ua(b){var c=b.state.vim,d=ub.macroModeState,e=ub.registerController.getRegister("."),f=d.isPlaying,g=d.lastInsertModeChanges,h=[];if(!f){for(var i=g.inVisualBlock?c.lastSelection.visualBlock.height:1,j=g.changes,h=[],k=0;k1&&(fb(b,c,c.insertModeRepeat-1,!0),c.lastEditInputState.repeatOverride=c.insertModeRepeat),delete c.insertModeRepeat,c.insertMode=!1,b.setCursor(b.getCursor().line,b.getCursor().ch-1),b.setOption("keyMap","vim"),b.setOption("disableInput",!0),b.toggleOverwrite(!1),e.setText(g.changes.join("")),a.signal(b,"vim-mode-change",{mode:"normal"}),d.isRecording&&Za(d)}function Va(a){b.unshift(a)}function Wa(a,b,c,d,e){var f={keys:a,type:b};f[b]=c,f[b+"Args"]=d;for(var g in e)f[g]=e[g];Va(f)}function Xa(b,c,d,e){var f=ub.registerController.getRegister(e);if(":"==e)return f.keyBuffer[0]&&Ib.processCommand(b,f.keyBuffer[0]),void(d.isPlaying=!1);var g=f.keyBuffer,h=0;d.isPlaying=!0,d.replaySearchQueries=f.searchQueries.slice(0);for(var i=0;i|<\w+>|./.exec(l),k=j[0],l=l.substring(j.index+k.length),a.Vim.handleKey(b,k,"macro"),c.insertMode){var m=f.insertModeChanges[h++].changes;ub.macroModeState.lastInsertModeChanges.changes=m,gb(b,m,1),Ua(b)}d.isPlaying=!1}function Ya(a,b){if(!a.isPlaying){var c=a.latestRegister,d=ub.registerController.getRegister(c);d&&d.pushText(b)}}function Za(a){if(!a.isPlaying){var b=a.latestRegister,c=ub.registerController.getRegister(b);c&&c.pushInsertModeChanges&&c.pushInsertModeChanges(a.lastInsertModeChanges)}}function $a(a,b){if(!a.isPlaying){var c=a.latestRegister,d=ub.registerController.getRegister(c);d&&d.pushSearchQuery&&d.pushSearchQuery(b)}}function _a(a,b){var c=ub.macroModeState,d=c.lastInsertModeChanges;if(!c.isPlaying)for(;b;){if(d.expectCursorActivityForChange=!0,"+input"==b.origin||"paste"==b.origin||void 0===b.origin){var e=b.text.join("\n");d.changes.push(e)}b=b.next}}function ab(a){var b=a.state.vim;if(b.insertMode){var c=ub.macroModeState;if(c.isPlaying)return;var d=c.lastInsertModeChanges; +d.expectCursorActivityForChange?d.expectCursorActivityForChange=!1:d.changes=[]}else a.curOp.isVimOp||cb(a,b);b.visualMode&&bb(a)}function bb(a){var b=a.state.vim,c=J(a,R(b.sel.head)),d=L(c,0,1);b.fakeCursor&&b.fakeCursor.clear(),b.fakeCursor=a.markText(c,d,{className:"cm-animate-fat-cursor"})}function cb(b,c){var d=b.getCursor("anchor"),e=b.getCursor("head");if(c.visualMode&&!b.somethingSelected()?ia(b,!1):c.visualMode||c.insertMode||!b.somethingSelected()||(c.visualMode=!0,c.visualLine=!1,a.signal(b,"vim-mode-change",{mode:"visual"})),c.visualMode){var f=T(e,d)?0:-1,g=T(e,d)?-1:0;e=L(e,0,f),d=L(d,0,g),c.sel={anchor:d,head:e},ua(b,c,"<",U(e,d)),ua(b,c,">",V(e,d))}else c.insertMode||(c.lastHPos=b.getCursor().ch)}function db(a){this.keyName=a}function eb(b){function c(){return e.changes.push(new db(f)),!0}var d=ub.macroModeState,e=d.lastInsertModeChanges,f=a.keyName(b);f&&(-1!=f.indexOf("Delete")||-1!=f.indexOf("Backspace"))&&a.lookupKey(f,"vim-insert",c)}function fb(a,b,c,d){function e(){h?xb.processAction(a,b,b.lastEditActionCommand):xb.evalInput(a,b)}function f(c){if(g.lastInsertModeChanges.changes.length>0){c=b.lastEditActionCommand?c:1;var d=g.lastInsertModeChanges;gb(a,d.changes,c)}}var g=ub.macroModeState;g.isPlaying=!0;var h=!!b.lastEditActionCommand,i=b.inputState;if(b.inputState=b.lastEditInputState,h&&b.lastEditActionCommand.interlaceInsertRepeat)for(var j=0;c>j;j++)e(),f(1);else d||e(),f(c);b.inputState=i,b.insertMode&&!d&&Ua(a),g.isPlaying=!1}function gb(b,c,d){function e(c){return"string"==typeof c?a.commands[c](b):c(b),!0}var f=b.getCursor("head"),g=ub.macroModeState.lastInsertModeChanges.inVisualBlock;if(g){var h=b.state.vim,i=h.lastSelection,j=M(i.anchor,i.head);aa(b,f,j.line+1),d=b.listSelections().length,b.setCursor(f)}for(var k=0;d>k;k++){g&&b.setCursor(L(f,k,0));for(var l=0;l"]),qb=[].concat(mb,nb,ob,["-",'"',".",":","/"]),rb={};t("filetype",void 0,"string",["ft"],function(a,b){if(void 0!==b){if(void 0===a){var c=b.getOption("mode");return"null"==c?"":c}var c=""==a?"null":a;b.setOption("mode",c)}});var sb=function(){function a(a,b,h){function i(b){var e=++d%c,f=g[e];f&&f.clear(),g[e]=a.setBookmark(b)}var j=d%c,k=g[j];if(k){var l=k.find();l&&!S(l,b)&&i(b)}else i(b);i(h),e=d,f=d-c+1,0>f&&(f=0)}function b(a,b){d+=b,d>e?d=e:f>d&&(d=f);var h=g[(c+d)%c];if(h&&!h.find()){var i,j=b>0?1:-1,k=a.getCursor();do if(d+=j,h=g[(c+d)%c],h&&(i=h.find())&&!S(k,i))break;while(e>d&&d>f)}return h}var c=100,d=-1,e=0,f=0,g=new Array(c);return{cachedCursor:void 0,add:a,move:b}},tb=function(a){return a?{changes:a.changes,expectCursorActivityForChange:a.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};w.prototype={exitMacroRecordMode:function(){var a=ub.macroModeState;a.onRecordingDone&&a.onRecordingDone(),a.onRecordingDone=void 0,a.isRecording=!1},enterMacroRecordMode:function(a,b){var c=ub.registerController.getRegister(b);c&&(c.clear(),this.latestRegister=b,a.openDialog&&(this.onRecordingDone=a.openDialog("(recording)["+b+"]",null,{bottom:!0})),this.isRecording=!0)}};var ub,vb,wb={buildKeyMap:function(){},getRegisterController:function(){return ub.registerController},resetVimGlobalState_:y,getVimGlobalState_:function(){return ub},maybeInitVimState_:x,suppressErrorLogging:!1,InsertModeKey:db,map:function(a,b,c){Ib.map(a,b,c)},unmap:function(a,b){Ib.unmap(a,b)},setOption:u,getOption:v,defineOption:t,defineEx:function(a,b,c){if(b){if(0!==a.indexOf(b))throw new Error('(Vim.defineEx) "'+b+'" is not a prefix of "'+a+'", command not registered')}else b=a;Hb[a]=c,Ib.commandMap_[b]={name:a,shortName:b,type:"api"}},handleKey:function(a,b,c){var d=this.findKey(a,b,c);return"function"==typeof d?d():void 0},findKey:function(c,d,e){function f(){var a=ub.macroModeState;if(a.isRecording){if("q"==d)return a.exitMacroRecordMode(),A(c),!0;"mapping"!=e&&Ya(a,d)}}function g(){return""==d?(A(c),l.visualMode?ia(c):l.insertMode&&Ua(c),!0):void 0}function h(b){for(var e;b;)e=/<\w+-.+?>|<\w+>|./.exec(b),d=e[0],b=b.substring(e.index+d.length),a.Vim.handleKey(c,d,"mapping")}function i(){if(g())return!0;for(var a=l.inputState.keyBuffer=l.inputState.keyBuffer+d,e=1==d.length,f=xb.matchCommand(a,b,l.inputState,"insert");a.length>1&&"full"!=f.type;){var a=l.inputState.keyBuffer=a.slice(1),h=xb.matchCommand(a,b,l.inputState,"insert");"none"!=h.type&&(f=h)}if("none"==f.type)return A(c),!1;if("partial"==f.type)return vb&&window.clearTimeout(vb),vb=window.setTimeout(function(){l.insertMode&&l.inputState.keyBuffer&&A(c)},v("insertModeEscKeysTimeout")),!e;if(vb&&window.clearTimeout(vb),e){var i=c.getCursor();c.replaceRange("",L(i,0,-(a.length-1)),i,"+input")}return A(c),f.command}function j(){if(f()||g())return!0;var a=l.inputState.keyBuffer=l.inputState.keyBuffer+d;if(/^[1-9]\d*$/.test(a))return!0;var e=/^(\d*)(.*)$/.exec(a);if(!e)return A(c),!1;var h=l.visualMode?"visual":"normal",i=xb.matchCommand(e[2]||e[1],b,l.inputState,h);if("none"==i.type)return A(c),!1;if("partial"==i.type)return!0;l.inputState.keyBuffer="";var e=/^(\d*)(.*)$/.exec(a);return e[1]&&"0"!=e[1]&&l.inputState.pushRepeatDigit(e[1]),i.command}var k,l=x(c);return k=l.insertMode?i():j(),k===!1?void 0:k===!0?function(){}:function(){return c.operation(function(){c.curOp.isVimOp=!0;try{"keyToKey"==k.type?h(k.toKeys):xb.processCommand(c,l,k)}catch(b){throw c.state.vim=void 0,x(c),a.Vim.suppressErrorLogging||console.log(b),b}return!0})}},handleEx:function(a,b){Ib.processCommand(a,b)},defineMotion:F,defineAction:I,defineOperator:H,mapCommand:Wa,_mapCommand:Va,defineRegister:C,exitVisualMode:ia,exitInsertMode:Ua};z.prototype.pushRepeatDigit=function(a){this.operator?this.motionRepeat=this.motionRepeat.concat(a):this.prefixRepeat=this.prefixRepeat.concat(a)},z.prototype.getRepeat=function(){var a=0;return(this.prefixRepeat.length>0||this.motionRepeat.length>0)&&(a=1,this.prefixRepeat.length>0&&(a*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(a*=parseInt(this.motionRepeat.join(""),10))),a},B.prototype={setText:function(a,b,c){this.keyBuffer=[a||""],this.linewise=!!b,this.blockwise=!!c},pushText:function(a,b){b&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(a)},pushInsertModeChanges:function(a){this.insertModeChanges.push(tb(a))},pushSearchQuery:function(a){this.searchQueries.push(a)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},D.prototype={pushText:function(a,b,c,d,e){d&&"\n"==c.charAt(0)&&(c=c.slice(1)+"\n"),d&&"\n"!==c.charAt(c.length-1)&&(c+="\n");var f=this.isValidRegister(a)?this.getRegister(a):null;if(!f){switch(b){case"yank":this.registers[0]=new B(c,d,e);break;case"delete":case"change":-1==c.indexOf("\n")?this.registers["-"]=new B(c,d):(this.shiftNumericRegisters_(),this.registers[1]=new B(c,d))}return void this.unnamedRegister.setText(c,d,e)}var g=q(a);g?f.pushText(c,d):f.setText(c,d,e),this.unnamedRegister.setText(f.toString(),d)},getRegister:function(a){return this.isValidRegister(a)?(a=a.toLowerCase(),this.registers[a]||(this.registers[a]=new B),this.registers[a]):this.unnamedRegister},isValidRegister:function(a){return a&&s(a,qb)},shiftNumericRegisters_:function(){for(var a=9;a>=2;a--)this.registers[a]=this.getRegister(""+(a-1))}},E.prototype={nextMatch:function(a,b){var c=this.historyBuffer,d=b?-1:1;null===this.initialPrefix&&(this.initialPrefix=a);for(var e=this.iterator+d;b?e>=0:e=c.length?(this.iterator=c.length,this.initialPrefix):0>e?a:void 0},pushInput:function(a){var b=this.historyBuffer.indexOf(a);b>-1&&this.historyBuffer.splice(b,1),a.length&&this.historyBuffer.push(a)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var xb={matchCommand:function(a,b,c,d){var e=N(a,b,d,c);if(!e.full&&!e.partial)return{type:"none"};if(!e.full&&e.partial)return{type:"partial"};for(var f,g=0;g"==f.keys.slice(-11)&&(c.selectedCharacter=P(a)),{type:"full",command:f}},processCommand:function(a,b,c){switch(b.inputState.repeatOverride=c.repeatOverride,c.type){case"motion":this.processMotion(a,b,c);break;case"operator":this.processOperator(a,b,c);break;case"operatorMotion":this.processOperatorMotion(a,b,c);break;case"action":this.processAction(a,b,c);break;case"search":this.processSearch(a,b,c);break;case"ex":case"keyToEx":this.processEx(a,b,c)}},processMotion:function(a,b,c){b.inputState.motion=c.motion,b.inputState.motionArgs=K(c.motionArgs),this.evalInput(a,b)},processOperator:function(a,b,c){var d=b.inputState;if(d.operator){if(d.operator==c.operator)return d.motion="expandToLine",d.motionArgs={linewise:!0},void this.evalInput(a,b);A(a)}d.operator=c.operator,d.operatorArgs=K(c.operatorArgs),b.visualMode&&this.evalInput(a,b)},processOperatorMotion:function(a,b,c){var d=b.visualMode,e=K(c.operatorMotionArgs);e&&d&&e.visualLine&&(b.visualLine=!0),this.processOperator(a,b,c),d||this.processMotion(a,b,c)},processAction:function(a,b,c){var d=b.inputState,e=d.getRepeat(),f=!!e,g=K(c.actionArgs)||{};d.selectedCharacter&&(g.selectedCharacter=d.selectedCharacter),c.operator&&this.processOperator(a,b,c),c.motion&&this.processMotion(a,b,c),(c.motion||c.operator)&&this.evalInput(a,b),g.repeat=e||1,g.repeatIsExplicit=f,g.registerName=d.registerName,A(a),b.lastMotion=null,c.isEdit&&this.recordLastEdit(b,d,c),Ab[c.action](a,g,b)},processSearch:function(b,c,d){function e(a,e,f){ub.searchHistoryController.pushInput(a),ub.searchHistoryController.reset();try{Ma(b,a,e,f)}catch(g){return Ia(b,"Invalid regex: "+a),void A(b)}xb.processMotion(b,c,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:d.searchArgs.toJumplist}})}function f(a){b.scrollTo(m.left,m.top),e(a,!0,!0);var c=ub.macroModeState;c.isRecording&&$a(c,a)}function g(c,d,e){var f,g=a.keyName(c);"Up"==g||"Down"==g?(f="Up"==g?!0:!1,d=ub.searchHistoryController.nextMatch(d,f)||"",e(d)):"Left"!=g&&"Right"!=g&&"Ctrl"!=g&&"Alt"!=g&&"Shift"!=g&&ub.searchHistoryController.reset();var h;try{h=Ma(b,d,!0,!0)}catch(c){}h?b.scrollIntoView(Pa(b,!i,h),30):(Qa(b),b.scrollTo(m.left,m.top))}function h(c,d,e){var f=a.keyName(c);"Esc"==f||"Ctrl-C"==f||"Ctrl-["==f||"Backspace"==f&&""==d?(ub.searchHistoryController.pushInput(d),ub.searchHistoryController.reset(),Ma(b,l),Qa(b),b.scrollTo(m.left,m.top),a.e_stop(c),A(b),e(),b.focus()):"Ctrl-U"==f&&(a.e_stop(c),e(""))}if(b.getSearchCursor){var i=d.searchArgs.forward,j=d.searchArgs.wholeWordOnly;Aa(b).setReversed(!i);var k=i?"/":"?",l=Aa(b).getQuery(),m=b.getScrollInfo();switch(d.searchArgs.querySrc){case"prompt":var n=ub.macroModeState;if(n.isPlaying){var o=n.replaySearchQueries.shift();e(o,!0,!1)}else Ka(b,{onClose:f,prefix:k,desc:Fb,onKeyUp:g,onKeyDown:h});break;case"wordUnderCursor":var p=ma(b,!1,!0,!1,!0),q=!0;if(p||(p=ma(b,!1,!0,!1,!1),q=!1),!p)return;var o=b.getLine(p.start.line).substring(p.start.ch,p.end.ch);o=q&&j?"\\b"+o+"\\b":Z(o),ub.jumpList.cachedCursor=b.getCursor(),b.setCursor(p.start),e(o,!0,!1)}}},processEx:function(b,c,d){function e(a){ub.exCommandHistoryController.pushInput(a),ub.exCommandHistoryController.reset(),Ib.processCommand(b,a)}function f(c,d,e){var f,g=a.keyName(c);("Esc"==g||"Ctrl-C"==g||"Ctrl-["==g||"Backspace"==g&&""==d)&&(ub.exCommandHistoryController.pushInput(d),ub.exCommandHistoryController.reset(),a.e_stop(c),A(b),e(),b.focus()),"Up"==g||"Down"==g?(f="Up"==g?!0:!1,d=ub.exCommandHistoryController.nextMatch(d,f)||"",e(d)):"Ctrl-U"==g?(a.e_stop(c),e("")):"Left"!=g&&"Right"!=g&&"Ctrl"!=g&&"Alt"!=g&&"Shift"!=g&&ub.exCommandHistoryController.reset()}"keyToEx"==d.type?Ib.processCommand(b,d.exArgs.input):c.visualMode?Ka(b,{onClose:e,prefix:":",value:"'<,'>",onKeyDown:f}):Ka(b,{onClose:e,prefix:":",onKeyDown:f})},evalInput:function(a,b){var c,e,f,g=b.inputState,h=g.motion,i=g.motionArgs||{},j=g.operator,k=g.operatorArgs||{},l=g.registerName,m=b.sel,n=R(b.visualMode?J(a,m.head):a.getCursor("head")),o=R(b.visualMode?J(a,m.anchor):a.getCursor("anchor")),p=R(n),q=R(o);if(j&&this.recordLastEdit(b,g),f=void 0!==g.repeatOverride?g.repeatOverride:g.getRepeat(),f>0&&i.explicitRepeat?i.repeatIsExplicit=!0:(i.noRepeat||!i.explicitRepeat&&0===f)&&(f=1,i.repeatIsExplicit=!1),g.selectedCharacter&&(i.selectedCharacter=k.selectedCharacter=g.selectedCharacter),i.repeat=f,A(a),h){var r=yb[h](a,n,i,b);if(b.lastMotion=yb[h],!r)return;if(i.toJumplist){var s=ub.jumpList,t=s.cachedCursor;t?(na(a,t,r),delete s.cachedCursor):na(a,n,r)}r instanceof Array?(e=r[0],c=r[1]):c=r,c||(c=R(n)),b.visualMode?(b.visualBlock&&c.ch===1/0||(c=J(a,c,b.visualBlock)),e&&(e=J(a,e,!0)),e=e||q,m.anchor=e,m.head=c,fa(a),ua(a,b,"<",T(e,c)?e:c),ua(a,b,">",T(e,c)?c:e)):j||(c=J(a,c),a.setCursor(c.line,c.ch))}if(j){if(k.lastSel){e=q;var u=k.lastSel,v=Math.abs(u.head.line-u.anchor.line),w=Math.abs(u.head.ch-u.anchor.ch);c=u.visualLine?d(q.line+v,q.ch):u.visualBlock?d(q.line+v,q.ch+w):u.head.line==u.anchor.line?d(q.line,q.ch+w):d(q.line+v,q.ch),b.visualMode=!0,b.visualLine=u.visualLine,b.visualBlock=u.visualBlock,m=b.sel={anchor:e,head:c},fa(a)}else b.visualMode&&(k.lastSel={anchor:R(m.anchor),head:R(m.head),visualBlock:b.visualBlock,visualLine:b.visualLine});var x,y,z,B,C;if(b.visualMode){if(x=U(m.head,m.anchor),y=V(m.head,m.anchor),z=b.visualLine||k.linewise,B=b.visualBlock?"block":z?"line":"char",C=ga(a,{anchor:x,head:y},B),z){var D=C.ranges;if("block"==B)for(var E=0;Ei&&f.line==j?this.moveToStartOfLine(a,b,c,e):i>k&&f.line==k?this.moveToEol(a,b,c,e):(c.toFirstChar&&(g=la(a.getLine(i)),e.lastHPos=g),e.lastHSPos=a.charCoords(d(i,g),"div").left,d(i,g))},moveByDisplayLines:function(a,b,c,e){var f=b;switch(e.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:e.lastHSPos=a.charCoords(f,"div").left}var g=c.repeat,h=a.findPosV(f,c.forward?g:-g,"line",e.lastHSPos);if(h.hitSide)if(c.forward)var i=a.charCoords(h,"div"),j={top:i.top+8,left:e.lastHSPos},h=a.coordsChar(j,"div");else{var k=a.charCoords(d(a.firstLine(),0),"div");k.left=e.lastHSPos,h=a.coordsChar(k,"div")}return e.lastHPos=h.ch,h},moveByPage:function(a,b,c){var d=b,e=c.repeat;return a.findPosV(d,c.forward?e:-e,"page")},moveByParagraph:function(a,b,c){var d=c.forward?1:-1;return wa(a,b,c.repeat,d)},moveByScroll:function(a,b,c,d){var e=a.getScrollInfo(),f=null,g=c.repeat;g||(g=e.clientHeight/(2*a.defaultTextHeight()));var h=a.charCoords(b,"local");c.repeat=g;var f=yb.moveByDisplayLines(a,b,c,d);if(!f)return null;var i=a.charCoords(f,"local");return a.scrollTo(null,e.top+i.top-h.top),f},moveByWords:function(a,b,c){return ra(a,b,c.repeat,!!c.forward,!!c.wordEnd,!!c.bigWord)},moveTillCharacter:function(a,b,c){var d=c.repeat,e=sa(a,d,c.forward,c.selectedCharacter),f=c.forward?-1:1;return oa(f,c),e?(e.ch+=f,e):null},moveToCharacter:function(a,b,c){var d=c.repeat;return oa(0,c),sa(a,d,c.forward,c.selectedCharacter)||b},moveToSymbol:function(a,b,c){var d=c.repeat;return pa(a,d,c.forward,c.selectedCharacter)||b},moveToColumn:function(a,b,c,d){var e=c.repeat;return d.lastHPos=e-1,d.lastHSPos=a.charCoords(b,"div").left,ta(a,e)},moveToEol:function(a,b,c,e){var f=b;e.lastHPos=1/0;var g=d(f.line+c.repeat-1,1/0),h=a.clipPos(g);return h.ch--,e.lastHSPos=a.charCoords(h,"div").left,g},moveToFirstNonWhiteSpaceCharacter:function(a,b){var c=b;return d(c.line,la(a.getLine(c.line)))},moveToMatchedSymbol:function(a,b){var c,e=b,f=e.line,g=e.ch,h=a.getLine(f);do if(c=h.charAt(g++),c&&o(c)){var i=a.getTokenTypeAt(d(f,g));if("string"!==i&&"comment"!==i)break}while(c);if(c){var j=a.findMatchingBracket(d(f,g));return j.to}return e},moveToStartOfLine:function(a,b){return d(b.line,0)},moveToLineOrEdgeOfDocument:function(a,b,c){var e=c.forward?a.lastLine():a.firstLine();return c.repeatIsExplicit&&(e=c.repeat-a.getOption("firstLineNumber")),d(e,la(a.getLine(e)))},textObjectManipulation:function(a,b,c,d){var e={"(":")",")":"(","{":"}","}":"{","[":"]","]":"["},f={"'":!0,'"':!0},g=c.selectedCharacter;"b"==g?g="(":"B"==g&&(g="{");var h,i=!c.textObjectInner;if(e[g])h=xa(a,b,g,i);else if(f[g])h=ya(a,b,g,i);else if("W"===g)h=ma(a,i,!0,!0);else if("w"===g)h=ma(a,i,!0,!1);else{if("p"!==g)return null;if(h=wa(a,b,c.repeat,0,i),c.linewise=!0,d.visualMode)d.visualLine||(d.visualLine=!0);else{var j=d.inputState.operatorArgs;j&&(j.linewise=!0),h.end.line--}}return a.state.vim.visualMode?ea(a,h.start,h.end):[h.start,h.end]},repeatLastCharacterSearch:function(a,b,c){var d=ub.lastChararacterSearch,e=c.repeat,f=c.forward===d.forward,g=(d.increment?1:0)*(f?-1:1);a.moveH(-g,"char"),c.inclusive=f?!0:!1;var h=sa(a,e,f,d.selectedCharacter);return h?(h.ch+=g,h):(a.moveH(g,"char"),b)}},zb={change:function(b,c,e){var f,g,h=b.state.vim;if(ub.macroModeState.lastInsertModeChanges.inVisualBlock=h.visualBlock,h.visualMode){g=b.getSelection();var i=G("",e.length);b.replaceSelections(i),f=U(e[0].head,e[0].anchor)}else{var j=e[0].anchor,k=e[0].head;g=b.getRange(j,k);var l=h.lastEditInputState||{};if("moveByWords"==l.motion&&!r(g)){var m=/\s+$/.exec(g);m&&l.motionArgs&&l.motionArgs.forward&&(k=L(k,0,-m[0].length),g=g.slice(0,-m[0].length))}var n=new d(j.line-1,Number.MAX_VALUE),o=b.firstLine()==b.lastLine();k.line>b.lastLine()&&c.linewise&&!o?b.replaceRange("",n,k):b.replaceRange("",j,k),c.linewise&&(o||(b.setCursor(n),a.commands.newlineAndIndent(b)),j.ch=Number.MAX_VALUE),f=j}ub.registerController.pushText(c.registerName,"change",g,c.linewise,e.length>1),Ab.enterInsertMode(b,{head:f},b.state.vim)},"delete":function(a,b,c){var e,f,g=a.state.vim;if(g.visualBlock){f=a.getSelection();var h=G("",c.length);a.replaceSelections(h),e=c[0].anchor}else{var i=c[0].anchor,j=c[0].head;b.linewise&&j.line!=a.firstLine()&&i.line==a.lastLine()&&i.line==j.line-1&&(i.line==a.firstLine()?i.ch=0:i=d(i.line-1,X(a,i.line-1))),f=a.getRange(i,j),a.replaceRange("",i,j),e=i,b.linewise&&(e=yb.moveToFirstNonWhiteSpaceCharacter(a,i))}return ub.registerController.pushText(b.registerName,"delete",f,b.linewise,g.visualBlock),J(a,e)},indent:function(a,b,c){var d=a.state.vim,e=c[0].anchor.line,f=d.visualBlock?c[c.length-1].anchor.line:c[0].head.line,g=d.visualMode?b.repeat:1;b.linewise&&f--;for(var h=e;f>=h;h++)for(var i=0;g>i;i++)a.indentLine(h,b.indentRight);return yb.moveToFirstNonWhiteSpaceCharacter(a,c[0].anchor)},changeCase:function(a,b,c,d,e){for(var f=a.getSelections(),g=[],h=b.toLower,i=0;ij.top?(i.line+=(h-j.top)/e,i.line=Math.ceil(i.line),a.setCursor(i),j=a.charCoords(i,"local"),a.scrollTo(null,j.top)):a.scrollTo(null,h);else{var k=h+a.getScrollInfo().clientHeight;k=g.anchor.line?L(g.head,0,1):d(g.anchor.line,0);else if("inplace"==f&&e.visualMode)return;b.setOption("keyMap","vim-insert"),b.setOption("disableInput",!1),c&&c.replace?(b.toggleOverwrite(!0),b.setOption("keyMap","vim-replace"),a.signal(b,"vim-mode-change",{mode:"replace"})):(b.setOption("keyMap","vim-insert"),a.signal(b,"vim-mode-change",{mode:"insert"})),ub.macroModeState.isPlaying||(b.on("change",_a),a.on(b.getInputField(),"keydown",eb)),e.visualMode&&ia(b),aa(b,h,i)}},toggleVisualMode:function(b,c,e){var f,g=c.repeat,h=b.getCursor();e.visualMode?e.visualLine^c.linewise||e.visualBlock^c.blockwise?(e.visualLine=!!c.linewise,e.visualBlock=!!c.blockwise,a.signal(b,"vim-mode-change",{mode:"visual",subMode:e.visualLine?"linewise":e.visualBlock?"blockwise":""}),fa(b)):ia(b):(e.visualMode=!0,e.visualLine=!!c.linewise,e.visualBlock=!!c.blockwise,f=J(b,d(h.line,h.ch+g-1),!0),e.sel={anchor:h,head:f},a.signal(b,"vim-mode-change",{mode:"visual",subMode:e.visualLine?"linewise":e.visualBlock?"blockwise":""}),fa(b),ua(b,e,"<",U(h,f)),ua(b,e,">",V(h,f)))},reselectLastSelection:function(b,c,d){var e=d.lastSelection;if(d.visualMode&&da(b,d),e){var f=e.anchorMark.find(),g=e.headMark.find();if(!f||!g)return;d.sel={anchor:f,head:g},d.visualMode=!0,d.visualLine=e.visualLine,d.visualBlock=e.visualBlock,fa(b),ua(b,d,"<",U(f,g)),ua(b,d,">",V(f,g)),a.signal(b,"vim-mode-change",{mode:"visual",subMode:d.visualLine?"linewise":d.visualBlock?"blockwise":""})}},joinLines:function(a,b,c){var e,f;if(c.visualMode){if(e=a.getCursor("anchor"),f=a.getCursor("head"),T(f,e)){var g=f;f=e,e=g}f.ch=X(a,f.line)-1}else{var h=Math.max(b.repeat,2);e=a.getCursor(),f=J(a,d(e.line+h-1,1/0))}for(var i=0,j=e.line;jc)return"";if(a.getOption("indentWithTabs")){var d=Math.floor(c/h);return Array(d+1).join(" ")}return Array(c+1).join(" ")});g+=m?"\n":""}if(b.repeat>1)var g=Array(b.repeat+1).join(g);var o=f.linewise,p=f.blockwise;if(o)c.visualMode?g=c.visualLine?g.slice(0,-1):"\n"+g.slice(0,g.length-1)+"\n":b.after?(g="\n"+g.slice(0,g.length-1),e.ch=X(a,e.line)):e.ch=0;else{if(p){g=g.split("\n");for(var q=0;qa.lastLine()&&a.replaceRange("\n",d(A,0));var B=X(a,A);Bk.length&&(f=k.length),g=d(i.line,f)}if("\n"==h)e.visualMode||b.replaceRange("",i,g),(a.commands.newlineAndIndentContinueComment||a.commands.newlineAndIndent)(b);else{var l=b.getRange(i,g);if(l=l.replace(/[^\n]/g,h),e.visualBlock){var m=new Array(b.getOption("tabSize")+1).join(" ");l=b.getSelection(),l=l.replace(/\t/g,m).replace(/[^\n]/g,h).split("\n"),b.replaceSelections(l)}else b.replaceRange(l,i,g);e.visualMode?(i=T(j[0].anchor,j[0].head)?j[0].anchor:j[0].head,b.setCursor(i),ia(b,!1)):b.setCursor(L(g,0,-1))}},incrementNumberToken:function(a,b){for(var c,e,f,g,h,i=a.getCursor(),j=a.getLine(i.line),k=/-?\d+/g;null!==(c=k.exec(j))&&(h=c[0],e=c.index,f=e+h.length,!(i.ch=1)return!0}else a.nextCh===a.reverseSymb&&a.depth--;return!1}},section:{init:function(a){a.curMoveThrough=!0,a.symb=(a.forward?"]":"[")===a.symb?"{":"}"},isComplete:function(a){return 0===a.index&&a.nextCh===a.symb}},comment:{isComplete:function(a){var b="*"===a.lastCh&&"/"===a.nextCh;return a.lastCh=a.nextCh,b}},method:{init:function(a){a.symb="m"===a.symb?"{":"}",a.reverseSymb="{"===a.symb?"}":"{"},isComplete:function(a){return a.nextCh===a.symb?!0:!1}},preprocess:{init:function(a){a.index=0},isComplete:function(a){if("#"===a.nextCh){var b=a.lineText.match(/#(\w+)/)[1];if("endif"===b){if(a.forward&&0===a.depth)return!0;a.depth++}else if("if"===b){if(!a.forward&&0===a.depth)return!0;a.depth--}if("else"===b&&0===a.depth)return!0}return!1}}};t("pcre",!0,"boolean"),za.prototype={getQuery:function(){return ub.query},setQuery:function(a){ub.query=a},getOverlay:function(){return this.searchOverlay},setOverlay:function(a){this.searchOverlay=a},isReversed:function(){return ub.isReversed},setReversed:function(a){ub.isReversed=a},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(a){this.annotate=a}};var Db={"\\n":"\n","\\r":"\r","\\t":" "},Eb={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":" "},Fb="(Javascript regexp)",Gb=function(){this.buildCommandMap_()};Gb.prototype={processCommand:function(a,b,c){var d=this;a.operation(function(){a.curOp.isVimOp=!0,d._processCommand(a,b,c)})},_processCommand:function(b,c,d){var e=b.state.vim,f=ub.registerController.getRegister(":"),g=f.toString();e.visualMode&&ia(b);var h=new a.StringStream(c);f.setText(c);var i=d||{};i.input=c;try{this.parseInput_(b,h,i)}catch(j){throw Ia(b,j),j}var k,l;if(i.commandName){if(k=this.matchCommand_(i.commandName)){if(l=k.name,k.excludeFromCommandHistory&&f.setText(g),this.parseCommandArgs_(h,i,k),"exToKey"==k.type){for(var m=0;m0;b--){var c=a.substring(0,b);if(this.commandMap_[c]){var d=this.commandMap_[c];if(0===d.name.indexOf(a))return d}}return null},buildCommandMap_:function(){this.commandMap_={};for(var a=0;a
    ";if(c){var f;c=c.join("");for(var g=0;g"}}else for(var f in d){var i=d[f].toString();i.length&&(e+='"'+f+" "+i+"
    ")}Ia(a,e)},sort:function(b,c){function e(){if(c.argString){var b=new a.StringStream(c.argString);if(b.eat("!")&&(g=!0),b.eol())return;if(!b.eatSpace())return"Invalid arguments";var d=b.match(/[a-z]+/);if(d){d=d[0],h=-1!=d.indexOf("i"),i=-1!=d.indexOf("u");var e=-1!=d.indexOf("d")&&1,f=-1!=d.indexOf("x")&&1,k=-1!=d.indexOf("o")&&1;if(e+f+k>1)return"Invalid arguments";j=e&&"decimal"||f&&"hex"||k&&"octal"}if(b.match(/\/.*\//))return"patterns not supported"}}function f(a,b){if(g){var c;c=a,a=b,b=c}h&&(a=a.toLowerCase(),b=b.toLowerCase());var d=j&&q.exec(a),e=j&&q.exec(b);return d?(d=parseInt((d[1]+d[2]).toLowerCase(),r),e=parseInt((e[1]+e[2]).toLowerCase(),r),d-e):b>a?-1:1}var g,h,i,j,k=e();if(k)return void Ia(b,k+": "+c.argString);var l=c.line||b.firstLine(),m=c.lineEnd||c.line||b.lastLine();if(l!=m){var n=d(l,0),o=d(m,X(b,m)),p=b.getRange(n,o).split("\n"),q="decimal"==j?/(-?)([\d]+)/:"hex"==j?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==j?/([0-7]+)/:null,r="decimal"==j?10:"hex"==j?16:"octal"==j?8:null,s=[],t=[];if(j)for(var u=0;u=m;m++){var n=j.test(a.getLine(m));n&&(k.push(m+1),l+=a.getLine(m)+"
    ")}if(!d)return void Ia(a,l);var o=0,p=function(){if(o=k)return void Ia(b,"Invalid argument: "+c.argString.substring(f));for(var l=0;k-j>=l;l++){var m=String.fromCharCode(j+l);delete d.marks[m]}}else delete d.marks[g]}}},Ib=new Gb;return a.keyMap.vim={attach:h,detach:g,call:i},t("insertModeEscKeysTimeout",200,"number"),a.keyMap["vim-insert"]={"Ctrl-N":"autocomplete","Ctrl-P":"autocomplete",Enter:function(b){var c=a.commands.newlineAndIndentContinueComment||a.commands.newlineAndIndent;c(b)},fallthrough:["default"],attach:h,detach:g,call:i},a.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:h,detach:g,call:i},y(),wb};a.Vim=e()}); \ No newline at end of file diff --git a/media/editors/codemirror/lib/codemirror.js b/media/editors/codemirror/lib/codemirror.js index e803211bc21cf..4779d12de4008 100644 --- a/media/editors/codemirror/lib/codemirror.js +++ b/media/editors/codemirror/lib/codemirror.js @@ -747,6 +747,7 @@ function postUpdateDisplay(cm, update) { var viewport = update.viewport; + for (var first = true;; first = false) { if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { // Clip forced viewport to actual scrollable area. @@ -766,6 +767,9 @@ updateScrollbars(cm, barMeasure); } + if (parseInt(cm.display.gutters.style.height) > cm.display.scroller.clientHeight) + cm.display.gutters.style.height = cm.display.scroller.clientHeight + "px" + update.signal(cm, "update", cm); if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); @@ -2258,13 +2262,15 @@ if (oldPos) { var near = m.find(dir < 0 ? 1 : -1), diff; - if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft) near = movePos(doc, near, -dir, line); + if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft) + near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) return skipAtomicInner(doc, near, pos, dir, mayClear); } var far = m.find(dir < 0 ? -1 : 1); - if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight) far = movePos(doc, far, dir, line); + if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight) + far = movePos(doc, far, dir, far.line == pos.line ? line : null); return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null; } } @@ -2311,6 +2317,7 @@ for (var i = 0; i < doc.sel.ranges.length; i++) { if (primary === false && i == doc.sel.primIndex) continue; var range = doc.sel.ranges[i]; + if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) continue; var collapsed = range.empty(); if (collapsed || cm.options.showCursorWhenSelecting) drawSelectionCursor(cm, range.head, curFragment); @@ -3492,7 +3499,7 @@ over: function(e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }}, start: function(e){onDragStart(cm, e);}, drop: operation(cm, onDrop), - leave: function() {clearDragCursor(cm);} + leave: function(e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }} }; var inp = d.input.getField(); @@ -7622,9 +7629,9 @@ var spans = line.markedSpans; if (spans) for (var i = 0; i < spans.length; i++) { var span = spans[i]; - if (!(lineNo == from.line && from.ch > span.to || - span.from == null && lineNo != from.line|| - lineNo == to.line && span.from > to.ch) && + if (!(span.to != null && lineNo == from.line && from.ch > span.to || + span.from == null && lineNo != from.line || + span.from != null && lineNo == to.line && span.from > to.ch) && (!filter || filter(span.marker))) found.push(span.marker.parent || span.marker); } @@ -8886,7 +8893,7 @@ // THE END - CodeMirror.version = "5.12.0"; + CodeMirror.version = "5.13.0"; return CodeMirror; }); diff --git a/media/editors/codemirror/lib/codemirror.min.js b/media/editors/codemirror/lib/codemirror.min.js index 9bad4516016f2..190a0f52c1876 100644 --- a/media/editors/codemirror/lib/codemirror.min.js +++ b/media/editors/codemirror/lib/codemirror.min.js @@ -1,5 +1,5 @@ -!function(a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else{if("function"==typeof define&&define.amd)return define([],a);(this||window).CodeMirror=a()}}(function(){"use strict";function a(c,d){if(!(this instanceof a))return new a(c,d);this.options=d=d?Ke(d):{},Ke($f,d,!1),n(d);var e=d.value;"string"==typeof e&&(e=new wg(e,d.mode,null,d.lineSeparator)),this.doc=e;var f=new a.inputStyles[d.inputStyle](this),g=this.display=new b(c,e,f);g.wrapper.CodeMirror=this,j(this),h(this),d.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),d.autofocus&&!Cf&&g.input.focus(),r(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new De,keySeq:null,specialChars:null};var i=this;sf&&11>tf&&setTimeout(function(){i.display.input.reset(!0)},20),Qb(this),We(),ub(this),this.curOp.forceUpdate=!0,Xd(this,e),d.autofocus&&!Cf||i.hasFocus()?setTimeout(Le(qc,this),20):rc(this);for(var k in _f)_f.hasOwnProperty(k)&&_f[k](this,d[k],ag);w(this),d.finishInit&&d.finishInit(this);for(var l=0;ltf&&(d.gutters.style.zIndex=-1,d.scroller.style.paddingRight=0),uf||pf&&Cf||(d.scroller.draggable=!0),a&&(a.appendChild?a.appendChild(d.wrapper):a(d.wrapper)),d.viewFrom=d.viewTo=b.first,d.reportedViewFrom=d.reportedViewTo=b.first,d.view=[],d.renderedView=null,d.externalMeasured=null,d.viewOffset=0,d.lastWrapHeight=d.lastWrapWidth=0,d.updateLineNumbers=null,d.nativeBarWidth=d.barHeight=d.barWidth=0,d.scrollbarsClipped=!1,d.lineNumWidth=d.lineNumInnerWidth=d.lineNumChars=null,d.alignWidgets=!1,d.cachedCharWidth=d.cachedTextHeight=d.cachedPaddingH=null,d.maxLine=null,d.maxLineLength=0,d.maxLineChanged=!1,d.wheelDX=d.wheelDY=d.wheelStartX=d.wheelStartY=null,d.shift=!1,d.selForContextMenu=null,d.activeTouch=null,c.init(d)}function c(b){b.doc.mode=a.getMode(b.options,b.doc.modeOption),d(b)}function d(a){a.doc.iter(function(a){a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null)}),a.doc.frontier=a.doc.first,Na(a,100),a.state.modeGen++,a.curOp&&Jb(a)}function e(a){a.options.lineWrapping?(Yg(a.display.wrapper,"CodeMirror-wrap"),a.display.sizer.style.minWidth="",a.display.sizerWidth=null):(Xg(a.display.wrapper,"CodeMirror-wrap"),m(a)),g(a),Jb(a),hb(a),setTimeout(function(){s(a)},100)}function f(a){var b=sb(a.display),c=a.options.lineWrapping,d=c&&Math.max(5,a.display.scroller.clientWidth/tb(a.display)-3);return function(e){if(vd(a.doc,e))return 0;var f=0;if(e.widgets)for(var g=0;gb.maxLineLength&&(b.maxLineLength=c,b.maxLine=a)})}function n(a){var b=Ge(a.gutters,"CodeMirror-linenumbers");-1==b&&a.lineNumbers?a.gutters=a.gutters.concat(["CodeMirror-linenumbers"]):b>-1&&!a.lineNumbers&&(a.gutters=a.gutters.slice(0),a.gutters.splice(b,1))}function o(a){var b=a.display,c=b.gutters.offsetWidth,d=Math.round(a.doc.height+Sa(a.display));return{clientHeight:b.scroller.clientHeight,viewHeight:b.wrapper.clientHeight,scrollWidth:b.scroller.scrollWidth,clientWidth:b.scroller.clientWidth,viewWidth:b.wrapper.clientWidth,barLeft:a.options.fixedGutter?c:0,docHeight:d,scrollHeight:d+Ua(a)+b.barHeight,nativeBarWidth:b.nativeBarWidth,gutterWidth:c}}function p(a,b,c){this.cm=c;var d=this.vert=Pe("div",[Pe("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),e=this.horiz=Pe("div",[Pe("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");a(d),a(e),Cg(d,"scroll",function(){d.clientHeight&&b(d.scrollTop,"vertical")}),Cg(e,"scroll",function(){e.clientWidth&&b(e.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,sf&&8>tf&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")}function q(){}function r(b){b.display.scrollbars&&(b.display.scrollbars.clear(),b.display.scrollbars.addClass&&Xg(b.display.wrapper,b.display.scrollbars.addClass)),b.display.scrollbars=new a.scrollbarModel[b.options.scrollbarStyle](function(a){b.display.wrapper.insertBefore(a,b.display.scrollbarFiller),Cg(a,"mousedown",function(){b.state.focused&&setTimeout(function(){b.display.input.focus()},0)}),a.setAttribute("cm-not-content","true")},function(a,c){"horizontal"==c?ec(b,a):dc(b,a)},b),b.display.scrollbars.addClass&&Yg(b.display.wrapper,b.display.scrollbars.addClass)}function s(a,b){b||(b=o(a));var c=a.display.barWidth,d=a.display.barHeight;t(a,b);for(var e=0;4>e&&c!=a.display.barWidth||d!=a.display.barHeight;e++)c!=a.display.barWidth&&a.options.lineWrapping&&F(a),t(a,o(a)),c=a.display.barWidth,d=a.display.barHeight}function t(a,b){var c=a.display,d=c.scrollbars.update(b);c.sizer.style.paddingRight=(c.barWidth=d.right)+"px",c.sizer.style.paddingBottom=(c.barHeight=d.bottom)+"px",c.heightForcer.style.borderBottom=d.bottom+"px solid transparent",d.right&&d.bottom?(c.scrollbarFiller.style.display="block",c.scrollbarFiller.style.height=d.bottom+"px",c.scrollbarFiller.style.width=d.right+"px"):c.scrollbarFiller.style.display="",d.bottom&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(c.gutterFiller.style.display="block",c.gutterFiller.style.height=d.bottom+"px",c.gutterFiller.style.width=b.gutterWidth+"px"):c.gutterFiller.style.display=""}function u(a,b,c){var d=c&&null!=c.top?Math.max(0,c.top):a.scroller.scrollTop;d=Math.floor(d-Ra(a));var e=c&&null!=c.bottom?c.bottom:d+a.wrapper.clientHeight,f=be(b,d),g=be(b,e);if(c&&c.ensure){var h=c.ensure.from.line,i=c.ensure.to.line;f>h?(f=h,g=be(b,ce(Yd(b,h))+a.wrapper.clientHeight)):Math.min(i,b.lastLine())>=g&&(f=be(b,ce(Yd(b,i))-a.wrapper.clientHeight),g=i)}return{from:f,to:Math.max(g,f+1)}}function v(a){var b=a.display,c=b.view;if(b.alignWidgets||b.gutters.firstChild&&a.options.fixedGutter){for(var d=y(b)-b.scroller.scrollLeft+a.doc.scrollLeft,e=b.gutters.offsetWidth,f=d+"px",g=0;g=c.viewFrom&&b.visible.to<=c.viewTo&&(null==c.updateLineNumbers||c.updateLineNumbers>=c.viewTo)&&c.renderedView==c.view&&0==Pb(a))return!1;w(a)&&(Lb(a),b.dims=H(a));var e=d.first+d.size,f=Math.max(b.visible.from-a.options.viewportMargin,d.first),g=Math.min(e,b.visible.to+a.options.viewportMargin);c.viewFromg&&c.viewTo-g<20&&(g=Math.min(e,c.viewTo)),Jf&&(f=td(a.doc,f),g=ud(a.doc,g));var h=f!=c.viewFrom||g!=c.viewTo||c.lastWrapHeight!=b.wrapperHeight||c.lastWrapWidth!=b.wrapperWidth;Ob(a,f,g),c.viewOffset=ce(Yd(a.doc,c.viewFrom)),a.display.mover.style.top=c.viewOffset+"px";var i=Pb(a);if(!h&&0==i&&!b.force&&c.renderedView==c.view&&(null==c.updateLineNumbers||c.updateLineNumbers>=c.viewTo))return!1;var j=Se();return i>4&&(c.lineDiv.style.display="none"),I(a,c.updateLineNumbers,b.dims),i>4&&(c.lineDiv.style.display=""),c.renderedView=c.view,j&&Se()!=j&&j.offsetHeight&&j.focus(),Qe(c.cursorDiv),Qe(c.selectionDiv),c.gutters.style.height=c.sizer.style.minHeight=0,h&&(c.lastWrapHeight=b.wrapperHeight,c.lastWrapWidth=b.wrapperWidth,Na(a,400)),c.updateLineNumbers=null,!0}function C(a,b){for(var c=b.viewport,d=!0;(d&&a.options.lineWrapping&&b.oldDisplayWidth!=Va(a)||(c&&null!=c.top&&(c={top:Math.min(a.doc.height+Sa(a.display)-Wa(a),c.top)}),b.visible=u(a.display,a.doc,c),!(b.visible.from>=a.display.viewFrom&&b.visible.to<=a.display.viewTo)))&&B(a,b);d=!1){F(a);var e=o(a);Ia(a),E(a,e),s(a,e)}b.signal(a,"update",a),(a.display.viewFrom!=a.display.reportedViewFrom||a.display.viewTo!=a.display.reportedViewTo)&&(b.signal(a,"viewportChange",a,a.display.viewFrom,a.display.viewTo),a.display.reportedViewFrom=a.display.viewFrom,a.display.reportedViewTo=a.display.viewTo)}function D(a,b){var c=new z(a,b);if(B(a,c)){F(a),C(a,c);var d=o(a);Ia(a),E(a,d),s(a,d),c.finish()}}function E(a,b){a.display.sizer.style.minHeight=b.docHeight+"px",a.display.heightForcer.style.top=b.docHeight+"px",a.display.gutters.style.height=Math.max(b.docHeight+a.display.barHeight+Ua(a),b.clientHeight)+"px"}function F(a){for(var b=a.display,c=b.lineDiv.offsetTop,d=0;dtf){var g=f.node.offsetTop+f.node.offsetHeight;e=g-c,c=g}else{var h=f.node.getBoundingClientRect();e=h.bottom-h.top}var i=f.line.height-e;if(2>e&&(e=sb(b)),(i>.001||-.001>i)&&(_d(f.line,e),G(f.line),f.rest))for(var j=0;j=b&&l.lineNumber;l.changes&&(Ge(l.changes,"gutter")>-1&&(m=!1),J(a,l,j,c)),m&&(Qe(l.lineNumber),l.lineNumber.appendChild(document.createTextNode(x(a.options,j)))),h=l.node.nextSibling}else{var n=R(a,l,j,c);g.insertBefore(n,h)}j+=l.size}for(;h;)h=d(h)}function J(a,b,c,d){for(var e=0;etf&&(a.node.style.zIndex=2)),a.node}function L(a){var b=a.bgClass?a.bgClass+" "+(a.line.bgClass||""):a.line.bgClass;if(b&&(b+=" CodeMirror-linebackground"),a.background)b?a.background.className=b:(a.background.parentNode.removeChild(a.background),a.background=null);else if(b){var c=K(a);a.background=c.insertBefore(Pe("div",null,b),c.firstChild)}}function M(a,b){var c=a.display.externalMeasured;return c&&c.line==b.line?(a.display.externalMeasured=null,b.measure=c.measure,c.built):Ld(a,b)}function N(a,b){var c=b.text.className,d=M(a,b);b.text==b.node&&(b.node=d.pre),b.text.parentNode.replaceChild(d.pre,b.text),b.text=d.pre,d.bgClass!=b.bgClass||d.textClass!=b.textClass?(b.bgClass=d.bgClass,b.textClass=d.textClass,O(b)):c&&(b.text.className=c)}function O(a){L(a),a.line.wrapClass?K(a).className=a.line.wrapClass:a.node!=a.text&&(a.node.className="");var b=a.textClass?a.textClass+" "+(a.line.textClass||""):a.line.textClass;a.text.className=b||""}function P(a,b,c,d){if(b.gutter&&(b.node.removeChild(b.gutter),b.gutter=null),b.gutterBackground&&(b.node.removeChild(b.gutterBackground),b.gutterBackground=null),b.line.gutterClass){var e=K(b);b.gutterBackground=Pe("div",null,"CodeMirror-gutter-background "+b.line.gutterClass,"left: "+(a.options.fixedGutter?d.fixedPos:-d.gutterTotalWidth)+"px; width: "+d.gutterTotalWidth+"px"),e.insertBefore(b.gutterBackground,b.text)}var f=b.line.gutterMarkers;if(a.options.lineNumbers||f){var e=K(b),g=b.gutter=Pe("div",null,"CodeMirror-gutter-wrapper","left: "+(a.options.fixedGutter?d.fixedPos:-d.gutterTotalWidth)+"px");if(a.display.input.setUneditable(g),e.insertBefore(g,b.text),b.line.gutterClass&&(g.className+=" "+b.line.gutterClass),!a.options.lineNumbers||f&&f["CodeMirror-linenumbers"]||(b.lineNumber=g.appendChild(Pe("div",x(a.options,c),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+d.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+a.display.lineNumInnerWidth+"px"))),f)for(var h=0;h1)if(Mf&&Mf.join("\n")==b){if(d.ranges.length%Mf.length==0){i=[];for(var j=0;j=0;j--){var k=d.ranges[j],l=k.from(),m=k.to();k.empty()&&(c&&c>0?l=Kf(l.line,l.ch-c):a.state.overwrite&&!g&&(m=Kf(m.line,Math.min(Yd(f,m.line).text.length,m.ch+Fe(h).length))));var n=a.curOp.updateInput,o={from:l,to:m,text:i?i[j%i.length]:h,origin:e||(g?"paste":a.state.cutIncoming?"cut":"+input")};zc(a.doc,o),xe(a,"inputRead",a,o)}b&&!g&&_(a,b),Lc(a),a.curOp.updateInput=n,a.curOp.typing=!0,a.state.pasteIncoming=a.state.cutIncoming=!1}function $(a,b){var c=a.clipboardData&&a.clipboardData.getData("text/plain");return c?(a.preventDefault(),b.isReadOnly()||b.options.disableInput||Db(b,function(){Z(b,c,0,null,"paste")}),!0):void 0}function _(a,b){if(a.options.electricChars&&a.options.smartIndent)for(var c=a.doc.sel,d=c.ranges.length-1;d>=0;d--){var e=c.ranges[d];if(!(e.head.ch>100||d&&c.ranges[d-1].head.line==e.head.line)){var f=a.getModeAt(e.head),g=!1;if(f.electricChars){for(var h=0;h-1){g=Nc(a,e.head.line,"smart");break}}else f.electricInput&&f.electricInput.test(Yd(a.doc,e.head.line).text.slice(0,e.head.ch))&&(g=Nc(a,e.head.line,"smart"));g&&xe(a,"electricInput",a,e.head.line)}}}function aa(a){for(var b=[],c=[],d=0;de?j.map:k[e],g=0;ge?a.line:a.rest[e]),l=f[g]+d;return(0>d||h!=b)&&(l=f[g+(d?1:0)]),Kf(i,l)}}}var e=a.text.firstChild,f=!1;if(!b||!Ug(e,b))return ga(Kf(ae(a.line),0),!0);if(b==e&&(f=!0,b=e.childNodes[c],c=0,!b)){var g=a.rest?Fe(a.rest):a.line;return ga(Kf(ae(g),g.text.length),f)}var h=3==b.nodeType?b:null,i=b;for(h||1!=b.childNodes.length||3!=b.firstChild.nodeType||(h=b.firstChild,c&&(c=h.nodeValue.length));i.parentNode!=e;)i=i.parentNode;var j=a.measure,k=j.maps,l=d(h,i,c);if(l)return ga(l,f);for(var m=i.nextSibling,n=h?h.nodeValue.length-c:0;m;m=m.nextSibling){if(l=d(m,m.firstChild,0))return ga(Kf(l.line,l.ch-n),f);n+=m.textContent.length}for(var o=i.previousSibling,n=c;o;o=o.previousSibling){if(l=d(o,o.firstChild,-1))return ga(Kf(l.line,l.ch+n),f);n+=m.textContent.length}}function ja(a,b,c,d,e){function f(a){return function(b){return b.id==a}}function g(b){if(1==b.nodeType){var c=b.getAttribute("cm-text");if(null!=c)return""==c&&(c=b.textContent.replace(/\u200b/g,"")),void(h+=c);var k,l=b.getAttribute("cm-marker");if(l){var m=a.findMarks(Kf(d,0),Kf(e+1,0),f(+l));return void(m.length&&(k=m[0].find())&&(h+=Zd(a.doc,k.from,k.to).join(j)))}if("false"==b.getAttribute("contenteditable"))return;for(var n=0;n=0){var g=X(f.from(),e.from()),h=W(f.to(),e.to()),i=f.empty()?e.from()==e.head:f.from()==f.head;b>=d&&--b,a.splice(--d,2,new la(i?h:g,i?g:h))}}return new ka(a,b)}function na(a,b){return new ka([new la(a,b||a)],0)}function oa(a,b){return Math.max(a.first,Math.min(b,a.first+a.size-1))}function pa(a,b){if(b.linec?Kf(c,Yd(a,c).text.length):qa(b,Yd(a,b.line).text.length)}function qa(a,b){var c=a.ch;return null==c||c>b?Kf(a.line,b):0>c?Kf(a.line,0):a}function ra(a,b){return b>=a.first&&b=b.ch:h.to>b.ch))){if(e&&(Fg(i,"beforeCursorEnter"),i.explicitlyCleared)){if(f.markedSpans){--g;continue}break}if(!i.atomic)continue;if(c){var j,k=i.find(0>d?1:-1);if((0>d?i.inclusiveRight:i.inclusiveLeft)&&(k=Ha(a,k,-d,f)),k&&k.line==b.line&&(j=Lf(k,c))&&(0>d?0>j:j>0))return Fa(a,k,b,d,e)}var l=i.find(0>d?-1:1);return(0>d?i.inclusiveLeft:i.inclusiveRight)&&(l=Ha(a,l,d,f)),l?Fa(a,l,b,d,e):null}}return b}function Ga(a,b,c,d,e){var f=d||1,g=Fa(a,b,c,f,e)||!e&&Fa(a,b,c,f,!0)||Fa(a,b,c,-f,e)||!e&&Fa(a,b,c,-f,!0);return g?g:(a.cantEdit=!0,Kf(a.first,0))}function Ha(a,b,c,d){return 0>c&&0==b.ch?b.line>a.first?pa(a,Kf(b.line-1)):null:c>0&&b.ch==(d||Yd(a,b.line)).text.length?b.lineb&&(b=0),b=Math.round(b),d=Math.round(d),h.appendChild(Pe("div",null,"CodeMirror-selected","position: absolute; left: "+a+"px; top: "+b+"px; width: "+(null==c?k-a:c)+"px; height: "+(d-b)+"px"))}function e(b,c,e){function f(c,d){return mb(a,Kf(b,c),"div",l,d)}var h,i,l=Yd(g,b),m=l.text.length;return _e(de(l),c||0,null==e?m:e,function(a,b,g){var l,n,o,p=f(a,"left");if(a==b)l=p,n=o=p.left;else{if(l=f(b-1,"right"),"rtl"==g){var q=p;p=l,l=q}n=p.left,o=l.right}null==c&&0==a&&(n=j),l.top-p.top>3&&(d(n,p.top,null,p.bottom),n=j,p.bottomi.bottom||l.bottom==i.bottom&&l.right>i.right)&&(i=l),j+1>n&&(n=j),d(n,l.top,o-n,l.bottom)}),{start:h,end:i}}var f=a.display,g=a.doc,h=document.createDocumentFragment(),i=Ta(a.display),j=i.left,k=Math.max(f.sizerWidth,Va(a)-f.sizer.offsetLeft)-i.right,l=b.from(),m=b.to();if(l.line==m.line)e(l.line,l.ch,m.ch);else{var n=Yd(g,l.line),o=Yd(g,m.line),p=rd(n)==rd(o),q=e(l.line,l.ch,p?n.text.length+1:null).end,r=e(m.line,p?0:null,m.ch).start;p&&(q.top0?b.blinker=setInterval(function(){b.cursorDiv.style.visibility=(c=!c)?"":"hidden"},a.options.cursorBlinkRate):a.options.cursorBlinkRate<0&&(b.cursorDiv.style.visibility="hidden")}}function Na(a,b){a.doc.mode.startState&&a.doc.frontier=a.display.viewTo)){var c=+new Date+a.options.workTime,d=gg(b.mode,Qa(a,b.frontier)),e=[];b.iter(b.frontier,Math.min(b.first+b.size,a.display.viewTo+500),function(f){if(b.frontier>=a.display.viewFrom){var g=f.styles,h=f.text.length>a.options.maxHighlightLength,i=Hd(a,f,h?gg(b.mode,d):d,!0);f.styles=i.styles;var j=f.styleClasses,k=i.classes;k?f.styleClasses=k:j&&(f.styleClasses=null);for(var l=!g||g.length!=f.styles.length||j!=k&&(!j||!k||j.bgClass!=k.bgClass||j.textClass!=k.textClass),m=0;!l&&mc?(Na(a,a.options.workDelay),!0):void 0}),e.length&&Db(a,function(){for(var b=0;bg;--h){if(h<=f.first)return f.first;var i=Yd(f,h-1);if(i.stateAfter&&(!c||h<=f.frontier))return h;var j=Mg(i.text,null,a.options.tabSize);(null==e||d>j)&&(e=h-1,d=j)}return e}function Qa(a,b,c){var d=a.doc,e=a.display;if(!d.mode.startState)return!0;var f=Pa(a,b,c),g=f>d.first&&Yd(d,f-1).stateAfter;return g=g?gg(d.mode,g):hg(d.mode),d.iter(f,b,function(c){Jd(a,c.text,g);var h=f==b-1||f%5==0||f>=e.viewFrom&&f2&&f.push((i.bottom+j.top)/2-c.top)}}f.push(c.bottom-c.top)}}function Ya(a,b,c){if(a.line==b)return{map:a.measure.map,cache:a.measure.cache};for(var d=0;dc)return{map:a.measure.maps[d],cache:a.measure.caches[d],before:!0}}function Za(a,b){b=rd(b);var c=ae(b),d=a.display.externalMeasured=new Hb(a.doc,b,c);d.lineN=c;var e=d.built=Ld(a,d);return d.text=e.pre,Re(a.display.lineMeasure,e.pre),d}function $a(a,b,c,d){return bb(a,ab(a,b),c,d)}function _a(a,b){if(b>=a.display.viewFrom&&b=c.lineN&&bb?(e=0,f=1,g="left"):j>b?(e=b-i,f=e+1):(h==a.length-3||b==j&&a[h+3]>b)&&(f=j-i,e=f-1,b>=j&&(g="right")),null!=e){if(d=a[h+2],i==j&&c==(d.insertLeft?"left":"right")&&(g=c),"left"==c&&0==e)for(;h&&a[h-2]==a[h-3]&&a[h-1].insertLeft;)d=a[(h-=3)+2], -g="left";if("right"==c&&e==j-i)for(;hk;k++){for(;h&&Oe(b.line.text.charAt(f.coverStart+h));)--h;for(;f.coverStart+itf&&0==h&&i==f.coverEnd-f.coverStart)e=g.parentNode.getBoundingClientRect();else if(sf&&a.options.lineWrapping){var l=Qg(g,h,i).getClientRects();e=l.length?l["right"==d?l.length-1:0]:Qf}else e=Qg(g,h,i).getBoundingClientRect()||Qf;if(e.left||e.right||0==h)break;i=h,h-=1,j="right"}sf&&11>tf&&(e=eb(a.display.measure,e))}else{h>0&&(j=d="right");var l;e=a.options.lineWrapping&&(l=g.getClientRects()).length>1?l["right"==d?l.length-1:0]:g.getBoundingClientRect()}if(sf&&9>tf&&!h&&(!e||!e.left&&!e.right)){var m=g.parentNode.getClientRects()[0];e=m?{left:m.left,right:m.left+tb(a.display),top:m.top,bottom:m.bottom}:Qf}for(var n=e.top-b.rect.top,o=e.bottom-b.rect.top,p=(n+o)/2,q=b.view.measure.heights,k=0;kc.from?g(a-1):g(a,d)}d=d||Yd(a.doc,b.line),e||(e=ab(a,d));var i=de(d),j=b.ch;if(!i)return g(j);var k=jf(i,j),l=h(j,k);return null!=eh&&(l.other=h(j,eh)),l}function ob(a,b){var c=0,b=pa(a.doc,b);a.options.lineWrapping||(c=tb(a.display)*b.ch);var d=Yd(a.doc,b.line),e=ce(d)+Ra(a.display);return{left:c,right:c,top:e,bottom:e+d.height}}function pb(a,b,c,d){var e=Kf(a,b);return e.xRel=d,c&&(e.outside=!0),e}function qb(a,b,c){var d=a.doc;if(c+=a.display.viewOffset,0>c)return pb(d.first,0,!0,-1);var e=be(d,c),f=d.first+d.size-1;if(e>f)return pb(d.first+d.size-1,Yd(d,f).text.length,!0,1);0>b&&(b=0);for(var g=Yd(d,e);;){var h=rb(a,g,e,b,c),i=pd(g),j=i&&i.find(0,!0);if(!i||!(h.ch>j.from.ch||h.ch==j.from.ch&&h.xRel>0))return h;e=ae(g=j.to.line)}}function rb(a,b,c,d,e){function f(d){var e=nb(a,Kf(c,d),"line",b,j);return h=!0,g>e.bottom?e.left-i:gq)return pb(c,n,r,1);for(;;){if(k?n==m||n==lf(b,m,1):1>=n-m){for(var s=o>d||q-d>=d-o?m:n,t=d-(s==m?o:q);Oe(b.text.charAt(s));)++s;var u=pb(c,s,s==m?p:r,-1>t?-1:t>1?1:0);return u}var v=Math.ceil(l/2),w=m+v;if(k){w=m;for(var x=0;v>x;++x)w=lf(b,w,1)}var y=f(w);y>d?(n=w,q=y,(r=h)&&(q+=1e3),l=v):(m=w,o=y,p=h,l-=v)}}function sb(a){if(null!=a.cachedTextHeight)return a.cachedTextHeight;if(null==Nf){Nf=Pe("pre");for(var b=0;49>b;++b)Nf.appendChild(document.createTextNode("x")),Nf.appendChild(Pe("br"));Nf.appendChild(document.createTextNode("x"))}Re(a.measure,Nf);var c=Nf.offsetHeight/50;return c>3&&(a.cachedTextHeight=c),Qe(a.measure),c||1}function tb(a){if(null!=a.cachedCharWidth)return a.cachedCharWidth;var b=Pe("span","xxxxxxxxxx"),c=Pe("pre",[b]);Re(a.measure,c);var d=b.getBoundingClientRect(),e=(d.right-d.left)/10;return e>2&&(a.cachedCharWidth=e),e||10}function ub(a){a.curOp={cm:a,viewChanged:!1,startHeight:a.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Sf},Rf?Rf.ops.push(a.curOp):a.curOp.ownsGroup=Rf={ops:[a.curOp],delayedCallbacks:[]}}function vb(a){var b=a.delayedCallbacks,c=0;do{for(;c=c.viewTo)||c.maxLineChanged&&b.options.lineWrapping,a.update=a.mustUpdate&&new z(b,a.mustUpdate&&{top:a.scrollTop,ensure:a.scrollToPos},a.forceUpdate)}function zb(a){a.updatedDisplay=a.mustUpdate&&B(a.cm,a.update)}function Ab(a){var b=a.cm,c=b.display;a.updatedDisplay&&F(b),a.barMeasure=o(b),c.maxLineChanged&&!b.options.lineWrapping&&(a.adjustWidthTo=$a(b,c.maxLine,c.maxLine.text.length).left+3,b.display.sizerWidth=a.adjustWidthTo,a.barMeasure.scrollWidth=Math.max(c.scroller.clientWidth,c.sizer.offsetLeft+a.adjustWidthTo+Ua(b)+b.display.barWidth),a.maxScrollLeft=Math.max(0,c.sizer.offsetLeft+a.adjustWidthTo-Va(b))),(a.updatedDisplay||a.selectionChanged)&&(a.preparedSelection=c.input.prepareSelection())}function Bb(a){var b=a.cm;null!=a.adjustWidthTo&&(b.display.sizer.style.minWidth=a.adjustWidthTo+"px",a.maxScrollLeftf;f=d){var g=new Hb(a.doc,Yd(a.doc,f),f);d=f+g.size,e.push(g)}return e}function Jb(a,b,c,d){null==b&&(b=a.doc.first),null==c&&(c=a.doc.first+a.doc.size),d||(d=0);var e=a.display;if(d&&cb)&&(e.updateLineNumbers=b),a.curOp.viewChanged=!0,b>=e.viewTo)Jf&&td(a.doc,b)e.viewFrom?Lb(a):(e.viewFrom+=d,e.viewTo+=d);else if(b<=e.viewFrom&&c>=e.viewTo)Lb(a);else if(b<=e.viewFrom){var f=Nb(a,c,c+d,1);f?(e.view=e.view.slice(f.index),e.viewFrom=f.lineN,e.viewTo+=d):Lb(a)}else if(c>=e.viewTo){var f=Nb(a,b,b,-1);f?(e.view=e.view.slice(0,f.index),e.viewTo=f.lineN):Lb(a)}else{var g=Nb(a,b,b,-1),h=Nb(a,c,c+d,1);g&&h?(e.view=e.view.slice(0,g.index).concat(Ib(a,g.lineN,h.lineN)).concat(e.view.slice(h.index)),e.viewTo+=d):Lb(a)}var i=e.externalMeasured;i&&(c=e.lineN&&b=d.viewTo)){var f=d.view[Mb(a,b)];if(null!=f.node){var g=f.changes||(f.changes=[]);-1==Ge(g,c)&&g.push(c)}}}function Lb(a){a.display.viewFrom=a.display.viewTo=a.doc.first,a.display.view=[],a.display.viewOffset=0}function Mb(a,b){if(b>=a.display.viewTo)return null;if(b-=a.display.viewFrom,0>b)return null;for(var c=a.display.view,d=0;db)return d}function Nb(a,b,c,d){var e,f=Mb(a,b),g=a.display.view;if(!Jf||c==a.doc.first+a.doc.size)return{index:f,lineN:c};for(var h=0,i=a.display.viewFrom;f>h;h++)i+=g[h].size;if(i!=b){if(d>0){if(f==g.length-1)return null;e=i+g[f].size-b,f++}else e=i-b;b+=e,c+=e}for(;td(a.doc,c)!=c;){if(f==(0>d?0:g.length-1))return null;c+=d*g[f-(0>d?1:0)].size,f+=d}return{index:f,lineN:c}}function Ob(a,b,c){var d=a.display,e=d.view;0==e.length||b>=d.viewTo||c<=d.viewFrom?(d.view=Ib(a,b,c),d.viewFrom=b):(d.viewFrom>b?d.view=Ib(a,b,d.viewFrom).concat(d.view):d.viewFromc&&(d.view=d.view.slice(0,Mb(a,c)))),d.viewTo=c}function Pb(a){for(var b=a.display.view,c=0,d=0;d400}var e=a.display;Cg(e.scroller,"mousedown",Eb(a,Vb)),sf&&11>tf?Cg(e.scroller,"dblclick",Eb(a,function(b){if(!ze(a,b)){var c=Ub(a,b);if(c&&!$b(a,b)&&!Tb(a.display,b)){zg(b);var d=a.findWordAt(c);ua(a.doc,d.anchor,d.head)}}})):Cg(e.scroller,"dblclick",function(b){ze(a,b)||zg(b)}),Hf||Cg(e.scroller,"contextmenu",function(b){sc(a,b)});var f,g={end:0};Cg(e.scroller,"touchstart",function(b){if(!ze(a,b)&&!c(b)){clearTimeout(f);var d=+new Date;e.activeTouch={start:d,moved:!1,prev:d-g.end<=300?g:null},1==b.touches.length&&(e.activeTouch.left=b.touches[0].pageX,e.activeTouch.top=b.touches[0].pageY)}}),Cg(e.scroller,"touchmove",function(){e.activeTouch&&(e.activeTouch.moved=!0)}),Cg(e.scroller,"touchend",function(c){var f=e.activeTouch;if(f&&!Tb(e,c)&&null!=f.left&&!f.moved&&new Date-f.start<300){var g,h=a.coordsChar(e.activeTouch,"page");g=!f.prev||d(f,f.prev)?new la(h,h):!f.prev.prev||d(f,f.prev.prev)?a.findWordAt(h):new la(Kf(h.line,0),pa(a.doc,Kf(h.line+1,0))),a.setSelection(g.anchor,g.head),a.focus(),zg(c)}b()}),Cg(e.scroller,"touchcancel",b),Cg(e.scroller,"scroll",function(){e.scroller.clientHeight&&(dc(a,e.scroller.scrollTop),ec(a,e.scroller.scrollLeft,!0),Fg(a,"scroll",a))}),Cg(e.scroller,"mousewheel",function(b){fc(a,b)}),Cg(e.scroller,"DOMMouseScroll",function(b){fc(a,b)}),Cg(e.wrapper,"scroll",function(){e.wrapper.scrollTop=e.wrapper.scrollLeft=0}),e.dragFunctions={enter:function(b){ze(a,b)||Bg(b)},over:function(b){ze(a,b)||(bc(a,b),Bg(b))},start:function(b){ac(a,b)},drop:Eb(a,_b),leave:function(){cc(a)}};var h=e.input.getField();Cg(h,"keyup",function(b){nc.call(a,b)}),Cg(h,"keydown",Eb(a,lc)),Cg(h,"keypress",Eb(a,oc)),Cg(h,"focus",Le(qc,a)),Cg(h,"blur",Le(rc,a))}function Rb(b,c,d){var e=d&&d!=a.Init;if(!c!=!e){var f=b.display.dragFunctions,g=c?Cg:Eg;g(b.display.scroller,"dragstart",f.start),g(b.display.scroller,"dragenter",f.enter),g(b.display.scroller,"dragover",f.over),g(b.display.scroller,"dragleave",f.leave),g(b.display.scroller,"drop",f.drop)}}function Sb(a){var b=a.display;(b.lastWrapHeight!=b.wrapper.clientHeight||b.lastWrapWidth!=b.wrapper.clientWidth)&&(b.cachedCharWidth=b.cachedTextHeight=b.cachedPaddingH=null,b.scrollbarsClipped=!1,a.setSize())}function Tb(a,b){for(var c=ue(b);c!=a.wrapper;c=c.parentNode)if(!c||1==c.nodeType&&"true"==c.getAttribute("cm-ignore-events")||c.parentNode==a.sizer&&c!=a.mover)return!0}function Ub(a,b,c,d){var e=a.display;if(!c&&"true"==ue(b).getAttribute("cm-not-content"))return null;var f,g,h=e.lineSpace.getBoundingClientRect();try{f=b.clientX-h.left,g=b.clientY-h.top}catch(b){return null}var i,j=qb(a,f,g);if(d&&1==j.xRel&&(i=Yd(a.doc,j.line).text).length==j.ch){var k=Mg(i,i.length,a.options.tabSize)-i.length;j=Kf(j.line,Math.max(0,Math.round((f-Ta(a.display).left)/tb(a.display))-k))}return j}function Vb(a){var b=this,c=b.display;if(!(ze(b,a)||c.activeTouch&&c.input.supportsTouch())){if(c.shift=a.shiftKey,Tb(c,a))return void(uf||(c.scroller.draggable=!1,setTimeout(function(){c.scroller.draggable=!0},100)));if(!$b(b,a)){var d=Ub(b,a);switch(window.focus(),ve(a)){case 1:b.state.selectingText?b.state.selectingText(a):d?Wb(b,a,d):ue(a)==c.scroller&&zg(a);break;case 2:uf&&(b.state.lastMiddleDown=+new Date),d&&ua(b.doc,d),setTimeout(function(){c.input.focus()},20),zg(a);break;case 3:Hf?sc(b,a):pc(b)}}}}function Wb(a,b,c){sf?setTimeout(Le(Y,a),0):a.curOp.focus=Se();var d,e=+new Date;Pf&&Pf.time>e-400&&0==Lf(Pf.pos,c)?d="triple":Of&&Of.time>e-400&&0==Lf(Of.pos,c)?(d="double",Pf={time:e,pos:c}):(d="single",Of={time:e,pos:c});var f,g=a.doc.sel,h=Df?b.metaKey:b.ctrlKey;a.options.dragDrop&&$g&&!a.isReadOnly()&&"single"==d&&(f=g.contains(c))>-1&&(Lf((f=g.ranges[f]).from(),c)<0||c.xRel>0)&&(Lf(f.to(),c)>0||c.xRel<0)?Xb(a,b,c,h):Yb(a,b,c,d,h)}function Xb(a,b,c,d){var e=a.display,f=+new Date,g=Eb(a,function(h){uf&&(e.scroller.draggable=!1),a.state.draggingText=!1,Eg(document,"mouseup",g),Eg(e.scroller,"drop",g),Math.abs(b.clientX-h.clientX)+Math.abs(b.clientY-h.clientY)<10&&(zg(h),!d&&+new Date-200=o;o++){var r=Yd(j,o).text,s=Ng(r,i,f);i==n?e.push(new la(Kf(o,s),Kf(o,s))):r.length>s&&e.push(new la(Kf(o,s),Kf(o,Ng(r,n,f))))}e.length||e.push(new la(c,c)),Aa(j,ma(m.ranges.slice(0,l).concat(e),l),{origin:"*mouse",scroll:!1}),a.scrollIntoView(b)}else{var t=k,u=t.anchor,v=b;if("single"!=d){if("double"==d)var w=a.findWordAt(b);else var w=new la(Kf(b.line,0),pa(j,Kf(b.line+1,0)));Lf(w.anchor,u)>0?(v=w.head,u=X(t.from(),w.anchor)):(v=w.anchor,u=W(t.to(),w.head))}var e=m.ranges.slice(0);e[l]=new la(pa(j,u),v),Aa(j,ma(e,l),Kg)}}function g(b){var c=++s,e=Ub(a,b,!0,"rect"==d);if(e)if(0!=Lf(e,q)){a.curOp.focus=Se(),f(e);var h=u(i,j);(e.line>=h.to||e.liner.bottom?20:0;k&&setTimeout(Eb(a,function(){s==c&&(i.scroller.scrollTop+=k,g(b))}),50)}}function h(b){a.state.selectingText=!1,s=1/0,zg(b),i.input.focus(),Eg(document,"mousemove",t),Eg(document,"mouseup",v),j.history.lastSelOrigin=null}var i=a.display,j=a.doc;zg(b);var k,l,m=j.sel,n=m.ranges;if(e&&!b.shiftKey?(l=j.sel.contains(c),k=l>-1?n[l]:new la(c,c)):(k=j.sel.primary(),l=j.sel.primIndex),b.altKey)d="rect",e||(k=new la(c,c)),c=Ub(a,b,!0,!0),l=-1;else if("double"==d){var o=a.findWordAt(c);k=a.display.shift||j.extend?ta(j,k,o.anchor,o.head):o}else if("triple"==d){var p=new la(Kf(c.line,0),pa(j,Kf(c.line+1,0)));k=a.display.shift||j.extend?ta(j,k,p.anchor,p.head):p}else k=ta(j,k,c);e?-1==l?(l=n.length,Aa(j,ma(n.concat([k]),l),{scroll:!1,origin:"*mouse"})):n.length>1&&n[l].empty()&&"single"==d&&!b.shiftKey?(Aa(j,ma(n.slice(0,l).concat(n.slice(l+1)),0),{scroll:!1,origin:"*mouse"}),m=j.sel):wa(j,l,k,Kg):(l=0,Aa(j,new ka([k],0),Kg),m=j.sel);var q=c,r=i.wrapper.getBoundingClientRect(),s=0,t=Eb(a,function(a){ve(a)?g(a):h(a)}),v=Eb(a,h);a.state.selectingText=v,Cg(document,"mousemove",t),Cg(document,"mouseup",v)}function Zb(a,b,c,d){try{var e=b.clientX,f=b.clientY}catch(b){return!1}if(e>=Math.floor(a.display.gutters.getBoundingClientRect().right))return!1;d&&zg(b);var g=a.display,h=g.lineDiv.getBoundingClientRect();if(f>h.bottom||!Be(a,c))return te(b);f-=h.top-g.viewOffset;for(var i=0;i=e){var k=be(a.doc,f),l=a.options.gutters[i];return Fg(a,c,a,k,l,b),te(b)}}}function $b(a,b){return Zb(a,b,"gutterClick",!0)}function _b(a){var b=this;if(cc(b),!ze(b,a)&&!Tb(b.display,a)){zg(a),sf&&(Tf=+new Date);var c=Ub(b,a,!0),d=a.dataTransfer.files;if(c&&!b.isReadOnly())if(d&&d.length&&window.FileReader&&window.File)for(var e=d.length,f=Array(e),g=0,h=function(a,d){if(!b.options.allowDropFileTypes||-1!=Ge(b.options.allowDropFileTypes,a.type)){var h=new FileReader;h.onload=Eb(b,function(){var a=h.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(a)&&(a=""),f[d]=a,++g==e){c=pa(b.doc,c);var i={from:c,to:c,text:b.doc.splitLines(f.join(b.doc.lineSeparator())),origin:"paste"};zc(b.doc,i),za(b.doc,na(c,Zf(i)))}}),h.readAsText(a)}},i=0;e>i;++i)h(d[i],i);else{if(b.state.draggingText&&b.doc.sel.contains(c)>-1)return b.state.draggingText(a),void setTimeout(function(){b.display.input.focus()},20);try{var f=a.dataTransfer.getData("Text");if(f){if(b.state.draggingText&&!(Df?a.altKey:a.ctrlKey))var j=b.listSelections();if(Ba(b.doc,na(c,c)),j)for(var i=0;ig.clientWidth,i=g.scrollHeight>g.clientHeight;if(d&&h||e&&i){if(e&&Df&&uf)a:for(var j=b.target,k=f.view;j!=g;j=j.parentNode)for(var l=0;lm?n=Math.max(0,n+m-50):o=Math.min(a.doc.height,o+m+50),D(a,{top:n,bottom:o})}20>Uf&&(null==f.wheelStartX?(f.wheelStartX=g.scrollLeft,f.wheelStartY=g.scrollTop,f.wheelDX=d,f.wheelDY=e,setTimeout(function(){if(null!=f.wheelStartX){var a=g.scrollLeft-f.wheelStartX,b=g.scrollTop-f.wheelStartY,c=b&&f.wheelDY&&b/f.wheelDY||a&&f.wheelDX&&a/f.wheelDX;f.wheelStartX=f.wheelStartY=null,c&&(Vf=(Vf*Uf+c)/(Uf+1),++Uf)}},200)):(f.wheelDX+=d,f.wheelDY+=e))}}function gc(a,b,c){if("string"==typeof b&&(b=ig[b],!b))return!1;a.display.input.ensurePolled();var d=a.display.shift,e=!1;try{a.isReadOnly()&&(a.state.suppressEdits=!0),c&&(a.display.shift=!1),e=b(a)!=Ig}finally{a.display.shift=d,a.state.suppressEdits=!1}return e}function hc(a,b,c){for(var d=0;dtf&&27==a.keyCode&&(a.returnValue=!1);var c=a.keyCode;b.display.shift=16==c||a.shiftKey;var d=jc(b,a);xf&&(Yf=d?c:null,!d&&88==c&&!bh&&(Df?a.metaKey:a.ctrlKey)&&b.replaceSelection("",null,"cut")),18!=c||/\bCodeMirror-crosshair\b/.test(b.display.lineDiv.className)||mc(b)}}function mc(a){function b(a){18!=a.keyCode&&a.altKey||(Xg(c,"CodeMirror-crosshair"),Eg(document,"keyup",b),Eg(document,"mouseover",b))}var c=a.display.lineDiv;Yg(c,"CodeMirror-crosshair"),Cg(document,"keyup",b),Cg(document,"mouseover",b)}function nc(a){16==a.keyCode&&(this.doc.sel.shift=!1),ze(this,a)}function oc(a){var b=this;if(!(Tb(b.display,a)||ze(b,a)||a.ctrlKey&&!a.altKey||Df&&a.metaKey)){var c=a.keyCode,d=a.charCode;if(xf&&c==Yf)return Yf=null,void zg(a);if(!xf||a.which&&!(a.which<10)||!jc(b,a)){var e=String.fromCharCode(null==d?c:d);kc(b,a,e)||b.display.input.onKeyPress(a)}}}function pc(a){a.state.delayingBlurEvent=!0,setTimeout(function(){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1,rc(a))},100)}function qc(a){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1),"nocursor"!=a.options.readOnly&&(a.state.focused||(Fg(a,"focus",a),a.state.focused=!0,Yg(a.display.wrapper,"CodeMirror-focused"),a.curOp||a.display.selForContextMenu==a.doc.sel||(a.display.input.reset(),uf&&setTimeout(function(){a.display.input.reset(!0)},20)),a.display.input.receivedFocus()),Ma(a))}function rc(a){a.state.delayingBlurEvent||(a.state.focused&&(Fg(a,"blur",a),a.state.focused=!1,Xg(a.display.wrapper,"CodeMirror-focused")),clearInterval(a.display.blinker),setTimeout(function(){a.state.focused||(a.display.shift=!1)},150))}function sc(a,b){Tb(a.display,b)||tc(a,b)||ze(a,b,"contextmenu")||a.display.input.onContextMenu(b)}function tc(a,b){return Be(a,"gutterContextMenu")?Zb(a,b,"gutterContextMenu",!1):!1}function uc(a,b){if(Lf(a,b.from)<0)return a;if(Lf(a,b.to)<=0)return Zf(b);var c=a.line+b.text.length-(b.to.line-b.from.line)-1,d=a.ch;return a.line==b.to.line&&(d+=Zf(b).ch-b.to.ch),Kf(c,d)}function vc(a,b){for(var c=[],d=0;d=0;--e)Ac(a,{from:d[e].from,to:d[e].to,text:e?[""]:b.text});else Ac(a,b)}}function Ac(a,b){if(1!=b.text.length||""!=b.text[0]||0!=Lf(b.from,b.to)){var c=vc(a,b);ie(a,b,c,a.cm?a.cm.curOp.id:NaN),Dc(a,b,c,ed(a,b));var d=[];Wd(a,function(a,c){c||-1!=Ge(d,a.history)||(se(a.history,b),d.push(a.history)),Dc(a,b,null,ed(a,b))})}}function Bc(a,b,c){if(!a.cm||!a.cm.state.suppressEdits){for(var d,e=a.history,f=a.sel,g="undo"==b?e.done:e.undone,h="undo"==b?e.undone:e.done,i=0;i=0;--i){var l=d.changes[i];if(l.origin=b,k&&!yc(a,l,!1))return void(g.length=0);j.push(fe(a,l));var m=i?vc(a,l):Fe(g);Dc(a,l,m,gd(a,l)),!i&&a.cm&&a.cm.scrollIntoView({from:l.from,to:Zf(l)});var n=[];Wd(a,function(a,b){b||-1!=Ge(n,a.history)||(se(a.history,l),n.push(a.history)),Dc(a,l,null,gd(a,l))})}}}}function Cc(a,b){if(0!=b&&(a.first+=b,a.sel=new ka(He(a.sel.ranges,function(a){return new la(Kf(a.anchor.line+b,a.anchor.ch),Kf(a.head.line+b,a.head.ch))}),a.sel.primIndex),a.cm)){Jb(a.cm,a.first,a.first-b,b);for(var c=a.cm.display,d=c.viewFrom;da.lastLine())){if(b.from.linef&&(b={from:b.from,to:Kf(f,Yd(a,f).text.length),text:[b.text[0]],origin:b.origin}),b.removed=Zd(a,b.from,b.to),c||(c=vc(a,b)),a.cm?Ec(a.cm,b,d):Td(a,b,d),Ba(a,c,Jg)}}function Ec(a,b,c){var d=a.doc,e=a.display,g=b.from,h=b.to,i=!1,j=g.line;a.options.lineWrapping||(j=ae(rd(Yd(d,g.line))),d.iter(j,h.line+1,function(a){return a==e.maxLine?(i=!0,!0):void 0})),d.sel.contains(b.from,b.to)>-1&&Ae(a),Td(d,b,c,f(a)),a.options.lineWrapping||(d.iter(j,g.line+b.text.length,function(a){var b=l(a);b>e.maxLineLength&&(e.maxLine=a,e.maxLineLength=b,e.maxLineChanged=!0,i=!1)}),i&&(a.curOp.updateMaxLine=!0)),d.frontier=Math.min(d.frontier,g.line),Na(a,400);var k=b.text.length-(h.line-g.line)-1;b.full?Jb(a):g.line!=h.line||1!=b.text.length||Sd(a.doc,b)?Jb(a,g.line,h.line+1,k):Kb(a,g.line,"text");var m=Be(a,"changes"),n=Be(a,"change");if(n||m){var o={from:g,to:h,text:b.text,removed:b.removed,origin:b.origin};n&&xe(a,"change",a,o),m&&(a.curOp.changeObjs||(a.curOp.changeObjs=[])).push(o)}a.display.selForContextMenu=null}function Fc(a,b,c,d,e){if(d||(d=c),Lf(d,c)<0){var f=d;d=c,c=f}"string"==typeof b&&(b=a.splitLines(b)),zc(a,{from:c,to:d,text:b,origin:e})}function Gc(a,b){if(!ze(a,"scrollCursorIntoView")){var c=a.display,d=c.sizer.getBoundingClientRect(),e=null;if(b.top+d.top<0?e=!0:b.bottom+d.top>(window.innerHeight||document.documentElement.clientHeight)&&(e=!1),null!=e&&!Af){var f=Pe("div","​",null,"position: absolute; top: "+(b.top-c.viewOffset-Ra(a.display))+"px; height: "+(b.bottom-b.top+Ua(a)+c.barHeight)+"px; left: "+b.left+"px; width: 2px;");a.display.lineSpace.appendChild(f),f.scrollIntoView(e),a.display.lineSpace.removeChild(f)}}}function Hc(a,b,c,d){null==d&&(d=0);for(var e=0;5>e;e++){var f=!1,g=nb(a,b),h=c&&c!=b?nb(a,c):g,i=Jc(a,Math.min(g.left,h.left),Math.min(g.top,h.top)-d,Math.max(g.left,h.left),Math.max(g.bottom,h.bottom)+d),j=a.doc.scrollTop,k=a.doc.scrollLeft;if(null!=i.scrollTop&&(dc(a,i.scrollTop),Math.abs(a.doc.scrollTop-j)>1&&(f=!0)),null!=i.scrollLeft&&(ec(a,i.scrollLeft),Math.abs(a.doc.scrollLeft-k)>1&&(f=!0)),!f)break}return g}function Ic(a,b,c,d,e){var f=Jc(a,b,c,d,e);null!=f.scrollTop&&dc(a,f.scrollTop),null!=f.scrollLeft&&ec(a,f.scrollLeft)}function Jc(a,b,c,d,e){var f=a.display,g=sb(a.display);0>c&&(c=0);var h=a.curOp&&null!=a.curOp.scrollTop?a.curOp.scrollTop:f.scroller.scrollTop,i=Wa(a),j={};e-c>i&&(e=c+i);var k=a.doc.height+Sa(f),l=g>c,m=e>k-g;if(h>c)j.scrollTop=l?0:c;else if(e>h+i){var n=Math.min(c,(m?k:e)-i);n!=h&&(j.scrollTop=n)}var o=a.curOp&&null!=a.curOp.scrollLeft?a.curOp.scrollLeft:f.scroller.scrollLeft,p=Va(a)-(a.options.fixedGutter?f.gutters.offsetWidth:0),q=d-b>p;return q&&(d=b+p),10>b?j.scrollLeft=0:o>b?j.scrollLeft=Math.max(0,b-(q?0:10)):d>p+o-3&&(j.scrollLeft=d+(q?0:10)-p),j}function Kc(a,b,c){(null!=b||null!=c)&&Mc(a),null!=b&&(a.curOp.scrollLeft=(null==a.curOp.scrollLeft?a.doc.scrollLeft:a.curOp.scrollLeft)+b),null!=c&&(a.curOp.scrollTop=(null==a.curOp.scrollTop?a.doc.scrollTop:a.curOp.scrollTop)+c)}function Lc(a){Mc(a);var b=a.getCursor(),c=b,d=b;a.options.lineWrapping||(c=b.ch?Kf(b.line,b.ch-1):b,d=Kf(b.line,b.ch+1)),a.curOp.scrollToPos={from:c,to:d,margin:a.options.cursorScrollMargin,isCursor:!0}}function Mc(a){var b=a.curOp.scrollToPos;if(b){a.curOp.scrollToPos=null; -var c=ob(a,b.from),d=ob(a,b.to),e=Jc(a,Math.min(c.left,d.left),Math.min(c.top,d.top)-b.margin,Math.max(c.right,d.right),Math.max(c.bottom,d.bottom)+b.margin);a.scrollTo(e.scrollLeft,e.scrollTop)}}function Nc(a,b,c,d){var e,f=a.doc;null==c&&(c="add"),"smart"==c&&(f.mode.indent?e=Qa(a,b):c="prev");var g=a.options.tabSize,h=Yd(f,b),i=Mg(h.text,null,g);h.stateAfter&&(h.stateAfter=null);var j,k=h.text.match(/^\s*/)[0];if(d||/\S/.test(h.text)){if("smart"==c&&(j=f.mode.indent(e,h.text.slice(k.length),h.text),j==Ig||j>150)){if(!d)return;c="prev"}}else j=0,c="not";"prev"==c?j=b>f.first?Mg(Yd(f,b-1).text,null,g):0:"add"==c?j=i+a.options.indentUnit:"subtract"==c?j=i-a.options.indentUnit:"number"==typeof c&&(j=i+c),j=Math.max(0,j);var l="",m=0;if(a.options.indentWithTabs)for(var n=Math.floor(j/g);n;--n)m+=g,l+=" ";if(j>m&&(l+=Ee(j-m)),l!=k)return Fc(f,l,Kf(b,0),Kf(b,k.length),"+input"),h.stateAfter=null,!0;for(var n=0;n=0;b--)Fc(a.doc,"",d[b].from,d[b].to,"+delete");Lc(a)})}function Qc(a,b,c,d,e){function f(){var b=h+c;return b=a.first+a.size?!1:(h=b,k=Yd(a,b))}function g(a){var b=(e?lf:mf)(k,i,c,!0);if(null==b){if(a||!f())return!1;i=e?(0>c?df:cf)(k):0>c?k.text.length:0}else i=b;return!0}var h=b.line,i=b.ch,j=c,k=Yd(a,h);if("char"==d)g();else if("column"==d)g(!0);else if("word"==d||"group"==d)for(var l=null,m="group"==d,n=a.cm&&a.cm.getHelper(b,"wordChars"),o=!0;!(0>c)||g(!o);o=!1){var p=k.text.charAt(i)||"\n",q=Me(p,n)?"w":m&&"\n"==p?"n":!m||/\s/.test(p)?null:"p";if(!m||o||q||(q="s"),l&&l!=q){0>c&&(c=1,g());break}if(q&&(l=q),c>0&&!g(!o))break}var r=Ga(a,Kf(h,i),b,j,!0);return Lf(b,r)||(r.hitSide=!0),r}function Rc(a,b,c,d){var e,f=a.doc,g=b.left;if("page"==d){var h=Math.min(a.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);e=b.top+c*(h-(0>c?1.5:.5)*sb(a.display))}else"line"==d&&(e=c>0?b.bottom+3:b.top-3);for(;;){var i=qb(a,g,e);if(!i.outside)break;if(0>c?0>=e:e>=f.height){i.hitSide=!0;break}e+=5*c}return i}function Sc(b,c,d,e){a.defaults[b]=c,d&&(_f[b]=e?function(a,b,c){c!=ag&&d(a,b,c)}:d)}function Tc(a){for(var b,c,d,e,f=a.split(/-(?!$)/),a=f[f.length-1],g=0;g0||0==g&&f.clearWhenEmpty!==!1)return f;if(f.replacedWith&&(f.collapsed=!0,f.widgetNode=Pe("span",[f.replacedWith],"CodeMirror-widget"),d.handleMouseEvents||f.widgetNode.setAttribute("cm-ignore-events","true"),d.insertLeft&&(f.widgetNode.insertLeft=!0)),f.collapsed){if(qd(a,b.line,b,c,f)||b.line!=c.line&&qd(a,c.line,b,c,f))throw new Error("Inserting collapsed marker partially overlapping an existing one");Jf=!0}f.addToHistory&&ie(a,{from:b,to:c,origin:"markText"},a.sel,NaN);var h,i=b.line,j=a.cm;if(a.iter(i,c.line+1,function(a){j&&f.collapsed&&!j.options.lineWrapping&&rd(a)==j.display.maxLine&&(h=!0),f.collapsed&&i!=b.line&&_d(a,0),bd(a,new $c(f,i==b.line?b.ch:null,i==c.line?c.ch:null)),++i}),f.collapsed&&a.iter(b.line,c.line+1,function(b){vd(a,b)&&_d(b,0)}),f.clearOnEnter&&Cg(f,"beforeCursorEnter",function(){f.clear()}),f.readOnly&&(If=!0,(a.history.done.length||a.history.undone.length)&&a.clearHistory()),f.collapsed&&(f.id=++og,f.atomic=!0),j){if(h&&(j.curOp.updateMaxLine=!0),f.collapsed)Jb(j,b.line,c.line+1);else if(f.className||f.title||f.startStyle||f.endStyle||f.css)for(var k=b.line;k<=c.line;k++)Kb(j,k,"text");f.atomic&&Da(j.doc),xe(j,"markerAdded",j,f)}return f}function Wc(a,b,c,d,e){d=Ke(d),d.shared=!1;var f=[Vc(a,b,c,d,e)],g=f[0],h=d.widgetNode;return Wd(a,function(a){h&&(d.widgetNode=h.cloneNode(!0)),f.push(Vc(a,pa(a,b),pa(a,c),d,e));for(var i=0;i=b:f.to>b);(d||(d=[])).push(new $c(g,f.from,i?null:f.to))}}return d}function dd(a,b,c){if(a)for(var d,e=0;e=b:f.to>b);if(h||f.from==b&&"bookmark"==g.type&&(!c||f.marker.insertLeft)){var i=null==f.from||(g.inclusiveLeft?f.from<=b:f.from0&&h)for(var l=0;ll;++l)o.push(p);o.push(i)}return o}function fd(a){for(var b=0;b0)){var k=[i,1],l=Lf(j.from,h.from),m=Lf(j.to,h.to);(0>l||!g.inclusiveLeft&&!l)&&k.push({from:j.from,to:h.from}),(m>0||!g.inclusiveRight&&!m)&&k.push({from:h.to,to:j.to}),e.splice.apply(e,k),i+=k.length-1}}return e}function id(a){var b=a.markedSpans;if(b){for(var c=0;c=0&&0>=l||0>=k&&l>=0)&&(0>=k&&(Lf(j.to,c)>0||i.marker.inclusiveRight&&e.inclusiveLeft)||k>=0&&(Lf(j.from,d)<0||i.marker.inclusiveLeft&&e.inclusiveRight)))return!0}}}function rd(a){for(var b;b=od(a);)a=b.find(-1,!0).line;return a}function sd(a){for(var b,c;b=pd(a);)a=b.find(1,!0).line,(c||(c=[])).push(a);return c}function td(a,b){var c=Yd(a,b),d=rd(c);return c==d?b:ae(d)}function ud(a,b){if(b>a.lastLine())return b;var c,d=Yd(a,b);if(!vd(a,d))return b;for(;c=pd(d);)d=c.find(1,!0).line;return ae(d)+1}function vd(a,b){var c=Jf&&b.markedSpans;if(c)for(var d,e=0;ef;f++){e&&(e[0]=a.innerMode(b,d).mode);var g=b.token(c,d);if(c.pos>c.start)return g}throw new Error("Mode "+b.name+" failed to advance stream.")}function Fd(a,b,c,d){function e(a){return{start:l.start,end:l.pos,string:l.current(),type:f||null,state:a?gg(g.mode,k):k}}var f,g=a.doc,h=g.mode;b=pa(g,b);var i,j=Yd(g,b.line),k=Qa(a,b.line,c),l=new ng(j.text,a.options.tabSize);for(d&&(i=[]);(d||l.posa.options.maxHighlightLength?(h=!1,g&&Jd(a,b,d,l.pos),l.pos=b.length,i=null):i=Cd(Ed(c,l,d,m),f),m){var n=m[0].name;n&&(i="m-"+(i?n+" "+i:n))}if(!h||k!=i){for(;jj;){var d=e[i];d>a&&e.splice(i,1,a,e[i+1],d),i+=2,j=Math.min(a,d)}if(b)if(h.opaque)e.splice(c,i-c,a,"cm-overlay "+b),i=c+2;else for(;i>c;c+=2){var f=e[c+1];e[c+1]=(f?f+" ":"")+"cm-overlay "+b}},f)}return{styles:e,classes:f.bgClass||f.textClass?f:null}}function Id(a,b,c){if(!b.styles||b.styles[0]!=a.state.modeGen){var d=Qa(a,ae(b)),e=Hd(a,b,b.text.length>a.options.maxHighlightLength?gg(a.doc.mode,d):d);b.stateAfter=d,b.styles=e.styles,e.classes?b.styleClasses=e.classes:b.styleClasses&&(b.styleClasses=null),c===a.doc.frontier&&a.doc.frontier++}return b.styles}function Jd(a,b,c,d){var e=a.doc.mode,f=new ng(b,a.options.tabSize);for(f.start=f.pos=d||0,""==b&&Dd(e,c);!f.eol();)Ed(e,f,c),f.start=f.pos}function Kd(a,b){if(!a||/^\s*$/.test(a))return null;var c=b.addModeClass?ug:tg;return c[a]||(c[a]=a.replace(/\S+/g,"cm-$&"))}function Ld(a,b){var c=Pe("span",null,null,uf?"padding-right: .1px":null),d={pre:Pe("pre",[c],"CodeMirror-line"),content:c,col:0,pos:0,cm:a,splitSpaces:(sf||uf)&&a.getOption("lineWrapping")};b.measure={};for(var e=0;e<=(b.rest?b.rest.length:0);e++){var f,g=e?b.rest[e-1]:b.line;d.pos=0,d.addToken=Nd,Ze(a.display.measure)&&(f=de(g))&&(d.addToken=Pd(d.addToken,f)),d.map=[];var h=b!=a.display.externalMeasured&&ae(g);Rd(g,d,Id(a,g,h)),g.styleClasses&&(g.styleClasses.bgClass&&(d.bgClass=Ue(g.styleClasses.bgClass,d.bgClass||"")),g.styleClasses.textClass&&(d.textClass=Ue(g.styleClasses.textClass,d.textClass||""))),0==d.map.length&&d.map.push(0,0,d.content.appendChild(Ye(a.display.measure))),0==e?(b.measure.map=d.map,b.measure.cache={}):((b.measure.maps||(b.measure.maps=[])).push(d.map),(b.measure.caches||(b.measure.caches=[])).push({}))}return uf&&/\bcm-tab\b/.test(d.content.lastChild.className)&&(d.content.className="cm-tab-wrap-hack"),Fg(a,"renderLine",a,b.line,d.pre),d.pre.className&&(d.textClass=Ue(d.pre.className,d.textClass||"")),d}function Md(a){var b=Pe("span","•","cm-invalidchar");return b.title="\\u"+a.charCodeAt(0).toString(16),b.setAttribute("aria-label",b.title),b}function Nd(a,b,c,d,e,f,g){if(b){var h=a.splitSpaces?b.replace(/ {3,}/g,Od):b,i=a.cm.state.specialChars,j=!1;if(i.test(b))for(var k=document.createDocumentFragment(),l=0;;){i.lastIndex=l;var m=i.exec(b),n=m?m.index-l:b.length-l;if(n){var o=document.createTextNode(h.slice(l,l+n));sf&&9>tf?k.appendChild(Pe("span",[o])):k.appendChild(o),a.map.push(a.pos,a.pos+n,o),a.col+=n,a.pos+=n}if(!m)break;if(l+=n+1," "==m[0]){var p=a.cm.options.tabSize,q=p-a.col%p,o=k.appendChild(Pe("span",Ee(q),"cm-tab"));o.setAttribute("role","presentation"),o.setAttribute("cm-text"," "),a.col+=q}else if("\r"==m[0]||"\n"==m[0]){var o=k.appendChild(Pe("span","\r"==m[0]?"␍":"␤","cm-invalidchar"));o.setAttribute("cm-text",m[0]),a.col+=1}else{var o=a.cm.options.specialCharPlaceholder(m[0]);o.setAttribute("cm-text",m[0]),sf&&9>tf?k.appendChild(Pe("span",[o])):k.appendChild(o),a.col+=1}a.map.push(a.pos,a.pos+1,o),a.pos++}else{a.col+=b.length;var k=document.createTextNode(h);a.map.push(a.pos,a.pos+b.length,k),sf&&9>tf&&(j=!0),a.pos+=b.length}if(c||d||e||j||g){var r=c||"";d&&(r+=d),e&&(r+=e);var s=Pe("span",[k],r,g);return f&&(s.title=f),a.content.appendChild(s)}a.content.appendChild(k)}}function Od(a){for(var b=" ",c=0;cj&&m.from<=j)break}if(m.to>=k)return a(c,d,e,f,g,h,i);a(c,d.slice(0,m.to-j),e,f,null,h,i),f=null,d=d.slice(m.to-j),j=m.to}}}function Qd(a,b,c,d){var e=!d&&c.widgetNode;e&&a.map.push(a.pos,a.pos+b,e),!d&&a.cm.display.input.needsContentAttribute&&(e||(e=a.content.appendChild(document.createElement("span"))),e.setAttribute("cm-marker",c.id)),e&&(a.cm.display.input.setUneditable(e),a.content.appendChild(e)),a.pos+=b}function Rd(a,b,c){var d=a.markedSpans,e=a.text,f=0;if(d)for(var g,h,i,j,k,l,m,n=e.length,o=0,p=1,q="",r=0;;){if(r==o){i=j=k=l=h="",m=null,r=1/0;for(var s,t=[],u=0;uo||w.collapsed&&v.to==o&&v.from==o)?(null!=v.to&&v.to!=o&&r>v.to&&(r=v.to,j=""),w.className&&(i+=" "+w.className),w.css&&(h=(h?h+";":"")+w.css),w.startStyle&&v.from==o&&(k+=" "+w.startStyle),w.endStyle&&v.to==r&&(s||(s=[])).push(w.endStyle,v.to),w.title&&!l&&(l=w.title),w.collapsed&&(!m||md(m.marker,w)<0)&&(m=v)):v.from>o&&r>v.from&&(r=v.from)}if(s)for(var u=0;u=n)break;for(var x=Math.min(n,r);;){if(q){var y=o+q.length;if(!m){var z=y>x?q.slice(0,x-o):q;b.addToken(b,z,g?g+i:i,k,o+z.length==r?j:"",l,h)}if(y>=x){q=q.slice(x-o),o=x;break}o=y,k=""}q=e.slice(f,f=c[p++]),g=Kd(c[p++],b.cm.options)}}else for(var p=1;pc;++c)f.push(new sg(j[c],e(c),d));return f}var h=b.from,i=b.to,j=b.text,k=Yd(a,h.line),l=Yd(a,i.line),m=Fe(j),n=e(j.length-1),o=i.line-h.line;if(b.full)a.insert(0,g(0,j.length)),a.remove(j.length,a.size-j.length);else if(Sd(a,b)){var p=g(0,j.length-1);f(l,l.text,n),o&&a.remove(h.line,o),p.length&&a.insert(h.line,p)}else if(k==l)if(1==j.length)f(k,k.text.slice(0,h.ch)+m+k.text.slice(i.ch),n);else{var p=g(1,j.length-1);p.push(new sg(m+k.text.slice(i.ch),n,d)),f(k,k.text.slice(0,h.ch)+j[0],e(0)),a.insert(h.line+1,p)}else if(1==j.length)f(k,k.text.slice(0,h.ch)+j[0]+l.text.slice(i.ch),e(0)),a.remove(h.line+1,o);else{f(k,k.text.slice(0,h.ch)+j[0],e(0)),f(l,m+l.text.slice(i.ch),n);var p=g(1,j.length-1);o>1&&a.remove(h.line+1,o-1),a.insert(h.line+1,p)}xe(a,"change",a,b)}function Ud(a){this.lines=a,this.parent=null;for(var b=0,c=0;bb||b>=a.size)throw new Error("There is no line "+(b+a.first)+" in the document.");for(var c=a;!c.lines;)for(var d=0;;++d){var e=c.children[d],f=e.chunkSize();if(f>b){c=e;break}b-=f}return c.lines[b]}function Zd(a,b,c){var d=[],e=b.line;return a.iter(b.line,c.line+1,function(a){var f=a.text;e==c.line&&(f=f.slice(0,c.ch)),e==b.line&&(f=f.slice(b.ch)),d.push(f),++e}),d}function $d(a,b,c){var d=[];return a.iter(b,c,function(a){d.push(a.text)}),d}function _d(a,b){var c=b-a.height;if(c)for(var d=a;d;d=d.parent)d.height+=c}function ae(a){if(null==a.parent)return null;for(var b=a.parent,c=Ge(b.lines,a),d=b.parent;d;b=d,d=d.parent)for(var e=0;d.children[e]!=b;++e)c+=d.children[e].chunkSize();return c+b.first}function be(a,b){var c=a.first;a:do{for(var d=0;db){a=e;continue a}b-=f,c+=e.chunkSize()}return c}while(!a.lines);for(var d=0;db)break;b-=h}return c+d}function ce(a){a=rd(a);for(var b=0,c=a.parent,d=0;d1&&!a.done[a.done.length-2].ranges?(a.done.pop(),Fe(a.done)):void 0}function ie(a,b,c,d){var e=a.history;e.undone.length=0;var f,g=+new Date;if((e.lastOp==d||e.lastOrigin==b.origin&&b.origin&&("+"==b.origin.charAt(0)&&a.cm&&e.lastModTime>g-a.cm.options.historyEventDelay||"*"==b.origin.charAt(0)))&&(f=he(e,e.lastOp==d))){var h=Fe(f.changes);0==Lf(b.from,b.to)&&0==Lf(b.from,h.to)?h.to=Zf(b):f.changes.push(fe(a,b))}else{var i=Fe(e.done);for(i&&i.ranges||le(a.sel,e.done),f={changes:[fe(a,b)],generation:e.generation},e.done.push(f);e.done.length>e.undoDepth;)e.done.shift(),e.done[0].ranges||e.done.shift()}e.done.push(c),e.generation=++e.maxGeneration,e.lastModTime=e.lastSelTime=g,e.lastOp=e.lastSelOp=d,e.lastOrigin=e.lastSelOrigin=b.origin,h||Fg(a,"historyAdded")}function je(a,b,c,d){var e=b.charAt(0);return"*"==e||"+"==e&&c.ranges.length==d.ranges.length&&c.somethingSelected()==d.somethingSelected()&&new Date-a.history.lastSelTime<=(a.cm?a.cm.options.historyEventDelay:500)}function ke(a,b,c,d){var e=a.history,f=d&&d.origin;c==e.lastSelOp||f&&e.lastSelOrigin==f&&(e.lastModTime==e.lastSelTime&&e.lastOrigin==f||je(a,f,Fe(e.done),b))?e.done[e.done.length-1]=b:le(b,e.done),e.lastSelTime=+new Date,e.lastSelOrigin=f,e.lastSelOp=c,d&&d.clearRedo!==!1&&ge(e.undone)}function le(a,b){var c=Fe(b);c&&c.ranges&&c.equals(a)||b.push(a)}function me(a,b,c,d){var e=b["spans_"+a.id],f=0;a.iter(Math.max(a.first,c),Math.min(a.first+a.size,d),function(c){c.markedSpans&&((e||(e=b["spans_"+a.id]={}))[f]=c.markedSpans),++f})}function ne(a){if(!a)return null;for(var b,c=0;c-1&&(Fe(h)[l]=k[l],delete k[l])}}}return e}function qe(a,b,c,d){c0?d.slice():Dg:d||Dg}function xe(a,b){function c(a){return function(){a.apply(null,f)}}var d=we(a,b,!1);if(d.length){var e,f=Array.prototype.slice.call(arguments,2);Rf?e=Rf.delayedCallbacks:Gg?e=Gg:(e=Gg=[],setTimeout(ye,0));for(var g=0;g0}function Ce(a){a.prototype.on=function(a,b){Cg(this,a,b)},a.prototype.off=function(a,b){Eg(this,a,b)}}function De(){this.id=null}function Ee(a){for(;Og.length<=a;)Og.push(Fe(Og)+" ");return Og[a]}function Fe(a){return a[a.length-1]}function Ge(a,b){for(var c=0;c-1&&Sg(a)?!0:b.test(a):Sg(a)}function Ne(a){for(var b in a)if(a.hasOwnProperty(b)&&a[b])return!1;return!0}function Oe(a){return a.charCodeAt(0)>=768&&Tg.test(a)}function Pe(a,b,c,d){var e=document.createElement(a);if(c&&(e.className=c),d&&(e.style.cssText=d),"string"==typeof b)e.appendChild(document.createTextNode(b));else if(b)for(var f=0;f0;--b)a.removeChild(a.firstChild);return a}function Re(a,b){return Qe(a).appendChild(b)}function Se(){for(var a=document.activeElement;a&&a.root&&a.root.activeElement;)a=a.root.activeElement;return a}function Te(a){return new RegExp("(^|\\s)"+a+"(?:$|\\s)\\s*")}function Ue(a,b){for(var c=a.split(" "),d=0;d2&&!(sf&&8>tf))}var c=Vg?Pe("span","​"):Pe("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return c.setAttribute("cm-text",""),c}function Ze(a){if(null!=Wg)return Wg;var b=Re(a,document.createTextNode("AخA")),c=Qg(b,0,1).getBoundingClientRect();if(!c||c.left==c.right)return!1;var d=Qg(b,1,2).getBoundingClientRect();return Wg=d.right-c.right<3}function $e(a){if(null!=ch)return ch;var b=Re(a,Pe("span","x")),c=b.getBoundingClientRect(),d=Qg(b,0,1).getBoundingClientRect();return ch=Math.abs(c.left-d.left)>1}function _e(a,b,c,d){if(!a)return d(b,c,"ltr");for(var e=!1,f=0;fb||b==c&&g.to==b)&&(d(Math.max(g.from,b),Math.min(g.to,c),1==g.level?"rtl":"ltr"),e=!0)}e||d(b,c,"ltr")}function af(a){return a.level%2?a.to:a.from}function bf(a){return a.level%2?a.from:a.to}function cf(a){var b=de(a);return b?af(b[0]):0}function df(a){var b=de(a);return b?bf(Fe(b)):a.text.length}function ef(a,b){var c=Yd(a.doc,b),d=rd(c);d!=c&&(b=ae(d));var e=de(d),f=e?e[0].level%2?df(d):cf(d):0;return Kf(b,f)}function ff(a,b){for(var c,d=Yd(a.doc,b);c=pd(d);)d=c.find(1,!0).line,b=null;var e=de(d),f=e?e[0].level%2?cf(d):df(d):d.text.length;return Kf(null==b?ae(d):b,f)}function gf(a,b){var c=ef(a,b.line),d=Yd(a.doc,c.line),e=de(d);if(!e||0==e[0].level){var f=Math.max(0,d.text.search(/\S/)),g=b.line==c.line&&b.ch<=f&&b.ch;return Kf(c.line,g?0:f)}return c}function hf(a,b,c){var d=a[0].level;return b==d?!0:c==d?!1:c>b}function jf(a,b){eh=null;for(var c,d=0;db)return d;if(e.from==b||e.to==b){if(null!=c)return hf(a,e.level,a[c].level)?(e.from!=e.to&&(eh=c),d):(e.from!=e.to&&(eh=d),c);c=d}}return c}function kf(a,b,c,d){if(!d)return b+c;do b+=c;while(b>0&&Oe(a.text.charAt(b)));return b}function lf(a,b,c,d){var e=de(a);if(!e)return mf(a,b,c,d);for(var f=jf(e,b),g=e[f],h=kf(a,b,g.level%2?-c:c,d);;){if(h>g.from&&h0==g.level%2?g.to:g.from);if(g=e[f+=c],!g)return null;h=c>0==g.level%2?kf(a,g.to,-1,d):kf(a,g.from,1,d)}}function mf(a,b,c,d){var e=b+c;if(d)for(;e>0&&Oe(a.text.charAt(e));)e+=c;return 0>e||e>a.text.length?null:e}var nf=navigator.userAgent,of=navigator.platform,pf=/gecko\/\d/i.test(nf),qf=/MSIE \d/.test(nf),rf=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(nf),sf=qf||rf,tf=sf&&(qf?document.documentMode||6:rf[1]),uf=/WebKit\//.test(nf),vf=uf&&/Qt\/\d+\.\d+/.test(nf),wf=/Chrome\//.test(nf),xf=/Opera\//.test(nf),yf=/Apple Computer/.test(navigator.vendor),zf=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(nf),Af=/PhantomJS/.test(nf),Bf=/AppleWebKit/.test(nf)&&/Mobile\/\w+/.test(nf),Cf=Bf||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(nf),Df=Bf||/Mac/.test(of),Ef=/win/i.test(of),Ff=xf&&nf.match(/Version\/(\d*\.\d*)/);Ff&&(Ff=Number(Ff[1])),Ff&&Ff>=15&&(xf=!1,uf=!0);var Gf=Df&&(vf||xf&&(null==Ff||12.11>Ff)),Hf=pf||sf&&tf>=9,If=!1,Jf=!1;p.prototype=Ke({update:function(a){var b=a.scrollWidth>a.clientWidth+1,c=a.scrollHeight>a.clientHeight+1,d=a.nativeBarWidth;if(c){this.vert.style.display="block",this.vert.style.bottom=b?d+"px":"0";var e=a.viewHeight-(b?d:0);this.vert.firstChild.style.height=Math.max(0,a.scrollHeight-a.clientHeight+e)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(b){this.horiz.style.display="block",this.horiz.style.right=c?d+"px":"0",this.horiz.style.left=a.barLeft+"px";var f=a.viewWidth-a.barLeft-(c?d:0);this.horiz.firstChild.style.width=a.scrollWidth-a.clientWidth+f+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&a.clientHeight>0&&(0==d&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:c?d:0,bottom:b?d:0}},setScrollLeft:function(a){this.horiz.scrollLeft!=a&&(this.horiz.scrollLeft=a),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz)},setScrollTop:function(a){this.vert.scrollTop!=a&&(this.vert.scrollTop=a),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert)},zeroWidthHack:function(){var a=Df&&!zf?"12px":"18px";this.horiz.style.height=this.vert.style.width=a,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new De,this.disableVert=new De},enableZeroWidthBar:function(a,b){function c(){var d=a.getBoundingClientRect(),e=document.elementFromPoint(d.left+1,d.bottom-1);e!=a?a.style.pointerEvents="none":b.set(1e3,c)}a.style.pointerEvents="auto",b.set(1e3,c)},clear:function(){var a=this.horiz.parentNode;a.removeChild(this.horiz),a.removeChild(this.vert)}},p.prototype),q.prototype=Ke({update:function(){return{bottom:0,right:0}},setScrollLeft:function(){},setScrollTop:function(){},clear:function(){}},q.prototype),a.scrollbarModel={"native":p,"null":q},z.prototype.signal=function(a,b){Be(a,b)&&this.events.push(arguments)},z.prototype.finish=function(){for(var a=0;a=9&&c.hasSelection&&(c.hasSelection=null),c.poll()}),Cg(f,"paste",function(a){ze(d,a)||$(a,d)||(d.state.pasteIncoming=!0,c.fastPoll())}),Cg(f,"cut",b),Cg(f,"copy",b),Cg(a.scroller,"paste",function(b){Tb(a,b)||ze(d,b)||(d.state.pasteIncoming=!0,c.focus())}),Cg(a.lineSpace,"selectstart",function(b){Tb(a,b)||zg(b)}),Cg(f,"compositionstart",function(){var a=d.getCursor("from");c.composing&&c.composing.range.clear(),c.composing={start:a,range:d.markText(a,d.getCursor("to"),{className:"CodeMirror-composing"})}}),Cg(f,"compositionend",function(){c.composing&&(c.poll(),c.composing.range.clear(),c.composing=null)})},prepareSelection:function(){var a=this.cm,b=a.display,c=a.doc,d=Ja(a);if(a.options.moveInputWithCursor){var e=nb(a,c.sel.primary().head,"div"),f=b.wrapper.getBoundingClientRect(),g=b.lineDiv.getBoundingClientRect();d.teTop=Math.max(0,Math.min(b.wrapper.clientHeight-10,e.top+g.top-f.top)),d.teLeft=Math.max(0,Math.min(b.wrapper.clientWidth-10,e.left+g.left-f.left))}return d},showSelection:function(a){var b=this.cm,c=b.display;Re(c.cursorDiv,a.cursors),Re(c.selectionDiv,a.selection),null!=a.teTop&&(this.wrapper.style.top=a.teTop+"px",this.wrapper.style.left=a.teLeft+"px")},reset:function(a){if(!this.contextMenuPending){var b,c,d=this.cm,e=d.doc;if(d.somethingSelected()){this.prevInput="";var f=e.sel.primary();b=bh&&(f.to().line-f.from().line>100||(c=d.getSelection()).length>1e3);var g=b?"-":c||d.getSelection();this.textarea.value=g,d.state.focused&&Pg(this.textarea),sf&&tf>=9&&(this.hasSelection=g)}else a||(this.prevInput=this.textarea.value="",sf&&tf>=9&&(this.hasSelection=null));this.inaccurateSelection=b}},getField:function(){return this.textarea},supportsTouch:function(){return!1},focus:function(){if("nocursor"!=this.cm.options.readOnly&&(!Cf||Se()!=this.textarea))try{this.textarea.focus()}catch(a){}},blur:function(){this.textarea.blur()},resetPosition:function(){this.wrapper.style.top=this.wrapper.style.left=0},receivedFocus:function(){this.slowPoll()},slowPoll:function(){var a=this;a.pollingFast||a.polling.set(this.cm.options.pollInterval,function(){a.poll(),a.cm.state.focused&&a.slowPoll()})},fastPoll:function(){function a(){var d=c.poll();d||b?(c.pollingFast=!1,c.slowPoll()):(b=!0,c.polling.set(60,a))}var b=!1,c=this;c.pollingFast=!0,c.polling.set(20,a)},poll:function(){var a=this.cm,b=this.textarea,c=this.prevInput;if(this.contextMenuPending||!a.state.focused||ah(b)&&!c&&!this.composing||a.isReadOnly()||a.options.disableInput||a.state.keySeq)return!1;var d=b.value;if(d==c&&!a.somethingSelected())return!1;if(sf&&tf>=9&&this.hasSelection===d||Df&&/[\uf700-\uf7ff]/.test(d))return a.display.input.reset(),!1;if(a.doc.sel==a.display.selForContextMenu){var e=d.charCodeAt(0);if(8203!=e||c||(c="​"),8666==e)return this.reset(),this.cm.execCommand("undo")}for(var f=0,g=Math.min(c.length,d.length);g>f&&c.charCodeAt(f)==d.charCodeAt(f);)++f;var h=this;return Db(a,function(){Z(a,d.slice(f),c.length-f,null,h.composing?"*compose":null),d.length>1e3||d.indexOf("\n")>-1?b.value=h.prevInput="":h.prevInput=d,h.composing&&(h.composing.range.clear(),h.composing.range=a.markText(h.composing.start,a.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},ensurePolled:function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},onKeyPress:function(){sf&&tf>=9&&(this.hasSelection=null),this.fastPoll()},onContextMenu:function(a){function b(){if(null!=g.selectionStart){var a=e.somethingSelected(),b="​"+(a?g.value:"");g.value="⇚",g.value=b,d.prevInput=a?"":"​",g.selectionStart=1,g.selectionEnd=b.length,f.selForContextMenu=e.doc.sel}}function c(){if(d.contextMenuPending=!1,d.wrapper.style.cssText=l,g.style.cssText=k,sf&&9>tf&&f.scrollbars.setScrollTop(f.scroller.scrollTop=i),null!=g.selectionStart){(!sf||sf&&9>tf)&&b();var a=0,c=function(){f.selForContextMenu==e.doc.sel&&0==g.selectionStart&&g.selectionEnd>0&&"​"==d.prevInput?Eb(e,ig.selectAll)(e):a++<10?f.detectingSelectAll=setTimeout(c,500):f.input.reset()};f.detectingSelectAll=setTimeout(c,200)}}var d=this,e=d.cm,f=e.display,g=d.textarea,h=Ub(e,a),i=f.scroller.scrollTop;if(h&&!xf){var j=e.options.resetSelectionOnContextMenu;j&&-1==e.doc.sel.contains(h)&&Eb(e,Aa)(e.doc,na(h),Jg);var k=g.style.cssText,l=d.wrapper.style.cssText;d.wrapper.style.cssText="position: absolute";var m=d.wrapper.getBoundingClientRect();if(g.style.cssText="position: absolute; width: 30px; height: 30px; top: "+(a.clientY-m.top-5)+"px; left: "+(a.clientX-m.left-5)+"px; z-index: 1000; background: "+(sf?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",uf)var n=window.scrollY;if(f.input.focus(),uf&&window.scrollTo(null,n),f.input.reset(),e.somethingSelected()||(g.value=d.prevInput=" "),d.contextMenuPending=!0,f.selForContextMenu=e.doc.sel,clearTimeout(f.detectingSelectAll),sf&&tf>=9&&b(),Hf){Bg(a);var o=function(){Eg(window,"mouseup",o),setTimeout(c,20)};Cg(window,"mouseup",o)}else setTimeout(c,50)}},readOnlyChanged:function(a){a||this.reset()},setUneditable:Ie,needsContentAttribute:!1},ca.prototype),ea.prototype=Ke({init:function(a){function b(a){if(!ze(d,a)){if(d.somethingSelected())Mf=d.getSelections(),"cut"==a.type&&d.replaceSelection("",null,"cut");else{if(!d.options.lineWiseCopyCut)return;var b=aa(d);Mf=b.text,"cut"==a.type&&d.operation(function(){d.setSelections(b.ranges,0,Jg),d.replaceSelection("",null,"cut")})}if(a.clipboardData&&!Bf)a.preventDefault(),a.clipboardData.clearData(),a.clipboardData.setData("text/plain",Mf.join("\n"));else{var c=da(),e=c.firstChild;d.display.lineSpace.insertBefore(c,d.display.lineSpace.firstChild),e.value=Mf.join("\n");var f=document.activeElement;Pg(e),setTimeout(function(){d.display.lineSpace.removeChild(c),f.focus()},50)}}}var c=this,d=c.cm,e=c.div=a.lineDiv;ba(e),Cg(e,"paste",function(a){ze(d,a)||$(a,d)}),Cg(e,"compositionstart",function(a){var b=a.data;if(c.composing={sel:d.doc.sel,data:b,startData:b},b){var e=d.doc.sel.primary(),f=d.getLine(e.head.line),g=f.indexOf(b,Math.max(0,e.head.ch-b.length));g>-1&&g<=e.head.ch&&(c.composing.sel=na(Kf(e.head.line,g),Kf(e.head.line,g+b.length)))}}),Cg(e,"compositionupdate",function(a){c.composing.data=a.data}),Cg(e,"compositionend",function(a){var b=c.composing;b&&(a.data==b.startData||/\u200b/.test(a.data)||(b.data=a.data),setTimeout(function(){b.handled||c.applyComposition(b),c.composing==b&&(c.composing=null)},50))}),Cg(e,"touchstart",function(){c.forceCompositionEnd()}),Cg(e,"input",function(){c.composing||(d.isReadOnly()||!c.pollContent())&&Db(c.cm,function(){Jb(d)})}),Cg(e,"copy",b),Cg(e,"cut",b)},prepareSelection:function(){var a=Ja(this.cm,!1);return a.focus=this.cm.state.focused,a},showSelection:function(a){a&&this.cm.display.view.length&&(a.focus&&this.showPrimarySelection(),this.showMultipleSelections(a))},showPrimarySelection:function(){var a=window.getSelection(),b=this.cm.doc.sel.primary(),c=ha(this.cm,a.anchorNode,a.anchorOffset),d=ha(this.cm,a.focusNode,a.focusOffset);if(!c||c.bad||!d||d.bad||0!=Lf(X(c,d),b.from())||0!=Lf(W(c,d),b.to())){var e=fa(this.cm,b.from()),f=fa(this.cm,b.to());if(e||f){var g=this.cm.display.view,h=a.rangeCount&&a.getRangeAt(0);if(e){if(!f){var i=g[g.length-1].measure,j=i.maps?i.maps[i.maps.length-1]:i.map;f={node:j[j.length-1],offset:j[j.length-2]-j[j.length-3]}}}else e={node:g[0].measure.map[2],offset:0};try{var k=Qg(e.node,e.offset,f.offset,f.node)}catch(l){}k&&(!pf&&this.cm.state.focused?(a.collapse(e.node,e.offset),k.collapsed||a.addRange(k)):(a.removeAllRanges(),a.addRange(k)),h&&null==a.anchorNode?a.addRange(h):pf&&this.startGracePeriod()),this.rememberSelection()}}},startGracePeriod:function(){var a=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){a.gracePeriod=!1,a.selectionChanged()&&a.cm.operation(function(){a.cm.curOp.selectionChanged=!0})},20)},showMultipleSelections:function(a){Re(this.cm.display.cursorDiv,a.cursors),Re(this.cm.display.selectionDiv,a.selection)},rememberSelection:function(){var a=window.getSelection();this.lastAnchorNode=a.anchorNode,this.lastAnchorOffset=a.anchorOffset,this.lastFocusNode=a.focusNode,this.lastFocusOffset=a.focusOffset},selectionInEditor:function(){var a=window.getSelection();if(!a.rangeCount)return!1;var b=a.getRangeAt(0).commonAncestorContainer;return Ug(this.div,b)},focus:function(){"nocursor"!=this.cm.options.readOnly&&this.div.focus()},blur:function(){this.div.blur()},getField:function(){return this.div},supportsTouch:function(){return!0},receivedFocus:function(){function a(){b.cm.state.focused&&(b.pollSelection(),b.polling.set(b.cm.options.pollInterval,a))}var b=this;this.selectionInEditor()?this.pollSelection():Db(this.cm,function(){b.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,a)},selectionChanged:function(){var a=window.getSelection();return a.anchorNode!=this.lastAnchorNode||a.anchorOffset!=this.lastAnchorOffset||a.focusNode!=this.lastFocusNode||a.focusOffset!=this.lastFocusOffset},pollSelection:function(){if(!this.composing&&!this.gracePeriod&&this.selectionChanged()){var a=window.getSelection(),b=this.cm;this.rememberSelection();var c=ha(b,a.anchorNode,a.anchorOffset),d=ha(b,a.focusNode,a.focusOffset);c&&d&&Db(b,function(){Aa(b.doc,na(c,d),Jg),(c.bad||d.bad)&&(b.curOp.selectionChanged=!0)})}},pollContent:function(){var a=this.cm,b=a.display,c=a.doc.sel.primary(),d=c.from(),e=c.to();if(d.lineb.viewTo-1)return!1;var f;if(d.line==b.viewFrom||0==(f=Mb(a,d.line)))var g=ae(b.view[0].line),h=b.view[0].node;else var g=ae(b.view[f].line),h=b.view[f-1].node.nextSibling;var i=Mb(a,e.line);if(i==b.view.length-1)var j=b.viewTo-1,k=b.lineDiv.lastChild;else var j=ae(b.view[i+1].line)-1,k=b.view[i+1].node.previousSibling;for(var l=a.doc.splitLines(ja(a,h,k,g,j)),m=Zd(a.doc,Kf(g,0),Kf(j,Yd(a.doc,j).text.length));l.length>1&&m.length>1;)if(Fe(l)==Fe(m))l.pop(),m.pop(),j--;else{if(l[0]!=m[0])break;l.shift(),m.shift(),g++}for(var n=0,o=0,p=l[0],q=m[0],r=Math.min(p.length,q.length);r>n&&p.charCodeAt(n)==q.charCodeAt(n);)++n;for(var s=Fe(l),t=Fe(m),u=Math.min(s.length-(1==l.length?n:0),t.length-(1==m.length?n:0));u>o&&s.charCodeAt(s.length-o-1)==t.charCodeAt(t.length-o-1);)++o;l[l.length-1]=s.slice(0,s.length-o),l[0]=l[0].slice(n);var v=Kf(g,n),w=Kf(j,m.length?Fe(m).length-o:0);return l.length>1||l[0]||Lf(v,w)?(Fc(a.doc,l,v,w,"+input"),!0):void 0},ensurePolled:function(){this.forceCompositionEnd()},reset:function(){this.forceCompositionEnd()},forceCompositionEnd:function(){this.composing&&!this.composing.handled&&(this.applyComposition(this.composing),this.composing.handled=!0,this.div.blur(),this.div.focus())},applyComposition:function(a){this.cm.isReadOnly()?Eb(this.cm,Jb)(this.cm):a.data&&a.data!=a.startData&&Eb(this.cm,Z)(this.cm,a.data,0,a.sel)},setUneditable:function(a){a.contentEditable="false"},onKeyPress:function(a){a.preventDefault(),this.cm.isReadOnly()||Eb(this.cm,Z)(this.cm,String.fromCharCode(null==a.charCode?a.keyCode:a.charCode),0)},readOnlyChanged:function(a){this.div.contentEditable=String("nocursor"!=a)},onContextMenu:Ie,resetPosition:Ie,needsContentAttribute:!0},ea.prototype),a.inputStyles={textarea:ca,contenteditable:ea},ka.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(a){if(a==this)return!0;if(a.primIndex!=this.primIndex||a.ranges.length!=this.ranges.length)return!1;for(var b=0;b=0&&Lf(a,d.to())<=0)return c}return-1}},la.prototype={from:function(){return X(this.anchor,this.head)},to:function(){return W(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var Nf,Of,Pf,Qf={left:0,right:0,top:0,bottom:0},Rf=null,Sf=0,Tf=0,Uf=0,Vf=null;sf?Vf=-.53:pf?Vf=15:wf?Vf=-.7:yf&&(Vf=-1/3);var Wf=function(a){var b=a.wheelDeltaX,c=a.wheelDeltaY;return null==b&&a.detail&&a.axis==a.HORIZONTAL_AXIS&&(b=a.detail),null==c&&a.detail&&a.axis==a.VERTICAL_AXIS?c=a.detail:null==c&&(c=a.wheelDelta),{x:b,y:c}};a.wheelEventPixels=function(a){var b=Wf(a);return b.x*=Vf,b.y*=Vf,b};var Xf=new De,Yf=null,Zf=a.changeEnd=function(a){return a.text?Kf(a.from.line+a.text.length-1,Fe(a.text).length+(1==a.text.length?a.from.ch:0)):a.to};a.prototype={constructor:a,focus:function(){window.focus(),this.display.input.focus()},setOption:function(a,b){var c=this.options,d=c[a];(c[a]!=b||"mode"==a)&&(c[a]=b,_f.hasOwnProperty(a)&&Eb(this,_f[a])(this,b,d))},getOption:function(a){return this.options[a]},getDoc:function(){return this.doc},addKeyMap:function(a,b){this.state.keyMaps[b?"push":"unshift"](Uc(a))},removeKeyMap:function(a){for(var b=this.state.keyMaps,c=0;cc&&(Nc(this,e.head.line,a,!0),c=e.head.line,d==this.doc.sel.primIndex&&Lc(this));else{var f=e.from(),g=e.to(),h=Math.max(c,f.line);c=Math.min(this.lastLine(),g.line-(g.ch?0:1))+1;for(var i=h;c>i;++i)Nc(this,i,a);var j=this.doc.sel.ranges;0==f.ch&&b.length==j.length&&j[d].from().ch>0&&wa(this.doc,d,new la(f,j[d].to()),Jg)}}}),getTokenAt:function(a,b){return Fd(this,a,b)},getLineTokens:function(a,b){return Fd(this,Kf(a),b,!0)},getTokenTypeAt:function(a){a=pa(this.doc,a);var b,c=Id(this,Yd(this.doc,a.line)),d=0,e=(c.length-1)/2,f=a.ch;if(0==f)b=c[2];else for(;;){var g=d+e>>1;if((g?c[2*g-1]:0)>=f)e=g;else{if(!(c[2*g+1]h?b:0==h?null:b.slice(0,h-1)},getModeAt:function(b){var c=this.doc.mode;return c.innerMode?a.innerMode(c,this.getTokenAt(b).state).mode:c},getHelper:function(a,b){return this.getHelpers(a,b)[0]},getHelpers:function(a,b){var c=[];if(!fg.hasOwnProperty(b))return c;var d=fg[b],e=this.getModeAt(a);if("string"==typeof e[b])d[e[b]]&&c.push(d[e[b]]);else if(e[b])for(var f=0;fe&&(a=e,d=!0),c=Yd(this.doc,a)}else c=a;return kb(this,c,{top:0,left:0},b||"page").top+(d?this.doc.height-ce(c):0)},defaultTextHeight:function(){return sb(this.display)},defaultCharWidth:function(){return tb(this.display)},setGutterMarker:Fb(function(a,b,c){return Oc(this.doc,a,"gutter",function(a){var d=a.gutterMarkers||(a.gutterMarkers={});return d[b]=c,!c&&Ne(d)&&(a.gutterMarkers=null),!0})}),clearGutter:Fb(function(a){var b=this,c=b.doc,d=c.first;c.iter(function(c){c.gutterMarkers&&c.gutterMarkers[a]&&(c.gutterMarkers[a]=null,Kb(b,d,"gutter"),Ne(c.gutterMarkers)&&(c.gutterMarkers=null)),++d})}),lineInfo:function(a){if("number"==typeof a){if(!ra(this.doc,a))return null;var b=a;if(a=Yd(this.doc,a),!a)return null}else{var b=ae(a);if(null==b)return null}return{line:b,handle:a,text:a.text,gutterMarkers:a.gutterMarkers,textClass:a.textClass,bgClass:a.bgClass,wrapClass:a.wrapClass,widgets:a.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(a,b,c,d,e){var f=this.display;a=nb(this,pa(this.doc,a));var g=a.bottom,h=a.left;if(b.style.position="absolute",b.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(b),f.sizer.appendChild(b),"over"==d)g=a.top;else if("above"==d||"near"==d){var i=Math.max(f.wrapper.clientHeight,this.doc.height),j=Math.max(f.sizer.clientWidth,f.lineSpace.clientWidth);("above"==d||a.bottom+b.offsetHeight>i)&&a.top>b.offsetHeight?g=a.top-b.offsetHeight:a.bottom+b.offsetHeight<=i&&(g=a.bottom),h+b.offsetWidth>j&&(h=j-b.offsetWidth)}b.style.top=g+"px",b.style.left=b.style.right="","right"==e?(h=f.sizer.clientWidth-b.offsetWidth,b.style.right="0px"):("left"==e?h=0:"middle"==e&&(h=(f.sizer.clientWidth-b.offsetWidth)/2),b.style.left=h+"px"),c&&Ic(this,h,g,h+b.offsetWidth,g+b.offsetHeight)},triggerOnKeyDown:Fb(lc),triggerOnKeyPress:Fb(oc),triggerOnKeyUp:nc,execCommand:function(a){return ig.hasOwnProperty(a)?ig[a].call(null,this):void 0},triggerElectric:Fb(function(a){_(this,a)}),findPosH:function(a,b,c,d){var e=1;0>b&&(e=-1,b=-b);for(var f=0,g=pa(this.doc,a);b>f&&(g=Qc(this.doc,g,e,c,d),!g.hitSide);++f);return g},moveH:Fb(function(a,b){var c=this;c.extendSelectionsBy(function(d){return c.display.shift||c.doc.extend||d.empty()?Qc(c.doc,d.head,a,b,c.options.rtlMoveVisually):0>a?d.from():d.to()},Lg)}),deleteH:Fb(function(a,b){var c=this.doc.sel,d=this.doc;c.somethingSelected()?d.replaceSelection("",null,"+delete"):Pc(this,function(c){var e=Qc(d,c.head,a,b,!1);return 0>a?{from:e,to:c.head}:{from:c.head,to:e}})}),findPosV:function(a,b,c,d){var e=1,f=d;0>b&&(e=-1,b=-b);for(var g=0,h=pa(this.doc,a);b>g;++g){var i=nb(this,h,"div");if(null==f?f=i.left:i.left=f,h=Rc(this,i,e,c),h.hitSide)break}return h},moveV:Fb(function(a,b){var c=this,d=this.doc,e=[],f=!c.display.shift&&!d.extend&&d.sel.somethingSelected();if(d.extendSelectionsBy(function(g){if(f)return 0>a?g.from():g.to();var h=nb(c,g.head,"div");null!=g.goalColumn&&(h.left=g.goalColumn),e.push(h.left);var i=Rc(c,h,a,b);return"page"==b&&g==d.sel.primary()&&Kc(c,null,mb(c,i,"div").top-h.top),i},Lg),e.length)for(var g=0;g0&&h(c.charAt(d-1));)--d;for(;e.5)&&g(this),Fg(this,"refresh",this)}),swapDoc:Fb(function(a){var b=this.doc;return b.cm=null,Xd(this,a),hb(this),this.display.input.reset(),this.scrollTo(a.scrollLeft,a.scrollTop),this.curOp.forceScroll=!0,xe(this,"swapDoc",this,b),b}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Ce(a);var $f=a.defaults={},_f=a.optionHandlers={},ag=a.Init={toString:function(){return"CodeMirror.Init"}};Sc("value","",function(a,b){a.setValue(b)},!0),Sc("mode",null,function(a,b){a.doc.modeOption=b,c(a)},!0),Sc("indentUnit",2,c,!0),Sc("indentWithTabs",!1),Sc("smartIndent",!0),Sc("tabSize",4,function(a){d(a),hb(a),Jb(a)},!0),Sc("lineSeparator",null,function(a,b){if(a.doc.lineSep=b,b){var c=[],d=a.doc.first;a.doc.iter(function(a){for(var e=0;;){var f=a.text.indexOf(b,e);if(-1==f)break;e=f+b.length,c.push(Kf(d,f))}d++});for(var e=c.length-1;e>=0;e--)Fc(a.doc,b,c[e],Kf(c[e].line,c[e].ch+b.length))}}),Sc("specialChars",/[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(b,c,d){b.state.specialChars=new RegExp(c.source+(c.test(" ")?"":"| "),"g"),d!=a.Init&&b.refresh()}),Sc("specialCharPlaceholder",Md,function(a){a.refresh()},!0),Sc("electricChars",!0),Sc("inputStyle",Cf?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),Sc("rtlMoveVisually",!Ef),Sc("wholeLineUpdateBefore",!0),Sc("theme","default",function(a){h(a),i(a)},!0),Sc("keyMap","default",function(b,c,d){var e=Uc(c),f=d!=a.Init&&Uc(d);f&&f.detach&&f.detach(b,e),e.attach&&e.attach(b,f||null)}),Sc("extraKeys",null),Sc("lineWrapping",!1,e,!0),Sc("gutters",[],function(a){n(a.options),i(a)},!0),Sc("fixedGutter",!0,function(a,b){a.display.gutters.style.left=b?y(a.display)+"px":"0",a.refresh()},!0),Sc("coverGutterNextToScrollbar",!1,function(a){s(a)},!0),Sc("scrollbarStyle","native",function(a){r(a),s(a),a.display.scrollbars.setScrollTop(a.doc.scrollTop),a.display.scrollbars.setScrollLeft(a.doc.scrollLeft)},!0),Sc("lineNumbers",!1,function(a){n(a.options),i(a)},!0),Sc("firstLineNumber",1,i,!0),Sc("lineNumberFormatter",function(a){return a},i,!0),Sc("showCursorWhenSelecting",!1,Ia,!0),Sc("resetSelectionOnContextMenu",!0),Sc("lineWiseCopyCut",!0),Sc("readOnly",!1,function(a,b){"nocursor"==b?(rc(a),a.display.input.blur(),a.display.disabled=!0):a.display.disabled=!1,a.display.input.readOnlyChanged(b)}),Sc("disableInput",!1,function(a,b){b||a.display.input.reset()},!0),Sc("dragDrop",!0,Rb),Sc("allowDropFileTypes",null),Sc("cursorBlinkRate",530),Sc("cursorScrollMargin",0),Sc("cursorHeight",1,Ia,!0),Sc("singleCursorHeightPerLine",!0,Ia,!0),Sc("workTime",100),Sc("workDelay",100),Sc("flattenSpans",!0,d,!0),Sc("addModeClass",!1,d,!0),Sc("pollInterval",100),Sc("undoDepth",200,function(a,b){a.doc.history.undoDepth=b}),Sc("historyEventDelay",1250),Sc("viewportMargin",10,function(a){a.refresh()},!0),Sc("maxHighlightLength",1e4,d,!0),Sc("moveInputWithCursor",!0,function(a,b){b||a.display.input.resetPosition()}),Sc("tabindex",null,function(a,b){a.display.input.getField().tabIndex=b||""}),Sc("autofocus",null);var bg=a.modes={},cg=a.mimeModes={};a.defineMode=function(b,c){a.defaults.mode||"null"==b||(a.defaults.mode=b),arguments.length>2&&(c.dependencies=Array.prototype.slice.call(arguments,2)),bg[b]=c},a.defineMIME=function(a,b){cg[a]=b},a.resolveMode=function(b){if("string"==typeof b&&cg.hasOwnProperty(b))b=cg[b];else if(b&&"string"==typeof b.name&&cg.hasOwnProperty(b.name)){var c=cg[b.name];"string"==typeof c&&(c={name:c}),b=Je(c,b),b.name=c.name}else if("string"==typeof b&&/^[\w\-]+\/[\w\-]+\+xml$/.test(b))return a.resolveMode("application/xml");return"string"==typeof b?{name:b}:b||{name:"null"}},a.getMode=function(b,c){var c=a.resolveMode(c),d=bg[c.name];if(!d)return a.getMode(b,"text/plain");var e=d(b,c);if(dg.hasOwnProperty(c.name)){var f=dg[c.name];for(var g in f)f.hasOwnProperty(g)&&(e.hasOwnProperty(g)&&(e["_"+g]=e[g]),e[g]=f[g])}if(e.name=c.name,c.helperType&&(e.helperType=c.helperType),c.modeProps)for(var g in c.modeProps)e[g]=c.modeProps[g];return e},a.defineMode("null",function(){return{token:function(a){a.skipToEnd()}}}),a.defineMIME("text/plain","null");var dg=a.modeExtensions={};a.extendMode=function(a,b){var c=dg.hasOwnProperty(a)?dg[a]:dg[a]={};Ke(b,c)},a.defineExtension=function(b,c){a.prototype[b]=c},a.defineDocExtension=function(a,b){wg.prototype[a]=b},a.defineOption=Sc;var eg=[];a.defineInitHook=function(a){eg.push(a)};var fg=a.helpers={};a.registerHelper=function(b,c,d){fg.hasOwnProperty(b)||(fg[b]=a[b]={_global:[]}),fg[b][c]=d},a.registerGlobalHelper=function(b,c,d,e){a.registerHelper(b,c,e),fg[b]._global.push({pred:d,val:e})};var gg=a.copyState=function(a,b){if(b===!0)return b;if(a.copyState)return a.copyState(b);var c={};for(var d in b){var e=b[d];e instanceof Array&&(e=e.concat([])),c[d]=e}return c},hg=a.startState=function(a,b,c){return a.startState?a.startState(b,c):!0};a.innerMode=function(a,b){for(;a.innerMode;){var c=a.innerMode(b);if(!c||c.mode==a)break;b=c.state,a=c.mode}return c||{mode:a,state:b}};var ig=a.commands={selectAll:function(a){a.setSelection(Kf(a.firstLine(),0),Kf(a.lastLine()),Jg)},singleSelection:function(a){a.setSelection(a.getCursor("anchor"),a.getCursor("head"),Jg)},killLine:function(a){Pc(a,function(b){if(b.empty()){var c=Yd(a.doc,b.head.line).text.length;return b.head.ch==c&&b.head.line0)e=new Kf(e.line,e.ch+1),a.replaceRange(f.charAt(e.ch-1)+f.charAt(e.ch-2),Kf(e.line,e.ch-2),e,"+transpose");else if(e.line>a.doc.first){var g=Yd(a.doc,e.line-1).text;g&&a.replaceRange(f.charAt(0)+a.doc.lineSeparator()+g.charAt(g.length-1),Kf(e.line-1,g.length-1),Kf(e.line,1),"+transpose")}c.push(new la(e,e))}a.setSelections(c)})},newlineAndIndent:function(a){Db(a,function(){for(var b=a.listSelections().length,c=0;b>c;c++){var d=a.listSelections()[c];a.replaceRange(a.doc.lineSeparator(),d.anchor,d.head,"+input"),a.indentLine(d.from().line+1,null,!0)}Lc(a)})},toggleOverwrite:function(a){a.toggleOverwrite()}},jg=a.keyMap={};jg.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},jg.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart", -"Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},jg.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars"},jg.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},jg["default"]=Df?jg.macDefault:jg.pcDefault,a.normalizeKeyMap=function(a){var b={};for(var c in a)if(a.hasOwnProperty(c)){var d=a[c];if(/^(name|fallthrough|(de|at)tach)$/.test(c))continue;if("..."==d){delete a[c];continue}for(var e=He(c.split(" "),Tc),f=0;f=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){return this.posb},eatSpace:function(){for(var a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>a},skipToEnd:function(){this.pos=this.string.length},skipTo:function(a){var b=this.string.indexOf(a,this.pos);return b>-1?(this.pos=b,!0):void 0},backUp:function(a){this.pos-=a},column:function(){return this.lastColumnPos0?null:(d&&b!==!1&&(this.pos+=d[0].length),d)}var e=function(a){return c?a.toLowerCase():a},f=this.string.substr(this.pos,a.length);return e(f)==e(a)?(b!==!1&&(this.pos+=a.length),!0):void 0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(a,b){this.lineStart+=a;try{return b()}finally{this.lineStart-=a}}};var og=0,pg=a.TextMarker=function(a,b){this.lines=[],this.type=b,this.doc=a,this.id=++og};Ce(pg),pg.prototype.clear=function(){if(!this.explicitlyCleared){var a=this.doc.cm,b=a&&!a.curOp;if(b&&ub(a),Be(this,"clear")){var c=this.find();c&&xe(this,"clear",c.from,c.to)}for(var d=null,e=null,f=0;fa.display.maxLineLength&&(a.display.maxLine=i,a.display.maxLineLength=j,a.display.maxLineChanged=!0)}null!=d&&a&&this.collapsed&&Jb(a,d,e+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,a&&Da(a.doc)),a&&xe(a,"markerCleared",a,this),b&&wb(a),this.parent&&this.parent.clear()}},pg.prototype.find=function(a,b){null==a&&"bookmark"==this.type&&(a=1);for(var c,d,e=0;ec;++c){var e=this.lines[c];this.height-=e.height,Bd(e),xe(e,"delete")}this.lines.splice(a,b)},collapse:function(a){a.push.apply(a,this.lines)},insertInner:function(a,b,c){this.height+=c,this.lines=this.lines.slice(0,a).concat(b).concat(this.lines.slice(a));for(var d=0;da;++a)if(c(this.lines[a]))return!0}},Vd.prototype={chunkSize:function(){return this.size},removeInner:function(a,b){this.size-=b;for(var c=0;ca){var f=Math.min(b,e-a),g=d.height;if(d.removeInner(a,f),this.height-=g-d.height,e==f&&(this.children.splice(c--,1),d.parent=null),0==(b-=f))break;a=0}else a-=e}if(this.size-b<25&&(this.children.length>1||!(this.children[0]instanceof Ud))){var h=[];this.collapse(h),this.children=[new Ud(h)],this.children[0].parent=this}},collapse:function(a){for(var b=0;b=a){if(e.insertInner(a,b,c),e.lines&&e.lines.length>50){for(;e.lines.length>50;){var g=e.lines.splice(e.lines.length-25,25),h=new Ud(g);e.height-=h.height,this.children.splice(d+1,0,h),h.parent=this}this.maybeSpill()}break}a-=f}},maybeSpill:function(){if(!(this.children.length<=10)){var a=this;do{var b=a.children.splice(a.children.length-5,5),c=new Vd(b);if(a.parent){a.size-=c.size,a.height-=c.height;var d=Ge(a.parent.children,a);a.parent.children.splice(d+1,0,c)}else{var e=new Vd(a.children);e.parent=a,a.children=[e,c],a=e}c.parent=a.parent}while(a.children.length>10);a.parent.maybeSpill()}},iterN:function(a,b,c){for(var d=0;da){var g=Math.min(b,f-a);if(e.iterN(a,g,c))return!0;if(0==(b-=g))break;a=0}else a-=f}}};var vg=0,wg=a.Doc=function(a,b,c,d){if(!(this instanceof wg))return new wg(a,b,c,d);null==c&&(c=0),Vd.call(this,[new Ud([new sg("",null)])]),this.first=c,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=c;var e=Kf(c,0);this.sel=na(e),this.history=new ee(null),this.id=++vg,this.modeOption=b,this.lineSep=d,this.extend=!1,"string"==typeof a&&(a=this.splitLines(a)),Td(this,{from:e,to:e,text:a}),Aa(this,na(e),Jg)};wg.prototype=Je(Vd.prototype,{constructor:wg,iter:function(a,b,c){c?this.iterN(a-this.first,b-a,c):this.iterN(this.first,this.first+this.size,a)},insert:function(a,b){for(var c=0,d=0;d=0;f--)zc(this,d[f]);h?za(this,h):this.cm&&Lc(this.cm)}),undo:Gb(function(){Bc(this,"undo")}),redo:Gb(function(){Bc(this,"redo")}),undoSelection:Gb(function(){Bc(this,"undo",!0)}),redoSelection:Gb(function(){Bc(this,"redo",!0)}),setExtending:function(a){this.extend=a},getExtending:function(){return this.extend},historySize:function(){for(var a=this.history,b=0,c=0,d=0;d=a.ch)&&b.push(e.marker.parent||e.marker)}return b},findMarks:function(a,b,c){a=pa(this,a),b=pa(this,b);var d=[],e=a.line;return this.iter(a.line,b.line+1,function(f){var g=f.markedSpans;if(g)for(var h=0;hi.to||null==i.from&&e!=a.line||e==b.line&&i.from>b.ch||c&&!c(i.marker)||d.push(i.marker.parent||i.marker)}++e}),d},getAllMarks:function(){var a=[];return this.iter(function(b){var c=b.markedSpans;if(c)for(var d=0;da?(b=a,!0):(a-=e,void++c)}),pa(this,Kf(c,b))},indexFromPos:function(a){a=pa(this,a);var b=a.ch;return a.lineb&&(b=a.from),null!=a.to&&a.toh||h>=b)return g+(b-f);g+=h-f,g+=c-g%c,f=h+1}},Ng=a.findColumn=function(a,b,c){for(var d=0,e=0;;){var f=a.indexOf(" ",d);-1==f&&(f=a.length);var g=f-d;if(f==a.length||e+g>=b)return d+Math.min(g,b-e);if(e+=f-d,e+=c-e%c,d=f+1,e>=b)return d}},Og=[""],Pg=function(a){a.select()};Bf?Pg=function(a){a.selectionStart=0,a.selectionEnd=a.value.length}:sf&&(Pg=function(a){try{a.select()}catch(b){}});var Qg,Rg=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Sg=a.isWordChar=function(a){return/\w/.test(a)||a>"€"&&(a.toUpperCase()!=a.toLowerCase()||Rg.test(a))},Tg=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;Qg=document.createRange?function(a,b,c,d){var e=document.createRange();return e.setEnd(d||a,c),e.setStart(a,b),e}:function(a,b,c){var d=document.body.createTextRange();try{d.moveToElementText(a.parentNode)}catch(e){return d}return d.collapse(!0),d.moveEnd("character",c),d.moveStart("character",b),d};var Ug=a.contains=function(a,b){if(3==b.nodeType&&(b=b.parentNode),a.contains)return a.contains(b);do if(11==b.nodeType&&(b=b.host),b==a)return!0;while(b=b.parentNode)};sf&&11>tf&&(Se=function(){try{return document.activeElement}catch(a){return document.body}});var Vg,Wg,Xg=a.rmClass=function(a,b){var c=a.className,d=Te(b).exec(c);if(d){var e=c.slice(d.index+d[0].length);a.className=c.slice(0,d.index)+(e?d[1]+e:"")}},Yg=a.addClass=function(a,b){var c=a.className;Te(b).test(c)||(a.className+=(c?" ":"")+b)},Zg=!1,$g=function(){if(sf&&9>tf)return!1;var a=Pe("div");return"draggable"in a||"dragDrop"in a}(),_g=a.splitLines=3!="\n\nb".split(/\n/).length?function(a){for(var b=0,c=[],d=a.length;d>=b;){var e=a.indexOf("\n",b);-1==e&&(e=a.length);var f=a.slice(b,"\r"==a.charAt(e-1)?e-1:e),g=f.indexOf("\r");-1!=g?(c.push(f.slice(0,g)),b+=g+1):(c.push(f),b=e+1)}return c}:function(a){return a.split(/\r\n?|\n/)},ah=window.getSelection?function(a){try{return a.selectionStart!=a.selectionEnd}catch(b){return!1}}:function(a){try{var b=a.ownerDocument.selection.createRange()}catch(c){}return b&&b.parentElement()==a?0!=b.compareEndPoints("StartToEnd",b):!1},bh=function(){var a=Pe("div");return"oncopy"in a?!0:(a.setAttribute("oncopy","return;"),"function"==typeof a.oncopy)}(),ch=null,dh=a.keyNames={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};!function(){for(var a=0;10>a;a++)dh[a+48]=dh[a+96]=String(a);for(var a=65;90>=a;a++)dh[a]=String.fromCharCode(a);for(var a=1;12>=a;a++)dh[a+111]=dh[a+63235]="F"+a}();var eh,fh=function(){function a(a){return 247>=a?c.charAt(a):a>=1424&&1524>=a?"R":a>=1536&&1773>=a?d.charAt(a-1536):a>=1774&&2220>=a?"r":a>=8192&&8203>=a?"w":8204==a?"b":"L"}function b(a,b,c){this.level=a,this.from=b,this.to=c}var c="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",d="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",e=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,f=/[stwN]/,g=/[LRr]/,h=/[Lb1n]/,i=/[1n]/,j="L";return function(c){if(!e.test(c))return!1;for(var d,k=c.length,l=[],m=0;k>m;++m)l.push(d=a(c.charCodeAt(m)));for(var m=0,n=j;k>m;++m){var d=l[m];"m"==d?l[m]=n:n=d}for(var m=0,o=j;k>m;++m){var d=l[m];"1"==d&&"r"==o?l[m]="n":g.test(d)&&(o=d,"r"==d&&(l[m]="R"))}for(var m=1,n=l[0];k-1>m;++m){var d=l[m];"+"==d&&"1"==n&&"1"==l[m+1]?l[m]="1":","!=d||n!=l[m+1]||"1"!=n&&"n"!=n||(l[m]=n),n=d}for(var m=0;k>m;++m){var d=l[m];if(","==d)l[m]="N";else if("%"==d){for(var p=m+1;k>p&&"%"==l[p];++p);for(var q=m&&"!"==l[m-1]||k>p&&"1"==l[p]?"1":"N",r=m;p>r;++r)l[r]=q;m=p-1}}for(var m=0,o=j;k>m;++m){var d=l[m];"L"==o&&"1"==d?l[m]="L":g.test(d)&&(o=d)}for(var m=0;k>m;++m)if(f.test(l[m])){for(var p=m+1;k>p&&f.test(l[p]);++p);for(var s="L"==(m?l[m-1]:j),t="L"==(k>p?l[p]:j),q=s||t?"L":"R",r=m;p>r;++r)l[r]=q;m=p-1}for(var u,v=[],m=0;k>m;)if(h.test(l[m])){var w=m;for(++m;k>m&&h.test(l[m]);++m);v.push(new b(0,w,m))}else{var x=m,y=v.length;for(++m;k>m&&"L"!=l[m];++m);for(var r=x;m>r;)if(i.test(l[r])){r>x&&v.splice(y,0,new b(1,x,r));var z=r;for(++r;m>r&&i.test(l[r]);++r);v.splice(y,0,new b(2,z,r)),x=r}else++r;m>x&&v.splice(y,0,new b(1,x,m))}return 1==v[0].level&&(u=c.match(/^\s+/))&&(v[0].from=u[0].length,v.unshift(new b(0,0,u[0].length))),1==Fe(v).level&&(u=c.match(/\s+$/))&&(Fe(v).to-=u[0].length,v.push(new b(0,k-u[0].length,k))),2==v[0].level&&v.unshift(new b(1,v[0].to,v[0].to)),v[0].level!=Fe(v).level&&v.push(new b(v[0].level,k,k)),v}}();return a.version="5.12.0",a}); \ No newline at end of file +!function(a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else{if("function"==typeof define&&define.amd)return define([],a);(this||window).CodeMirror=a()}}(function(){"use strict";function a(c,d){if(!(this instanceof a))return new a(c,d);this.options=d=d?Ke(d):{},Ke($f,d,!1),n(d);var e=d.value;"string"==typeof e&&(e=new wg(e,d.mode,null,d.lineSeparator)),this.doc=e;var f=new a.inputStyles[d.inputStyle](this),g=this.display=new b(c,e,f);g.wrapper.CodeMirror=this,j(this),h(this),d.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),d.autofocus&&!Cf&&g.input.focus(),r(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new De,keySeq:null,specialChars:null};var i=this;sf&&11>tf&&setTimeout(function(){i.display.input.reset(!0)},20),Qb(this),We(),ub(this),this.curOp.forceUpdate=!0,Xd(this,e),d.autofocus&&!Cf||i.hasFocus()?setTimeout(Le(qc,this),20):rc(this);for(var k in _f)_f.hasOwnProperty(k)&&_f[k](this,d[k],ag);w(this),d.finishInit&&d.finishInit(this);for(var l=0;ltf&&(d.gutters.style.zIndex=-1,d.scroller.style.paddingRight=0),uf||pf&&Cf||(d.scroller.draggable=!0),a&&(a.appendChild?a.appendChild(d.wrapper):a(d.wrapper)),d.viewFrom=d.viewTo=b.first,d.reportedViewFrom=d.reportedViewTo=b.first,d.view=[],d.renderedView=null,d.externalMeasured=null,d.viewOffset=0,d.lastWrapHeight=d.lastWrapWidth=0,d.updateLineNumbers=null,d.nativeBarWidth=d.barHeight=d.barWidth=0,d.scrollbarsClipped=!1,d.lineNumWidth=d.lineNumInnerWidth=d.lineNumChars=null,d.alignWidgets=!1,d.cachedCharWidth=d.cachedTextHeight=d.cachedPaddingH=null,d.maxLine=null,d.maxLineLength=0,d.maxLineChanged=!1,d.wheelDX=d.wheelDY=d.wheelStartX=d.wheelStartY=null,d.shift=!1,d.selForContextMenu=null,d.activeTouch=null,c.init(d)}function c(b){b.doc.mode=a.getMode(b.options,b.doc.modeOption),d(b)}function d(a){a.doc.iter(function(a){a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null)}),a.doc.frontier=a.doc.first,Na(a,100),a.state.modeGen++,a.curOp&&Jb(a)}function e(a){a.options.lineWrapping?(Yg(a.display.wrapper,"CodeMirror-wrap"),a.display.sizer.style.minWidth="",a.display.sizerWidth=null):(Xg(a.display.wrapper,"CodeMirror-wrap"),m(a)),g(a),Jb(a),hb(a),setTimeout(function(){s(a)},100)}function f(a){var b=sb(a.display),c=a.options.lineWrapping,d=c&&Math.max(5,a.display.scroller.clientWidth/tb(a.display)-3);return function(e){if(vd(a.doc,e))return 0;var f=0;if(e.widgets)for(var g=0;gb.maxLineLength&&(b.maxLineLength=c,b.maxLine=a)})}function n(a){var b=Ge(a.gutters,"CodeMirror-linenumbers");-1==b&&a.lineNumbers?a.gutters=a.gutters.concat(["CodeMirror-linenumbers"]):b>-1&&!a.lineNumbers&&(a.gutters=a.gutters.slice(0),a.gutters.splice(b,1))}function o(a){var b=a.display,c=b.gutters.offsetWidth,d=Math.round(a.doc.height+Sa(a.display));return{clientHeight:b.scroller.clientHeight,viewHeight:b.wrapper.clientHeight,scrollWidth:b.scroller.scrollWidth,clientWidth:b.scroller.clientWidth,viewWidth:b.wrapper.clientWidth,barLeft:a.options.fixedGutter?c:0,docHeight:d,scrollHeight:d+Ua(a)+b.barHeight,nativeBarWidth:b.nativeBarWidth,gutterWidth:c}}function p(a,b,c){this.cm=c;var d=this.vert=Pe("div",[Pe("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),e=this.horiz=Pe("div",[Pe("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");a(d),a(e),Cg(d,"scroll",function(){d.clientHeight&&b(d.scrollTop,"vertical")}),Cg(e,"scroll",function(){e.clientWidth&&b(e.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,sf&&8>tf&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")}function q(){}function r(b){b.display.scrollbars&&(b.display.scrollbars.clear(),b.display.scrollbars.addClass&&Xg(b.display.wrapper,b.display.scrollbars.addClass)),b.display.scrollbars=new a.scrollbarModel[b.options.scrollbarStyle](function(a){b.display.wrapper.insertBefore(a,b.display.scrollbarFiller),Cg(a,"mousedown",function(){b.state.focused&&setTimeout(function(){b.display.input.focus()},0)}),a.setAttribute("cm-not-content","true")},function(a,c){"horizontal"==c?ec(b,a):dc(b,a)},b),b.display.scrollbars.addClass&&Yg(b.display.wrapper,b.display.scrollbars.addClass)}function s(a,b){b||(b=o(a));var c=a.display.barWidth,d=a.display.barHeight;t(a,b);for(var e=0;4>e&&c!=a.display.barWidth||d!=a.display.barHeight;e++)c!=a.display.barWidth&&a.options.lineWrapping&&F(a),t(a,o(a)),c=a.display.barWidth,d=a.display.barHeight}function t(a,b){var c=a.display,d=c.scrollbars.update(b);c.sizer.style.paddingRight=(c.barWidth=d.right)+"px",c.sizer.style.paddingBottom=(c.barHeight=d.bottom)+"px",c.heightForcer.style.borderBottom=d.bottom+"px solid transparent",d.right&&d.bottom?(c.scrollbarFiller.style.display="block",c.scrollbarFiller.style.height=d.bottom+"px",c.scrollbarFiller.style.width=d.right+"px"):c.scrollbarFiller.style.display="",d.bottom&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(c.gutterFiller.style.display="block",c.gutterFiller.style.height=d.bottom+"px",c.gutterFiller.style.width=b.gutterWidth+"px"):c.gutterFiller.style.display=""}function u(a,b,c){var d=c&&null!=c.top?Math.max(0,c.top):a.scroller.scrollTop;d=Math.floor(d-Ra(a));var e=c&&null!=c.bottom?c.bottom:d+a.wrapper.clientHeight,f=be(b,d),g=be(b,e);if(c&&c.ensure){var h=c.ensure.from.line,i=c.ensure.to.line;f>h?(f=h,g=be(b,ce(Yd(b,h))+a.wrapper.clientHeight)):Math.min(i,b.lastLine())>=g&&(f=be(b,ce(Yd(b,i))-a.wrapper.clientHeight),g=i)}return{from:f,to:Math.max(g,f+1)}}function v(a){var b=a.display,c=b.view;if(b.alignWidgets||b.gutters.firstChild&&a.options.fixedGutter){for(var d=y(b)-b.scroller.scrollLeft+a.doc.scrollLeft,e=b.gutters.offsetWidth,f=d+"px",g=0;g=c.viewFrom&&b.visible.to<=c.viewTo&&(null==c.updateLineNumbers||c.updateLineNumbers>=c.viewTo)&&c.renderedView==c.view&&0==Pb(a))return!1;w(a)&&(Lb(a),b.dims=H(a));var e=d.first+d.size,f=Math.max(b.visible.from-a.options.viewportMargin,d.first),g=Math.min(e,b.visible.to+a.options.viewportMargin);c.viewFromg&&c.viewTo-g<20&&(g=Math.min(e,c.viewTo)),Jf&&(f=td(a.doc,f),g=ud(a.doc,g));var h=f!=c.viewFrom||g!=c.viewTo||c.lastWrapHeight!=b.wrapperHeight||c.lastWrapWidth!=b.wrapperWidth;Ob(a,f,g),c.viewOffset=ce(Yd(a.doc,c.viewFrom)),a.display.mover.style.top=c.viewOffset+"px";var i=Pb(a);if(!h&&0==i&&!b.force&&c.renderedView==c.view&&(null==c.updateLineNumbers||c.updateLineNumbers>=c.viewTo))return!1;var j=Se();return i>4&&(c.lineDiv.style.display="none"),I(a,c.updateLineNumbers,b.dims),i>4&&(c.lineDiv.style.display=""),c.renderedView=c.view,j&&Se()!=j&&j.offsetHeight&&j.focus(),Qe(c.cursorDiv),Qe(c.selectionDiv),c.gutters.style.height=c.sizer.style.minHeight=0,h&&(c.lastWrapHeight=b.wrapperHeight,c.lastWrapWidth=b.wrapperWidth,Na(a,400)),c.updateLineNumbers=null,!0}function C(a,b){for(var c=b.viewport,d=!0;(d&&a.options.lineWrapping&&b.oldDisplayWidth!=Va(a)||(c&&null!=c.top&&(c={top:Math.min(a.doc.height+Sa(a.display)-Wa(a),c.top)}),b.visible=u(a.display,a.doc,c),!(b.visible.from>=a.display.viewFrom&&b.visible.to<=a.display.viewTo)))&&B(a,b);d=!1){F(a);var e=o(a);Ia(a),E(a,e),s(a,e)}parseInt(a.display.gutters.style.height)>a.display.scroller.clientHeight&&(a.display.gutters.style.height=a.display.scroller.clientHeight+"px"),b.signal(a,"update",a),(a.display.viewFrom!=a.display.reportedViewFrom||a.display.viewTo!=a.display.reportedViewTo)&&(b.signal(a,"viewportChange",a,a.display.viewFrom,a.display.viewTo),a.display.reportedViewFrom=a.display.viewFrom,a.display.reportedViewTo=a.display.viewTo)}function D(a,b){var c=new z(a,b);if(B(a,c)){F(a),C(a,c);var d=o(a);Ia(a),E(a,d),s(a,d),c.finish()}}function E(a,b){a.display.sizer.style.minHeight=b.docHeight+"px",a.display.heightForcer.style.top=b.docHeight+"px",a.display.gutters.style.height=Math.max(b.docHeight+a.display.barHeight+Ua(a),b.clientHeight)+"px"}function F(a){for(var b=a.display,c=b.lineDiv.offsetTop,d=0;dtf){var g=f.node.offsetTop+f.node.offsetHeight;e=g-c,c=g}else{var h=f.node.getBoundingClientRect();e=h.bottom-h.top}var i=f.line.height-e;if(2>e&&(e=sb(b)),(i>.001||-.001>i)&&(_d(f.line,e),G(f.line),f.rest))for(var j=0;j=b&&l.lineNumber;l.changes&&(Ge(l.changes,"gutter")>-1&&(m=!1),J(a,l,j,c)),m&&(Qe(l.lineNumber),l.lineNumber.appendChild(document.createTextNode(x(a.options,j)))),h=l.node.nextSibling}else{var n=R(a,l,j,c);g.insertBefore(n,h)}j+=l.size}for(;h;)h=d(h)}function J(a,b,c,d){for(var e=0;etf&&(a.node.style.zIndex=2)),a.node}function L(a){var b=a.bgClass?a.bgClass+" "+(a.line.bgClass||""):a.line.bgClass;if(b&&(b+=" CodeMirror-linebackground"),a.background)b?a.background.className=b:(a.background.parentNode.removeChild(a.background),a.background=null);else if(b){var c=K(a);a.background=c.insertBefore(Pe("div",null,b),c.firstChild)}}function M(a,b){var c=a.display.externalMeasured;return c&&c.line==b.line?(a.display.externalMeasured=null,b.measure=c.measure,c.built):Ld(a,b)}function N(a,b){var c=b.text.className,d=M(a,b);b.text==b.node&&(b.node=d.pre),b.text.parentNode.replaceChild(d.pre,b.text),b.text=d.pre,d.bgClass!=b.bgClass||d.textClass!=b.textClass?(b.bgClass=d.bgClass,b.textClass=d.textClass,O(b)):c&&(b.text.className=c)}function O(a){L(a),a.line.wrapClass?K(a).className=a.line.wrapClass:a.node!=a.text&&(a.node.className="");var b=a.textClass?a.textClass+" "+(a.line.textClass||""):a.line.textClass;a.text.className=b||""}function P(a,b,c,d){if(b.gutter&&(b.node.removeChild(b.gutter),b.gutter=null),b.gutterBackground&&(b.node.removeChild(b.gutterBackground),b.gutterBackground=null),b.line.gutterClass){var e=K(b);b.gutterBackground=Pe("div",null,"CodeMirror-gutter-background "+b.line.gutterClass,"left: "+(a.options.fixedGutter?d.fixedPos:-d.gutterTotalWidth)+"px; width: "+d.gutterTotalWidth+"px"),e.insertBefore(b.gutterBackground,b.text)}var f=b.line.gutterMarkers;if(a.options.lineNumbers||f){var e=K(b),g=b.gutter=Pe("div",null,"CodeMirror-gutter-wrapper","left: "+(a.options.fixedGutter?d.fixedPos:-d.gutterTotalWidth)+"px");if(a.display.input.setUneditable(g),e.insertBefore(g,b.text),b.line.gutterClass&&(g.className+=" "+b.line.gutterClass),!a.options.lineNumbers||f&&f["CodeMirror-linenumbers"]||(b.lineNumber=g.appendChild(Pe("div",x(a.options,c),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+d.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+a.display.lineNumInnerWidth+"px"))),f)for(var h=0;h1)if(Mf&&Mf.join("\n")==b){if(d.ranges.length%Mf.length==0){i=[];for(var j=0;j=0;j--){var k=d.ranges[j],l=k.from(),m=k.to();k.empty()&&(c&&c>0?l=Kf(l.line,l.ch-c):a.state.overwrite&&!g&&(m=Kf(m.line,Math.min(Yd(f,m.line).text.length,m.ch+Fe(h).length))));var n=a.curOp.updateInput,o={from:l,to:m,text:i?i[j%i.length]:h,origin:e||(g?"paste":a.state.cutIncoming?"cut":"+input")};zc(a.doc,o),xe(a,"inputRead",a,o)}b&&!g&&_(a,b),Lc(a),a.curOp.updateInput=n,a.curOp.typing=!0,a.state.pasteIncoming=a.state.cutIncoming=!1}function $(a,b){var c=a.clipboardData&&a.clipboardData.getData("text/plain");return c?(a.preventDefault(),b.isReadOnly()||b.options.disableInput||Db(b,function(){Z(b,c,0,null,"paste")}),!0):void 0}function _(a,b){if(a.options.electricChars&&a.options.smartIndent)for(var c=a.doc.sel,d=c.ranges.length-1;d>=0;d--){var e=c.ranges[d];if(!(e.head.ch>100||d&&c.ranges[d-1].head.line==e.head.line)){var f=a.getModeAt(e.head),g=!1;if(f.electricChars){for(var h=0;h-1){g=Nc(a,e.head.line,"smart");break}}else f.electricInput&&f.electricInput.test(Yd(a.doc,e.head.line).text.slice(0,e.head.ch))&&(g=Nc(a,e.head.line,"smart"));g&&xe(a,"electricInput",a,e.head.line)}}}function aa(a){for(var b=[],c=[],d=0;de?j.map:k[e],g=0;ge?a.line:a.rest[e]),l=f[g]+d;return(0>d||h!=b)&&(l=f[g+(d?1:0)]),Kf(i,l)}}}var e=a.text.firstChild,f=!1;if(!b||!Ug(e,b))return ga(Kf(ae(a.line),0),!0);if(b==e&&(f=!0,b=e.childNodes[c],c=0,!b)){var g=a.rest?Fe(a.rest):a.line;return ga(Kf(ae(g),g.text.length),f)}var h=3==b.nodeType?b:null,i=b;for(h||1!=b.childNodes.length||3!=b.firstChild.nodeType||(h=b.firstChild,c&&(c=h.nodeValue.length));i.parentNode!=e;)i=i.parentNode;var j=a.measure,k=j.maps,l=d(h,i,c);if(l)return ga(l,f);for(var m=i.nextSibling,n=h?h.nodeValue.length-c:0;m;m=m.nextSibling){if(l=d(m,m.firstChild,0))return ga(Kf(l.line,l.ch-n),f);n+=m.textContent.length}for(var o=i.previousSibling,n=c;o;o=o.previousSibling){if(l=d(o,o.firstChild,-1))return ga(Kf(l.line,l.ch+n),f);n+=m.textContent.length}}function ja(a,b,c,d,e){function f(a){return function(b){return b.id==a}}function g(b){if(1==b.nodeType){var c=b.getAttribute("cm-text");if(null!=c)return""==c&&(c=b.textContent.replace(/\u200b/g,"")),void(h+=c);var k,l=b.getAttribute("cm-marker");if(l){var m=a.findMarks(Kf(d,0),Kf(e+1,0),f(+l));return void(m.length&&(k=m[0].find())&&(h+=Zd(a.doc,k.from,k.to).join(j)))}if("false"==b.getAttribute("contenteditable"))return;for(var n=0;n=0){var g=X(f.from(),e.from()),h=W(f.to(),e.to()),i=f.empty()?e.from()==e.head:f.from()==f.head;b>=d&&--b,a.splice(--d,2,new la(i?h:g,i?g:h))}}return new ka(a,b)}function na(a,b){return new ka([new la(a,b||a)],0)}function oa(a,b){return Math.max(a.first,Math.min(b,a.first+a.size-1))}function pa(a,b){if(b.linec?Kf(c,Yd(a,c).text.length):qa(b,Yd(a,b.line).text.length)}function qa(a,b){var c=a.ch;return null==c||c>b?Kf(a.line,b):0>c?Kf(a.line,0):a}function ra(a,b){return b>=a.first&&b=b.ch:h.to>b.ch))){if(e&&(Fg(i,"beforeCursorEnter"),i.explicitlyCleared)){if(f.markedSpans){--g;continue}break}if(!i.atomic)continue;if(c){var j,k=i.find(0>d?1:-1);if((0>d?i.inclusiveRight:i.inclusiveLeft)&&(k=Ha(a,k,-d,k&&k.line==b.line?f:null)),k&&k.line==b.line&&(j=Lf(k,c))&&(0>d?0>j:j>0))return Fa(a,k,b,d,e)}var l=i.find(0>d?-1:1);return(0>d?i.inclusiveLeft:i.inclusiveRight)&&(l=Ha(a,l,d,l.line==b.line?f:null)),l?Fa(a,l,b,d,e):null}}return b}function Ga(a,b,c,d,e){var f=d||1,g=Fa(a,b,c,f,e)||!e&&Fa(a,b,c,f,!0)||Fa(a,b,c,-f,e)||!e&&Fa(a,b,c,-f,!0);return g?g:(a.cantEdit=!0,Kf(a.first,0))}function Ha(a,b,c,d){return 0>c&&0==b.ch?b.line>a.first?pa(a,Kf(b.line-1)):null:c>0&&b.ch==(d||Yd(a,b.line)).text.length?b.line=a.display.viewTo||h.to().lineb&&(b=0),b=Math.round(b),d=Math.round(d),h.appendChild(Pe("div",null,"CodeMirror-selected","position: absolute; left: "+a+"px; top: "+b+"px; width: "+(null==c?k-a:c)+"px; height: "+(d-b)+"px"))}function e(b,c,e){function f(c,d){return mb(a,Kf(b,c),"div",l,d)}var h,i,l=Yd(g,b),m=l.text.length;return _e(de(l),c||0,null==e?m:e,function(a,b,g){var l,n,o,p=f(a,"left");if(a==b)l=p,n=o=p.left;else{if(l=f(b-1,"right"),"rtl"==g){var q=p;p=l,l=q}n=p.left,o=l.right}null==c&&0==a&&(n=j),l.top-p.top>3&&(d(n,p.top,null,p.bottom),n=j,p.bottomi.bottom||l.bottom==i.bottom&&l.right>i.right)&&(i=l),j+1>n&&(n=j),d(n,l.top,o-n,l.bottom)}),{start:h,end:i}}var f=a.display,g=a.doc,h=document.createDocumentFragment(),i=Ta(a.display),j=i.left,k=Math.max(f.sizerWidth,Va(a)-f.sizer.offsetLeft)-i.right,l=b.from(),m=b.to();if(l.line==m.line)e(l.line,l.ch,m.ch);else{var n=Yd(g,l.line),o=Yd(g,m.line),p=rd(n)==rd(o),q=e(l.line,l.ch,p?n.text.length+1:null).end,r=e(m.line,p?0:null,m.ch).start;p&&(q.top0?b.blinker=setInterval(function(){b.cursorDiv.style.visibility=(c=!c)?"":"hidden"},a.options.cursorBlinkRate):a.options.cursorBlinkRate<0&&(b.cursorDiv.style.visibility="hidden")}}function Na(a,b){a.doc.mode.startState&&a.doc.frontier=a.display.viewTo)){var c=+new Date+a.options.workTime,d=gg(b.mode,Qa(a,b.frontier)),e=[];b.iter(b.frontier,Math.min(b.first+b.size,a.display.viewTo+500),function(f){if(b.frontier>=a.display.viewFrom){var g=f.styles,h=f.text.length>a.options.maxHighlightLength,i=Hd(a,f,h?gg(b.mode,d):d,!0);f.styles=i.styles;var j=f.styleClasses,k=i.classes;k?f.styleClasses=k:j&&(f.styleClasses=null);for(var l=!g||g.length!=f.styles.length||j!=k&&(!j||!k||j.bgClass!=k.bgClass||j.textClass!=k.textClass),m=0;!l&&mc?(Na(a,a.options.workDelay),!0):void 0}),e.length&&Db(a,function(){for(var b=0;bg;--h){if(h<=f.first)return f.first;var i=Yd(f,h-1);if(i.stateAfter&&(!c||h<=f.frontier))return h;var j=Mg(i.text,null,a.options.tabSize);(null==e||d>j)&&(e=h-1,d=j)}return e}function Qa(a,b,c){var d=a.doc,e=a.display;if(!d.mode.startState)return!0;var f=Pa(a,b,c),g=f>d.first&&Yd(d,f-1).stateAfter;return g=g?gg(d.mode,g):hg(d.mode),d.iter(f,b,function(c){Jd(a,c.text,g);var h=f==b-1||f%5==0||f>=e.viewFrom&&f2&&f.push((i.bottom+j.top)/2-c.top)}}f.push(c.bottom-c.top)}}function Ya(a,b,c){if(a.line==b)return{map:a.measure.map,cache:a.measure.cache};for(var d=0;dc)return{map:a.measure.maps[d],cache:a.measure.caches[d],before:!0}}function Za(a,b){b=rd(b);var c=ae(b),d=a.display.externalMeasured=new Hb(a.doc,b,c);d.lineN=c;var e=d.built=Ld(a,d);return d.text=e.pre,Re(a.display.lineMeasure,e.pre),d}function $a(a,b,c,d){return bb(a,ab(a,b),c,d)}function _a(a,b){if(b>=a.display.viewFrom&&b=c.lineN&&bb?(e=0,f=1,g="left"):j>b?(e=b-i,f=e+1):(h==a.length-3||b==j&&a[h+3]>b)&&(f=j-i,e=f-1,b>=j&&(g="right")),null!=e){if(d=a[h+2],i==j&&c==(d.insertLeft?"left":"right")&&(g=c),"left"==c&&0==e)for(;h&&a[h-2]==a[h-3]&&a[h-1].insertLeft;)d=a[(h-=3)+2],g="left";if("right"==c&&e==j-i)for(;hk;k++){for(;h&&Oe(b.line.text.charAt(f.coverStart+h));)--h;for(;f.coverStart+itf&&0==h&&i==f.coverEnd-f.coverStart)e=g.parentNode.getBoundingClientRect();else if(sf&&a.options.lineWrapping){var l=Qg(g,h,i).getClientRects();e=l.length?l["right"==d?l.length-1:0]:Qf}else e=Qg(g,h,i).getBoundingClientRect()||Qf;if(e.left||e.right||0==h)break;i=h,h-=1,j="right"}sf&&11>tf&&(e=eb(a.display.measure,e))}else{h>0&&(j=d="right");var l;e=a.options.lineWrapping&&(l=g.getClientRects()).length>1?l["right"==d?l.length-1:0]:g.getBoundingClientRect()}if(sf&&9>tf&&!h&&(!e||!e.left&&!e.right)){var m=g.parentNode.getClientRects()[0];e=m?{left:m.left,right:m.left+tb(a.display),top:m.top,bottom:m.bottom}:Qf}for(var n=e.top-b.rect.top,o=e.bottom-b.rect.top,p=(n+o)/2,q=b.view.measure.heights,k=0;kc.from?g(a-1):g(a,d)}d=d||Yd(a.doc,b.line),e||(e=ab(a,d));var i=de(d),j=b.ch;if(!i)return g(j);var k=jf(i,j),l=h(j,k);return null!=eh&&(l.other=h(j,eh)),l}function ob(a,b){var c=0,b=pa(a.doc,b);a.options.lineWrapping||(c=tb(a.display)*b.ch);var d=Yd(a.doc,b.line),e=ce(d)+Ra(a.display);return{left:c,right:c,top:e,bottom:e+d.height}}function pb(a,b,c,d){var e=Kf(a,b);return e.xRel=d,c&&(e.outside=!0),e}function qb(a,b,c){var d=a.doc;if(c+=a.display.viewOffset,0>c)return pb(d.first,0,!0,-1);var e=be(d,c),f=d.first+d.size-1;if(e>f)return pb(d.first+d.size-1,Yd(d,f).text.length,!0,1);0>b&&(b=0);for(var g=Yd(d,e);;){var h=rb(a,g,e,b,c),i=pd(g),j=i&&i.find(0,!0);if(!i||!(h.ch>j.from.ch||h.ch==j.from.ch&&h.xRel>0))return h;e=ae(g=j.to.line)}}function rb(a,b,c,d,e){function f(d){var e=nb(a,Kf(c,d),"line",b,j);return h=!0,g>e.bottom?e.left-i:gq)return pb(c,n,r,1);for(;;){if(k?n==m||n==lf(b,m,1):1>=n-m){for(var s=o>d||q-d>=d-o?m:n,t=d-(s==m?o:q);Oe(b.text.charAt(s));)++s;var u=pb(c,s,s==m?p:r,-1>t?-1:t>1?1:0);return u}var v=Math.ceil(l/2),w=m+v;if(k){w=m;for(var x=0;v>x;++x)w=lf(b,w,1)}var y=f(w);y>d?(n=w,q=y,(r=h)&&(q+=1e3),l=v):(m=w,o=y,p=h,l-=v)}}function sb(a){if(null!=a.cachedTextHeight)return a.cachedTextHeight;if(null==Nf){Nf=Pe("pre");for(var b=0;49>b;++b)Nf.appendChild(document.createTextNode("x")),Nf.appendChild(Pe("br"));Nf.appendChild(document.createTextNode("x"))}Re(a.measure,Nf);var c=Nf.offsetHeight/50;return c>3&&(a.cachedTextHeight=c),Qe(a.measure),c||1}function tb(a){if(null!=a.cachedCharWidth)return a.cachedCharWidth;var b=Pe("span","xxxxxxxxxx"),c=Pe("pre",[b]);Re(a.measure,c);var d=b.getBoundingClientRect(),e=(d.right-d.left)/10;return e>2&&(a.cachedCharWidth=e),e||10}function ub(a){a.curOp={cm:a,viewChanged:!1,startHeight:a.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Sf},Rf?Rf.ops.push(a.curOp):a.curOp.ownsGroup=Rf={ops:[a.curOp],delayedCallbacks:[]}}function vb(a){var b=a.delayedCallbacks,c=0;do{for(;c=c.viewTo)||c.maxLineChanged&&b.options.lineWrapping,a.update=a.mustUpdate&&new z(b,a.mustUpdate&&{top:a.scrollTop,ensure:a.scrollToPos},a.forceUpdate)}function zb(a){a.updatedDisplay=a.mustUpdate&&B(a.cm,a.update)}function Ab(a){var b=a.cm,c=b.display;a.updatedDisplay&&F(b),a.barMeasure=o(b),c.maxLineChanged&&!b.options.lineWrapping&&(a.adjustWidthTo=$a(b,c.maxLine,c.maxLine.text.length).left+3,b.display.sizerWidth=a.adjustWidthTo,a.barMeasure.scrollWidth=Math.max(c.scroller.clientWidth,c.sizer.offsetLeft+a.adjustWidthTo+Ua(b)+b.display.barWidth),a.maxScrollLeft=Math.max(0,c.sizer.offsetLeft+a.adjustWidthTo-Va(b))),(a.updatedDisplay||a.selectionChanged)&&(a.preparedSelection=c.input.prepareSelection())}function Bb(a){var b=a.cm;null!=a.adjustWidthTo&&(b.display.sizer.style.minWidth=a.adjustWidthTo+"px",a.maxScrollLeftf;f=d){var g=new Hb(a.doc,Yd(a.doc,f),f);d=f+g.size,e.push(g)}return e}function Jb(a,b,c,d){null==b&&(b=a.doc.first),null==c&&(c=a.doc.first+a.doc.size),d||(d=0);var e=a.display;if(d&&cb)&&(e.updateLineNumbers=b),a.curOp.viewChanged=!0,b>=e.viewTo)Jf&&td(a.doc,b)e.viewFrom?Lb(a):(e.viewFrom+=d,e.viewTo+=d);else if(b<=e.viewFrom&&c>=e.viewTo)Lb(a);else if(b<=e.viewFrom){var f=Nb(a,c,c+d,1);f?(e.view=e.view.slice(f.index),e.viewFrom=f.lineN,e.viewTo+=d):Lb(a)}else if(c>=e.viewTo){var f=Nb(a,b,b,-1);f?(e.view=e.view.slice(0,f.index),e.viewTo=f.lineN):Lb(a)}else{var g=Nb(a,b,b,-1),h=Nb(a,c,c+d,1);g&&h?(e.view=e.view.slice(0,g.index).concat(Ib(a,g.lineN,h.lineN)).concat(e.view.slice(h.index)),e.viewTo+=d):Lb(a)}var i=e.externalMeasured;i&&(c=e.lineN&&b=d.viewTo)){var f=d.view[Mb(a,b)];if(null!=f.node){var g=f.changes||(f.changes=[]);-1==Ge(g,c)&&g.push(c)}}}function Lb(a){a.display.viewFrom=a.display.viewTo=a.doc.first,a.display.view=[],a.display.viewOffset=0}function Mb(a,b){if(b>=a.display.viewTo)return null;if(b-=a.display.viewFrom,0>b)return null;for(var c=a.display.view,d=0;db)return d}function Nb(a,b,c,d){var e,f=Mb(a,b),g=a.display.view;if(!Jf||c==a.doc.first+a.doc.size)return{index:f,lineN:c};for(var h=0,i=a.display.viewFrom;f>h;h++)i+=g[h].size;if(i!=b){if(d>0){if(f==g.length-1)return null;e=i+g[f].size-b,f++}else e=i-b;b+=e,c+=e}for(;td(a.doc,c)!=c;){if(f==(0>d?0:g.length-1))return null;c+=d*g[f-(0>d?1:0)].size,f+=d}return{index:f,lineN:c}}function Ob(a,b,c){var d=a.display,e=d.view;0==e.length||b>=d.viewTo||c<=d.viewFrom?(d.view=Ib(a,b,c),d.viewFrom=b):(d.viewFrom>b?d.view=Ib(a,b,d.viewFrom).concat(d.view):d.viewFromc&&(d.view=d.view.slice(0,Mb(a,c)))),d.viewTo=c}function Pb(a){for(var b=a.display.view,c=0,d=0;d400}var e=a.display;Cg(e.scroller,"mousedown",Eb(a,Vb)),sf&&11>tf?Cg(e.scroller,"dblclick",Eb(a,function(b){if(!ze(a,b)){var c=Ub(a,b);if(c&&!$b(a,b)&&!Tb(a.display,b)){zg(b);var d=a.findWordAt(c);ua(a.doc,d.anchor,d.head)}}})):Cg(e.scroller,"dblclick",function(b){ze(a,b)||zg(b)}),Hf||Cg(e.scroller,"contextmenu",function(b){sc(a,b)});var f,g={end:0};Cg(e.scroller,"touchstart",function(b){if(!ze(a,b)&&!c(b)){clearTimeout(f);var d=+new Date;e.activeTouch={start:d,moved:!1,prev:d-g.end<=300?g:null},1==b.touches.length&&(e.activeTouch.left=b.touches[0].pageX,e.activeTouch.top=b.touches[0].pageY)}}),Cg(e.scroller,"touchmove",function(){e.activeTouch&&(e.activeTouch.moved=!0)}),Cg(e.scroller,"touchend",function(c){var f=e.activeTouch;if(f&&!Tb(e,c)&&null!=f.left&&!f.moved&&new Date-f.start<300){var g,h=a.coordsChar(e.activeTouch,"page");g=!f.prev||d(f,f.prev)?new la(h,h):!f.prev.prev||d(f,f.prev.prev)?a.findWordAt(h):new la(Kf(h.line,0),pa(a.doc,Kf(h.line+1,0))),a.setSelection(g.anchor,g.head),a.focus(),zg(c)}b()}),Cg(e.scroller,"touchcancel",b),Cg(e.scroller,"scroll",function(){e.scroller.clientHeight&&(dc(a,e.scroller.scrollTop),ec(a,e.scroller.scrollLeft,!0),Fg(a,"scroll",a))}),Cg(e.scroller,"mousewheel",function(b){fc(a,b)}),Cg(e.scroller,"DOMMouseScroll",function(b){fc(a,b)}),Cg(e.wrapper,"scroll",function(){e.wrapper.scrollTop=e.wrapper.scrollLeft=0}),e.dragFunctions={enter:function(b){ze(a,b)||Bg(b)},over:function(b){ze(a,b)||(bc(a,b),Bg(b))},start:function(b){ac(a,b)},drop:Eb(a,_b),leave:function(b){ze(a,b)||cc(a)}};var h=e.input.getField();Cg(h,"keyup",function(b){nc.call(a,b)}),Cg(h,"keydown",Eb(a,lc)),Cg(h,"keypress",Eb(a,oc)),Cg(h,"focus",Le(qc,a)),Cg(h,"blur",Le(rc,a))}function Rb(b,c,d){var e=d&&d!=a.Init;if(!c!=!e){var f=b.display.dragFunctions,g=c?Cg:Eg;g(b.display.scroller,"dragstart",f.start),g(b.display.scroller,"dragenter",f.enter),g(b.display.scroller,"dragover",f.over),g(b.display.scroller,"dragleave",f.leave),g(b.display.scroller,"drop",f.drop)}}function Sb(a){var b=a.display;(b.lastWrapHeight!=b.wrapper.clientHeight||b.lastWrapWidth!=b.wrapper.clientWidth)&&(b.cachedCharWidth=b.cachedTextHeight=b.cachedPaddingH=null,b.scrollbarsClipped=!1,a.setSize())}function Tb(a,b){for(var c=ue(b);c!=a.wrapper;c=c.parentNode)if(!c||1==c.nodeType&&"true"==c.getAttribute("cm-ignore-events")||c.parentNode==a.sizer&&c!=a.mover)return!0}function Ub(a,b,c,d){var e=a.display;if(!c&&"true"==ue(b).getAttribute("cm-not-content"))return null;var f,g,h=e.lineSpace.getBoundingClientRect();try{f=b.clientX-h.left,g=b.clientY-h.top}catch(b){return null}var i,j=qb(a,f,g);if(d&&1==j.xRel&&(i=Yd(a.doc,j.line).text).length==j.ch){var k=Mg(i,i.length,a.options.tabSize)-i.length;j=Kf(j.line,Math.max(0,Math.round((f-Ta(a.display).left)/tb(a.display))-k))}return j}function Vb(a){var b=this,c=b.display;if(!(ze(b,a)||c.activeTouch&&c.input.supportsTouch())){if(c.shift=a.shiftKey,Tb(c,a))return void(uf||(c.scroller.draggable=!1,setTimeout(function(){c.scroller.draggable=!0},100)));if(!$b(b,a)){var d=Ub(b,a);switch(window.focus(),ve(a)){case 1:b.state.selectingText?b.state.selectingText(a):d?Wb(b,a,d):ue(a)==c.scroller&&zg(a);break;case 2:uf&&(b.state.lastMiddleDown=+new Date),d&&ua(b.doc,d),setTimeout(function(){c.input.focus()},20),zg(a);break;case 3:Hf?sc(b,a):pc(b)}}}}function Wb(a,b,c){sf?setTimeout(Le(Y,a),0):a.curOp.focus=Se();var d,e=+new Date;Pf&&Pf.time>e-400&&0==Lf(Pf.pos,c)?d="triple":Of&&Of.time>e-400&&0==Lf(Of.pos,c)?(d="double",Pf={time:e,pos:c}):(d="single",Of={time:e,pos:c});var f,g=a.doc.sel,h=Df?b.metaKey:b.ctrlKey;a.options.dragDrop&&$g&&!a.isReadOnly()&&"single"==d&&(f=g.contains(c))>-1&&(Lf((f=g.ranges[f]).from(),c)<0||c.xRel>0)&&(Lf(f.to(),c)>0||c.xRel<0)?Xb(a,b,c,h):Yb(a,b,c,d,h)}function Xb(a,b,c,d){var e=a.display,f=+new Date,g=Eb(a,function(h){uf&&(e.scroller.draggable=!1),a.state.draggingText=!1,Eg(document,"mouseup",g),Eg(e.scroller,"drop",g),Math.abs(b.clientX-h.clientX)+Math.abs(b.clientY-h.clientY)<10&&(zg(h),!d&&+new Date-200=o;o++){var r=Yd(j,o).text,s=Ng(r,i,f);i==n?e.push(new la(Kf(o,s),Kf(o,s))):r.length>s&&e.push(new la(Kf(o,s),Kf(o,Ng(r,n,f))))}e.length||e.push(new la(c,c)),Aa(j,ma(m.ranges.slice(0,l).concat(e),l),{origin:"*mouse",scroll:!1}),a.scrollIntoView(b)}else{var t=k,u=t.anchor,v=b;if("single"!=d){if("double"==d)var w=a.findWordAt(b);else var w=new la(Kf(b.line,0),pa(j,Kf(b.line+1,0)));Lf(w.anchor,u)>0?(v=w.head,u=X(t.from(),w.anchor)):(v=w.anchor,u=W(t.to(),w.head))}var e=m.ranges.slice(0);e[l]=new la(pa(j,u),v),Aa(j,ma(e,l),Kg)}}function g(b){var c=++s,e=Ub(a,b,!0,"rect"==d);if(e)if(0!=Lf(e,q)){a.curOp.focus=Se(),f(e);var h=u(i,j);(e.line>=h.to||e.liner.bottom?20:0;k&&setTimeout(Eb(a,function(){s==c&&(i.scroller.scrollTop+=k,g(b))}),50)}}function h(b){a.state.selectingText=!1,s=1/0,zg(b),i.input.focus(),Eg(document,"mousemove",t),Eg(document,"mouseup",v),j.history.lastSelOrigin=null}var i=a.display,j=a.doc;zg(b);var k,l,m=j.sel,n=m.ranges;if(e&&!b.shiftKey?(l=j.sel.contains(c),k=l>-1?n[l]:new la(c,c)):(k=j.sel.primary(),l=j.sel.primIndex),b.altKey)d="rect",e||(k=new la(c,c)),c=Ub(a,b,!0,!0),l=-1;else if("double"==d){var o=a.findWordAt(c);k=a.display.shift||j.extend?ta(j,k,o.anchor,o.head):o}else if("triple"==d){var p=new la(Kf(c.line,0),pa(j,Kf(c.line+1,0)));k=a.display.shift||j.extend?ta(j,k,p.anchor,p.head):p}else k=ta(j,k,c);e?-1==l?(l=n.length,Aa(j,ma(n.concat([k]),l),{scroll:!1,origin:"*mouse"})):n.length>1&&n[l].empty()&&"single"==d&&!b.shiftKey?(Aa(j,ma(n.slice(0,l).concat(n.slice(l+1)),0),{scroll:!1,origin:"*mouse"}),m=j.sel):wa(j,l,k,Kg):(l=0,Aa(j,new ka([k],0),Kg),m=j.sel);var q=c,r=i.wrapper.getBoundingClientRect(),s=0,t=Eb(a,function(a){ve(a)?g(a):h(a)}),v=Eb(a,h);a.state.selectingText=v,Cg(document,"mousemove",t),Cg(document,"mouseup",v)}function Zb(a,b,c,d){try{var e=b.clientX,f=b.clientY}catch(b){return!1}if(e>=Math.floor(a.display.gutters.getBoundingClientRect().right))return!1;d&&zg(b);var g=a.display,h=g.lineDiv.getBoundingClientRect();if(f>h.bottom||!Be(a,c))return te(b);f-=h.top-g.viewOffset;for(var i=0;i=e){var k=be(a.doc,f),l=a.options.gutters[i];return Fg(a,c,a,k,l,b),te(b)}}}function $b(a,b){return Zb(a,b,"gutterClick",!0)}function _b(a){var b=this;if(cc(b),!ze(b,a)&&!Tb(b.display,a)){zg(a),sf&&(Tf=+new Date);var c=Ub(b,a,!0),d=a.dataTransfer.files;if(c&&!b.isReadOnly())if(d&&d.length&&window.FileReader&&window.File)for(var e=d.length,f=Array(e),g=0,h=function(a,d){if(!b.options.allowDropFileTypes||-1!=Ge(b.options.allowDropFileTypes,a.type)){var h=new FileReader;h.onload=Eb(b,function(){var a=h.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(a)&&(a=""),f[d]=a,++g==e){c=pa(b.doc,c);var i={from:c,to:c,text:b.doc.splitLines(f.join(b.doc.lineSeparator())),origin:"paste"};zc(b.doc,i),za(b.doc,na(c,Zf(i)))}}),h.readAsText(a)}},i=0;e>i;++i)h(d[i],i);else{if(b.state.draggingText&&b.doc.sel.contains(c)>-1)return b.state.draggingText(a),void setTimeout(function(){b.display.input.focus()},20);try{var f=a.dataTransfer.getData("Text");if(f){if(b.state.draggingText&&!(Df?a.altKey:a.ctrlKey))var j=b.listSelections();if(Ba(b.doc,na(c,c)),j)for(var i=0;ig.clientWidth,i=g.scrollHeight>g.clientHeight;if(d&&h||e&&i){if(e&&Df&&uf)a:for(var j=b.target,k=f.view;j!=g;j=j.parentNode)for(var l=0;lm?n=Math.max(0,n+m-50):o=Math.min(a.doc.height,o+m+50),D(a,{top:n,bottom:o})}20>Uf&&(null==f.wheelStartX?(f.wheelStartX=g.scrollLeft,f.wheelStartY=g.scrollTop,f.wheelDX=d,f.wheelDY=e,setTimeout(function(){if(null!=f.wheelStartX){var a=g.scrollLeft-f.wheelStartX,b=g.scrollTop-f.wheelStartY,c=b&&f.wheelDY&&b/f.wheelDY||a&&f.wheelDX&&a/f.wheelDX;f.wheelStartX=f.wheelStartY=null,c&&(Vf=(Vf*Uf+c)/(Uf+1),++Uf)}},200)):(f.wheelDX+=d,f.wheelDY+=e))}}function gc(a,b,c){if("string"==typeof b&&(b=ig[b],!b))return!1;a.display.input.ensurePolled();var d=a.display.shift,e=!1;try{a.isReadOnly()&&(a.state.suppressEdits=!0),c&&(a.display.shift=!1),e=b(a)!=Ig}finally{a.display.shift=d,a.state.suppressEdits=!1}return e}function hc(a,b,c){for(var d=0;dtf&&27==a.keyCode&&(a.returnValue=!1);var c=a.keyCode;b.display.shift=16==c||a.shiftKey;var d=jc(b,a);xf&&(Yf=d?c:null,!d&&88==c&&!bh&&(Df?a.metaKey:a.ctrlKey)&&b.replaceSelection("",null,"cut")),18!=c||/\bCodeMirror-crosshair\b/.test(b.display.lineDiv.className)||mc(b)}}function mc(a){function b(a){18!=a.keyCode&&a.altKey||(Xg(c,"CodeMirror-crosshair"),Eg(document,"keyup",b),Eg(document,"mouseover",b))}var c=a.display.lineDiv;Yg(c,"CodeMirror-crosshair"),Cg(document,"keyup",b),Cg(document,"mouseover",b)}function nc(a){16==a.keyCode&&(this.doc.sel.shift=!1),ze(this,a)}function oc(a){var b=this;if(!(Tb(b.display,a)||ze(b,a)||a.ctrlKey&&!a.altKey||Df&&a.metaKey)){var c=a.keyCode,d=a.charCode;if(xf&&c==Yf)return Yf=null,void zg(a);if(!xf||a.which&&!(a.which<10)||!jc(b,a)){var e=String.fromCharCode(null==d?c:d);kc(b,a,e)||b.display.input.onKeyPress(a)}}}function pc(a){a.state.delayingBlurEvent=!0,setTimeout(function(){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1,rc(a))},100)}function qc(a){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1),"nocursor"!=a.options.readOnly&&(a.state.focused||(Fg(a,"focus",a),a.state.focused=!0,Yg(a.display.wrapper,"CodeMirror-focused"),a.curOp||a.display.selForContextMenu==a.doc.sel||(a.display.input.reset(),uf&&setTimeout(function(){a.display.input.reset(!0)},20)),a.display.input.receivedFocus()),Ma(a))}function rc(a){a.state.delayingBlurEvent||(a.state.focused&&(Fg(a,"blur",a),a.state.focused=!1,Xg(a.display.wrapper,"CodeMirror-focused")),clearInterval(a.display.blinker),setTimeout(function(){a.state.focused||(a.display.shift=!1)},150))}function sc(a,b){Tb(a.display,b)||tc(a,b)||ze(a,b,"contextmenu")||a.display.input.onContextMenu(b)}function tc(a,b){return Be(a,"gutterContextMenu")?Zb(a,b,"gutterContextMenu",!1):!1}function uc(a,b){if(Lf(a,b.from)<0)return a;if(Lf(a,b.to)<=0)return Zf(b);var c=a.line+b.text.length-(b.to.line-b.from.line)-1,d=a.ch;return a.line==b.to.line&&(d+=Zf(b).ch-b.to.ch),Kf(c,d)}function vc(a,b){for(var c=[],d=0;d=0;--e)Ac(a,{from:d[e].from,to:d[e].to,text:e?[""]:b.text});else Ac(a,b)}}function Ac(a,b){if(1!=b.text.length||""!=b.text[0]||0!=Lf(b.from,b.to)){var c=vc(a,b);ie(a,b,c,a.cm?a.cm.curOp.id:NaN),Dc(a,b,c,ed(a,b));var d=[];Wd(a,function(a,c){c||-1!=Ge(d,a.history)||(se(a.history,b),d.push(a.history)),Dc(a,b,null,ed(a,b))})}}function Bc(a,b,c){if(!a.cm||!a.cm.state.suppressEdits){for(var d,e=a.history,f=a.sel,g="undo"==b?e.done:e.undone,h="undo"==b?e.undone:e.done,i=0;i=0;--i){var l=d.changes[i];if(l.origin=b,k&&!yc(a,l,!1))return void(g.length=0);j.push(fe(a,l));var m=i?vc(a,l):Fe(g);Dc(a,l,m,gd(a,l)),!i&&a.cm&&a.cm.scrollIntoView({from:l.from,to:Zf(l)});var n=[];Wd(a,function(a,b){b||-1!=Ge(n,a.history)||(se(a.history,l),n.push(a.history)),Dc(a,l,null,gd(a,l))})}}}}function Cc(a,b){if(0!=b&&(a.first+=b,a.sel=new ka(He(a.sel.ranges,function(a){return new la(Kf(a.anchor.line+b,a.anchor.ch),Kf(a.head.line+b,a.head.ch))}),a.sel.primIndex),a.cm)){Jb(a.cm,a.first,a.first-b,b);for(var c=a.cm.display,d=c.viewFrom;da.lastLine())){if(b.from.linef&&(b={from:b.from,to:Kf(f,Yd(a,f).text.length),text:[b.text[0]],origin:b.origin}),b.removed=Zd(a,b.from,b.to),c||(c=vc(a,b)),a.cm?Ec(a.cm,b,d):Td(a,b,d),Ba(a,c,Jg)}}function Ec(a,b,c){var d=a.doc,e=a.display,g=b.from,h=b.to,i=!1,j=g.line;a.options.lineWrapping||(j=ae(rd(Yd(d,g.line))),d.iter(j,h.line+1,function(a){return a==e.maxLine?(i=!0,!0):void 0})),d.sel.contains(b.from,b.to)>-1&&Ae(a),Td(d,b,c,f(a)),a.options.lineWrapping||(d.iter(j,g.line+b.text.length,function(a){var b=l(a);b>e.maxLineLength&&(e.maxLine=a,e.maxLineLength=b,e.maxLineChanged=!0,i=!1)}),i&&(a.curOp.updateMaxLine=!0)),d.frontier=Math.min(d.frontier,g.line),Na(a,400);var k=b.text.length-(h.line-g.line)-1;b.full?Jb(a):g.line!=h.line||1!=b.text.length||Sd(a.doc,b)?Jb(a,g.line,h.line+1,k):Kb(a,g.line,"text");var m=Be(a,"changes"),n=Be(a,"change");if(n||m){var o={from:g,to:h,text:b.text,removed:b.removed,origin:b.origin};n&&xe(a,"change",a,o),m&&(a.curOp.changeObjs||(a.curOp.changeObjs=[])).push(o)}a.display.selForContextMenu=null}function Fc(a,b,c,d,e){if(d||(d=c),Lf(d,c)<0){var f=d;d=c,c=f}"string"==typeof b&&(b=a.splitLines(b)),zc(a,{from:c,to:d,text:b,origin:e})}function Gc(a,b){if(!ze(a,"scrollCursorIntoView")){var c=a.display,d=c.sizer.getBoundingClientRect(),e=null;if(b.top+d.top<0?e=!0:b.bottom+d.top>(window.innerHeight||document.documentElement.clientHeight)&&(e=!1),null!=e&&!Af){var f=Pe("div","​",null,"position: absolute; top: "+(b.top-c.viewOffset-Ra(a.display))+"px; height: "+(b.bottom-b.top+Ua(a)+c.barHeight)+"px; left: "+b.left+"px; width: 2px;");a.display.lineSpace.appendChild(f),f.scrollIntoView(e),a.display.lineSpace.removeChild(f)}}}function Hc(a,b,c,d){null==d&&(d=0);for(var e=0;5>e;e++){var f=!1,g=nb(a,b),h=c&&c!=b?nb(a,c):g,i=Jc(a,Math.min(g.left,h.left),Math.min(g.top,h.top)-d,Math.max(g.left,h.left),Math.max(g.bottom,h.bottom)+d),j=a.doc.scrollTop,k=a.doc.scrollLeft;if(null!=i.scrollTop&&(dc(a,i.scrollTop),Math.abs(a.doc.scrollTop-j)>1&&(f=!0)),null!=i.scrollLeft&&(ec(a,i.scrollLeft),Math.abs(a.doc.scrollLeft-k)>1&&(f=!0)),!f)break}return g}function Ic(a,b,c,d,e){var f=Jc(a,b,c,d,e);null!=f.scrollTop&&dc(a,f.scrollTop),null!=f.scrollLeft&&ec(a,f.scrollLeft)}function Jc(a,b,c,d,e){var f=a.display,g=sb(a.display);0>c&&(c=0);var h=a.curOp&&null!=a.curOp.scrollTop?a.curOp.scrollTop:f.scroller.scrollTop,i=Wa(a),j={};e-c>i&&(e=c+i);var k=a.doc.height+Sa(f),l=g>c,m=e>k-g;if(h>c)j.scrollTop=l?0:c;else if(e>h+i){var n=Math.min(c,(m?k:e)-i);n!=h&&(j.scrollTop=n)}var o=a.curOp&&null!=a.curOp.scrollLeft?a.curOp.scrollLeft:f.scroller.scrollLeft,p=Va(a)-(a.options.fixedGutter?f.gutters.offsetWidth:0),q=d-b>p;return q&&(d=b+p),10>b?j.scrollLeft=0:o>b?j.scrollLeft=Math.max(0,b-(q?0:10)):d>p+o-3&&(j.scrollLeft=d+(q?0:10)-p),j}function Kc(a,b,c){(null!=b||null!=c)&&Mc(a),null!=b&&(a.curOp.scrollLeft=(null==a.curOp.scrollLeft?a.doc.scrollLeft:a.curOp.scrollLeft)+b),null!=c&&(a.curOp.scrollTop=(null==a.curOp.scrollTop?a.doc.scrollTop:a.curOp.scrollTop)+c); +}function Lc(a){Mc(a);var b=a.getCursor(),c=b,d=b;a.options.lineWrapping||(c=b.ch?Kf(b.line,b.ch-1):b,d=Kf(b.line,b.ch+1)),a.curOp.scrollToPos={from:c,to:d,margin:a.options.cursorScrollMargin,isCursor:!0}}function Mc(a){var b=a.curOp.scrollToPos;if(b){a.curOp.scrollToPos=null;var c=ob(a,b.from),d=ob(a,b.to),e=Jc(a,Math.min(c.left,d.left),Math.min(c.top,d.top)-b.margin,Math.max(c.right,d.right),Math.max(c.bottom,d.bottom)+b.margin);a.scrollTo(e.scrollLeft,e.scrollTop)}}function Nc(a,b,c,d){var e,f=a.doc;null==c&&(c="add"),"smart"==c&&(f.mode.indent?e=Qa(a,b):c="prev");var g=a.options.tabSize,h=Yd(f,b),i=Mg(h.text,null,g);h.stateAfter&&(h.stateAfter=null);var j,k=h.text.match(/^\s*/)[0];if(d||/\S/.test(h.text)){if("smart"==c&&(j=f.mode.indent(e,h.text.slice(k.length),h.text),j==Ig||j>150)){if(!d)return;c="prev"}}else j=0,c="not";"prev"==c?j=b>f.first?Mg(Yd(f,b-1).text,null,g):0:"add"==c?j=i+a.options.indentUnit:"subtract"==c?j=i-a.options.indentUnit:"number"==typeof c&&(j=i+c),j=Math.max(0,j);var l="",m=0;if(a.options.indentWithTabs)for(var n=Math.floor(j/g);n;--n)m+=g,l+=" ";if(j>m&&(l+=Ee(j-m)),l!=k)return Fc(f,l,Kf(b,0),Kf(b,k.length),"+input"),h.stateAfter=null,!0;for(var n=0;n=0;b--)Fc(a.doc,"",d[b].from,d[b].to,"+delete");Lc(a)})}function Qc(a,b,c,d,e){function f(){var b=h+c;return b=a.first+a.size?!1:(h=b,k=Yd(a,b))}function g(a){var b=(e?lf:mf)(k,i,c,!0);if(null==b){if(a||!f())return!1;i=e?(0>c?df:cf)(k):0>c?k.text.length:0}else i=b;return!0}var h=b.line,i=b.ch,j=c,k=Yd(a,h);if("char"==d)g();else if("column"==d)g(!0);else if("word"==d||"group"==d)for(var l=null,m="group"==d,n=a.cm&&a.cm.getHelper(b,"wordChars"),o=!0;!(0>c)||g(!o);o=!1){var p=k.text.charAt(i)||"\n",q=Me(p,n)?"w":m&&"\n"==p?"n":!m||/\s/.test(p)?null:"p";if(!m||o||q||(q="s"),l&&l!=q){0>c&&(c=1,g());break}if(q&&(l=q),c>0&&!g(!o))break}var r=Ga(a,Kf(h,i),b,j,!0);return Lf(b,r)||(r.hitSide=!0),r}function Rc(a,b,c,d){var e,f=a.doc,g=b.left;if("page"==d){var h=Math.min(a.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);e=b.top+c*(h-(0>c?1.5:.5)*sb(a.display))}else"line"==d&&(e=c>0?b.bottom+3:b.top-3);for(;;){var i=qb(a,g,e);if(!i.outside)break;if(0>c?0>=e:e>=f.height){i.hitSide=!0;break}e+=5*c}return i}function Sc(b,c,d,e){a.defaults[b]=c,d&&(_f[b]=e?function(a,b,c){c!=ag&&d(a,b,c)}:d)}function Tc(a){for(var b,c,d,e,f=a.split(/-(?!$)/),a=f[f.length-1],g=0;g0||0==g&&f.clearWhenEmpty!==!1)return f;if(f.replacedWith&&(f.collapsed=!0,f.widgetNode=Pe("span",[f.replacedWith],"CodeMirror-widget"),d.handleMouseEvents||f.widgetNode.setAttribute("cm-ignore-events","true"),d.insertLeft&&(f.widgetNode.insertLeft=!0)),f.collapsed){if(qd(a,b.line,b,c,f)||b.line!=c.line&&qd(a,c.line,b,c,f))throw new Error("Inserting collapsed marker partially overlapping an existing one");Jf=!0}f.addToHistory&&ie(a,{from:b,to:c,origin:"markText"},a.sel,NaN);var h,i=b.line,j=a.cm;if(a.iter(i,c.line+1,function(a){j&&f.collapsed&&!j.options.lineWrapping&&rd(a)==j.display.maxLine&&(h=!0),f.collapsed&&i!=b.line&&_d(a,0),bd(a,new $c(f,i==b.line?b.ch:null,i==c.line?c.ch:null)),++i}),f.collapsed&&a.iter(b.line,c.line+1,function(b){vd(a,b)&&_d(b,0)}),f.clearOnEnter&&Cg(f,"beforeCursorEnter",function(){f.clear()}),f.readOnly&&(If=!0,(a.history.done.length||a.history.undone.length)&&a.clearHistory()),f.collapsed&&(f.id=++og,f.atomic=!0),j){if(h&&(j.curOp.updateMaxLine=!0),f.collapsed)Jb(j,b.line,c.line+1);else if(f.className||f.title||f.startStyle||f.endStyle||f.css)for(var k=b.line;k<=c.line;k++)Kb(j,k,"text");f.atomic&&Da(j.doc),xe(j,"markerAdded",j,f)}return f}function Wc(a,b,c,d,e){d=Ke(d),d.shared=!1;var f=[Vc(a,b,c,d,e)],g=f[0],h=d.widgetNode;return Wd(a,function(a){h&&(d.widgetNode=h.cloneNode(!0)),f.push(Vc(a,pa(a,b),pa(a,c),d,e));for(var i=0;i=b:f.to>b);(d||(d=[])).push(new $c(g,f.from,i?null:f.to))}}return d}function dd(a,b,c){if(a)for(var d,e=0;e=b:f.to>b);if(h||f.from==b&&"bookmark"==g.type&&(!c||f.marker.insertLeft)){var i=null==f.from||(g.inclusiveLeft?f.from<=b:f.from0&&h)for(var l=0;ll;++l)o.push(p);o.push(i)}return o}function fd(a){for(var b=0;b0)){var k=[i,1],l=Lf(j.from,h.from),m=Lf(j.to,h.to);(0>l||!g.inclusiveLeft&&!l)&&k.push({from:j.from,to:h.from}),(m>0||!g.inclusiveRight&&!m)&&k.push({from:h.to,to:j.to}),e.splice.apply(e,k),i+=k.length-1}}return e}function id(a){var b=a.markedSpans;if(b){for(var c=0;c=0&&0>=l||0>=k&&l>=0)&&(0>=k&&(Lf(j.to,c)>0||i.marker.inclusiveRight&&e.inclusiveLeft)||k>=0&&(Lf(j.from,d)<0||i.marker.inclusiveLeft&&e.inclusiveRight)))return!0}}}function rd(a){for(var b;b=od(a);)a=b.find(-1,!0).line;return a}function sd(a){for(var b,c;b=pd(a);)a=b.find(1,!0).line,(c||(c=[])).push(a);return c}function td(a,b){var c=Yd(a,b),d=rd(c);return c==d?b:ae(d)}function ud(a,b){if(b>a.lastLine())return b;var c,d=Yd(a,b);if(!vd(a,d))return b;for(;c=pd(d);)d=c.find(1,!0).line;return ae(d)+1}function vd(a,b){var c=Jf&&b.markedSpans;if(c)for(var d,e=0;ef;f++){e&&(e[0]=a.innerMode(b,d).mode);var g=b.token(c,d);if(c.pos>c.start)return g}throw new Error("Mode "+b.name+" failed to advance stream.")}function Fd(a,b,c,d){function e(a){return{start:l.start,end:l.pos,string:l.current(),type:f||null,state:a?gg(g.mode,k):k}}var f,g=a.doc,h=g.mode;b=pa(g,b);var i,j=Yd(g,b.line),k=Qa(a,b.line,c),l=new ng(j.text,a.options.tabSize);for(d&&(i=[]);(d||l.posa.options.maxHighlightLength?(h=!1,g&&Jd(a,b,d,l.pos),l.pos=b.length,i=null):i=Cd(Ed(c,l,d,m),f),m){var n=m[0].name;n&&(i="m-"+(i?n+" "+i:n))}if(!h||k!=i){for(;jj;){var d=e[i];d>a&&e.splice(i,1,a,e[i+1],d),i+=2,j=Math.min(a,d)}if(b)if(h.opaque)e.splice(c,i-c,a,"cm-overlay "+b),i=c+2;else for(;i>c;c+=2){var f=e[c+1];e[c+1]=(f?f+" ":"")+"cm-overlay "+b}},f)}return{styles:e,classes:f.bgClass||f.textClass?f:null}}function Id(a,b,c){if(!b.styles||b.styles[0]!=a.state.modeGen){var d=Qa(a,ae(b)),e=Hd(a,b,b.text.length>a.options.maxHighlightLength?gg(a.doc.mode,d):d);b.stateAfter=d,b.styles=e.styles,e.classes?b.styleClasses=e.classes:b.styleClasses&&(b.styleClasses=null),c===a.doc.frontier&&a.doc.frontier++}return b.styles}function Jd(a,b,c,d){var e=a.doc.mode,f=new ng(b,a.options.tabSize);for(f.start=f.pos=d||0,""==b&&Dd(e,c);!f.eol();)Ed(e,f,c),f.start=f.pos}function Kd(a,b){if(!a||/^\s*$/.test(a))return null;var c=b.addModeClass?ug:tg;return c[a]||(c[a]=a.replace(/\S+/g,"cm-$&"))}function Ld(a,b){var c=Pe("span",null,null,uf?"padding-right: .1px":null),d={pre:Pe("pre",[c],"CodeMirror-line"),content:c,col:0,pos:0,cm:a,splitSpaces:(sf||uf)&&a.getOption("lineWrapping")};b.measure={};for(var e=0;e<=(b.rest?b.rest.length:0);e++){var f,g=e?b.rest[e-1]:b.line;d.pos=0,d.addToken=Nd,Ze(a.display.measure)&&(f=de(g))&&(d.addToken=Pd(d.addToken,f)),d.map=[];var h=b!=a.display.externalMeasured&&ae(g);Rd(g,d,Id(a,g,h)),g.styleClasses&&(g.styleClasses.bgClass&&(d.bgClass=Ue(g.styleClasses.bgClass,d.bgClass||"")),g.styleClasses.textClass&&(d.textClass=Ue(g.styleClasses.textClass,d.textClass||""))),0==d.map.length&&d.map.push(0,0,d.content.appendChild(Ye(a.display.measure))),0==e?(b.measure.map=d.map,b.measure.cache={}):((b.measure.maps||(b.measure.maps=[])).push(d.map),(b.measure.caches||(b.measure.caches=[])).push({}))}return uf&&/\bcm-tab\b/.test(d.content.lastChild.className)&&(d.content.className="cm-tab-wrap-hack"),Fg(a,"renderLine",a,b.line,d.pre),d.pre.className&&(d.textClass=Ue(d.pre.className,d.textClass||"")),d}function Md(a){var b=Pe("span","•","cm-invalidchar");return b.title="\\u"+a.charCodeAt(0).toString(16),b.setAttribute("aria-label",b.title),b}function Nd(a,b,c,d,e,f,g){if(b){var h=a.splitSpaces?b.replace(/ {3,}/g,Od):b,i=a.cm.state.specialChars,j=!1;if(i.test(b))for(var k=document.createDocumentFragment(),l=0;;){i.lastIndex=l;var m=i.exec(b),n=m?m.index-l:b.length-l;if(n){var o=document.createTextNode(h.slice(l,l+n));sf&&9>tf?k.appendChild(Pe("span",[o])):k.appendChild(o),a.map.push(a.pos,a.pos+n,o),a.col+=n,a.pos+=n}if(!m)break;if(l+=n+1," "==m[0]){var p=a.cm.options.tabSize,q=p-a.col%p,o=k.appendChild(Pe("span",Ee(q),"cm-tab"));o.setAttribute("role","presentation"),o.setAttribute("cm-text"," "),a.col+=q}else if("\r"==m[0]||"\n"==m[0]){var o=k.appendChild(Pe("span","\r"==m[0]?"␍":"␤","cm-invalidchar"));o.setAttribute("cm-text",m[0]),a.col+=1}else{var o=a.cm.options.specialCharPlaceholder(m[0]);o.setAttribute("cm-text",m[0]),sf&&9>tf?k.appendChild(Pe("span",[o])):k.appendChild(o),a.col+=1}a.map.push(a.pos,a.pos+1,o),a.pos++}else{a.col+=b.length;var k=document.createTextNode(h);a.map.push(a.pos,a.pos+b.length,k),sf&&9>tf&&(j=!0),a.pos+=b.length}if(c||d||e||j||g){var r=c||"";d&&(r+=d),e&&(r+=e);var s=Pe("span",[k],r,g);return f&&(s.title=f),a.content.appendChild(s)}a.content.appendChild(k)}}function Od(a){for(var b=" ",c=0;cj&&m.from<=j)break}if(m.to>=k)return a(c,d,e,f,g,h,i);a(c,d.slice(0,m.to-j),e,f,null,h,i),f=null,d=d.slice(m.to-j),j=m.to}}}function Qd(a,b,c,d){var e=!d&&c.widgetNode;e&&a.map.push(a.pos,a.pos+b,e),!d&&a.cm.display.input.needsContentAttribute&&(e||(e=a.content.appendChild(document.createElement("span"))),e.setAttribute("cm-marker",c.id)),e&&(a.cm.display.input.setUneditable(e),a.content.appendChild(e)),a.pos+=b}function Rd(a,b,c){var d=a.markedSpans,e=a.text,f=0;if(d)for(var g,h,i,j,k,l,m,n=e.length,o=0,p=1,q="",r=0;;){if(r==o){i=j=k=l=h="",m=null,r=1/0;for(var s,t=[],u=0;uo||w.collapsed&&v.to==o&&v.from==o)?(null!=v.to&&v.to!=o&&r>v.to&&(r=v.to,j=""),w.className&&(i+=" "+w.className),w.css&&(h=(h?h+";":"")+w.css),w.startStyle&&v.from==o&&(k+=" "+w.startStyle),w.endStyle&&v.to==r&&(s||(s=[])).push(w.endStyle,v.to),w.title&&!l&&(l=w.title),w.collapsed&&(!m||md(m.marker,w)<0)&&(m=v)):v.from>o&&r>v.from&&(r=v.from)}if(s)for(var u=0;u=n)break;for(var x=Math.min(n,r);;){if(q){var y=o+q.length;if(!m){var z=y>x?q.slice(0,x-o):q;b.addToken(b,z,g?g+i:i,k,o+z.length==r?j:"",l,h)}if(y>=x){q=q.slice(x-o),o=x;break}o=y,k=""}q=e.slice(f,f=c[p++]),g=Kd(c[p++],b.cm.options)}}else for(var p=1;pc;++c)f.push(new sg(j[c],e(c),d));return f}var h=b.from,i=b.to,j=b.text,k=Yd(a,h.line),l=Yd(a,i.line),m=Fe(j),n=e(j.length-1),o=i.line-h.line;if(b.full)a.insert(0,g(0,j.length)),a.remove(j.length,a.size-j.length);else if(Sd(a,b)){var p=g(0,j.length-1);f(l,l.text,n),o&&a.remove(h.line,o),p.length&&a.insert(h.line,p)}else if(k==l)if(1==j.length)f(k,k.text.slice(0,h.ch)+m+k.text.slice(i.ch),n);else{var p=g(1,j.length-1);p.push(new sg(m+k.text.slice(i.ch),n,d)),f(k,k.text.slice(0,h.ch)+j[0],e(0)),a.insert(h.line+1,p)}else if(1==j.length)f(k,k.text.slice(0,h.ch)+j[0]+l.text.slice(i.ch),e(0)),a.remove(h.line+1,o);else{f(k,k.text.slice(0,h.ch)+j[0],e(0)),f(l,m+l.text.slice(i.ch),n);var p=g(1,j.length-1);o>1&&a.remove(h.line+1,o-1),a.insert(h.line+1,p)}xe(a,"change",a,b)}function Ud(a){this.lines=a,this.parent=null;for(var b=0,c=0;bb||b>=a.size)throw new Error("There is no line "+(b+a.first)+" in the document.");for(var c=a;!c.lines;)for(var d=0;;++d){var e=c.children[d],f=e.chunkSize();if(f>b){c=e;break}b-=f}return c.lines[b]}function Zd(a,b,c){var d=[],e=b.line;return a.iter(b.line,c.line+1,function(a){var f=a.text;e==c.line&&(f=f.slice(0,c.ch)),e==b.line&&(f=f.slice(b.ch)),d.push(f),++e}),d}function $d(a,b,c){var d=[];return a.iter(b,c,function(a){d.push(a.text)}),d}function _d(a,b){var c=b-a.height;if(c)for(var d=a;d;d=d.parent)d.height+=c}function ae(a){if(null==a.parent)return null;for(var b=a.parent,c=Ge(b.lines,a),d=b.parent;d;b=d,d=d.parent)for(var e=0;d.children[e]!=b;++e)c+=d.children[e].chunkSize();return c+b.first}function be(a,b){var c=a.first;a:do{for(var d=0;db){a=e;continue a}b-=f,c+=e.chunkSize()}return c}while(!a.lines);for(var d=0;db)break;b-=h}return c+d}function ce(a){a=rd(a);for(var b=0,c=a.parent,d=0;d1&&!a.done[a.done.length-2].ranges?(a.done.pop(),Fe(a.done)):void 0}function ie(a,b,c,d){var e=a.history;e.undone.length=0;var f,g=+new Date;if((e.lastOp==d||e.lastOrigin==b.origin&&b.origin&&("+"==b.origin.charAt(0)&&a.cm&&e.lastModTime>g-a.cm.options.historyEventDelay||"*"==b.origin.charAt(0)))&&(f=he(e,e.lastOp==d))){var h=Fe(f.changes);0==Lf(b.from,b.to)&&0==Lf(b.from,h.to)?h.to=Zf(b):f.changes.push(fe(a,b))}else{var i=Fe(e.done);for(i&&i.ranges||le(a.sel,e.done),f={changes:[fe(a,b)],generation:e.generation},e.done.push(f);e.done.length>e.undoDepth;)e.done.shift(),e.done[0].ranges||e.done.shift()}e.done.push(c),e.generation=++e.maxGeneration,e.lastModTime=e.lastSelTime=g,e.lastOp=e.lastSelOp=d,e.lastOrigin=e.lastSelOrigin=b.origin,h||Fg(a,"historyAdded")}function je(a,b,c,d){var e=b.charAt(0);return"*"==e||"+"==e&&c.ranges.length==d.ranges.length&&c.somethingSelected()==d.somethingSelected()&&new Date-a.history.lastSelTime<=(a.cm?a.cm.options.historyEventDelay:500)}function ke(a,b,c,d){var e=a.history,f=d&&d.origin;c==e.lastSelOp||f&&e.lastSelOrigin==f&&(e.lastModTime==e.lastSelTime&&e.lastOrigin==f||je(a,f,Fe(e.done),b))?e.done[e.done.length-1]=b:le(b,e.done),e.lastSelTime=+new Date,e.lastSelOrigin=f,e.lastSelOp=c,d&&d.clearRedo!==!1&&ge(e.undone)}function le(a,b){var c=Fe(b);c&&c.ranges&&c.equals(a)||b.push(a)}function me(a,b,c,d){var e=b["spans_"+a.id],f=0;a.iter(Math.max(a.first,c),Math.min(a.first+a.size,d),function(c){c.markedSpans&&((e||(e=b["spans_"+a.id]={}))[f]=c.markedSpans),++f})}function ne(a){if(!a)return null;for(var b,c=0;c-1&&(Fe(h)[l]=k[l],delete k[l])}}}return e}function qe(a,b,c,d){c0?d.slice():Dg:d||Dg}function xe(a,b){function c(a){return function(){a.apply(null,f)}}var d=we(a,b,!1);if(d.length){var e,f=Array.prototype.slice.call(arguments,2);Rf?e=Rf.delayedCallbacks:Gg?e=Gg:(e=Gg=[],setTimeout(ye,0));for(var g=0;g0}function Ce(a){a.prototype.on=function(a,b){Cg(this,a,b)},a.prototype.off=function(a,b){Eg(this,a,b)}}function De(){this.id=null}function Ee(a){for(;Og.length<=a;)Og.push(Fe(Og)+" ");return Og[a]}function Fe(a){return a[a.length-1]}function Ge(a,b){for(var c=0;c-1&&Sg(a)?!0:b.test(a):Sg(a)}function Ne(a){for(var b in a)if(a.hasOwnProperty(b)&&a[b])return!1;return!0}function Oe(a){return a.charCodeAt(0)>=768&&Tg.test(a)}function Pe(a,b,c,d){var e=document.createElement(a);if(c&&(e.className=c),d&&(e.style.cssText=d),"string"==typeof b)e.appendChild(document.createTextNode(b));else if(b)for(var f=0;f0;--b)a.removeChild(a.firstChild);return a}function Re(a,b){return Qe(a).appendChild(b)}function Se(){for(var a=document.activeElement;a&&a.root&&a.root.activeElement;)a=a.root.activeElement;return a}function Te(a){return new RegExp("(^|\\s)"+a+"(?:$|\\s)\\s*")}function Ue(a,b){for(var c=a.split(" "),d=0;d2&&!(sf&&8>tf))}var c=Vg?Pe("span","​"):Pe("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return c.setAttribute("cm-text",""),c}function Ze(a){if(null!=Wg)return Wg;var b=Re(a,document.createTextNode("AخA")),c=Qg(b,0,1).getBoundingClientRect();if(!c||c.left==c.right)return!1;var d=Qg(b,1,2).getBoundingClientRect();return Wg=d.right-c.right<3}function $e(a){if(null!=ch)return ch;var b=Re(a,Pe("span","x")),c=b.getBoundingClientRect(),d=Qg(b,0,1).getBoundingClientRect();return ch=Math.abs(c.left-d.left)>1}function _e(a,b,c,d){if(!a)return d(b,c,"ltr");for(var e=!1,f=0;fb||b==c&&g.to==b)&&(d(Math.max(g.from,b),Math.min(g.to,c),1==g.level?"rtl":"ltr"),e=!0)}e||d(b,c,"ltr")}function af(a){return a.level%2?a.to:a.from}function bf(a){return a.level%2?a.from:a.to}function cf(a){var b=de(a);return b?af(b[0]):0}function df(a){var b=de(a);return b?bf(Fe(b)):a.text.length}function ef(a,b){var c=Yd(a.doc,b),d=rd(c);d!=c&&(b=ae(d));var e=de(d),f=e?e[0].level%2?df(d):cf(d):0;return Kf(b,f)}function ff(a,b){for(var c,d=Yd(a.doc,b);c=pd(d);)d=c.find(1,!0).line,b=null;var e=de(d),f=e?e[0].level%2?cf(d):df(d):d.text.length;return Kf(null==b?ae(d):b,f)}function gf(a,b){var c=ef(a,b.line),d=Yd(a.doc,c.line),e=de(d);if(!e||0==e[0].level){var f=Math.max(0,d.text.search(/\S/)),g=b.line==c.line&&b.ch<=f&&b.ch;return Kf(c.line,g?0:f)}return c}function hf(a,b,c){var d=a[0].level;return b==d?!0:c==d?!1:c>b}function jf(a,b){eh=null;for(var c,d=0;db)return d;if(e.from==b||e.to==b){if(null!=c)return hf(a,e.level,a[c].level)?(e.from!=e.to&&(eh=c),d):(e.from!=e.to&&(eh=d),c);c=d}}return c}function kf(a,b,c,d){if(!d)return b+c;do b+=c;while(b>0&&Oe(a.text.charAt(b)));return b}function lf(a,b,c,d){var e=de(a);if(!e)return mf(a,b,c,d);for(var f=jf(e,b),g=e[f],h=kf(a,b,g.level%2?-c:c,d);;){if(h>g.from&&h0==g.level%2?g.to:g.from);if(g=e[f+=c],!g)return null;h=c>0==g.level%2?kf(a,g.to,-1,d):kf(a,g.from,1,d)}}function mf(a,b,c,d){var e=b+c;if(d)for(;e>0&&Oe(a.text.charAt(e));)e+=c;return 0>e||e>a.text.length?null:e}var nf=navigator.userAgent,of=navigator.platform,pf=/gecko\/\d/i.test(nf),qf=/MSIE \d/.test(nf),rf=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(nf),sf=qf||rf,tf=sf&&(qf?document.documentMode||6:rf[1]),uf=/WebKit\//.test(nf),vf=uf&&/Qt\/\d+\.\d+/.test(nf),wf=/Chrome\//.test(nf),xf=/Opera\//.test(nf),yf=/Apple Computer/.test(navigator.vendor),zf=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(nf),Af=/PhantomJS/.test(nf),Bf=/AppleWebKit/.test(nf)&&/Mobile\/\w+/.test(nf),Cf=Bf||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(nf),Df=Bf||/Mac/.test(of),Ef=/win/i.test(of),Ff=xf&&nf.match(/Version\/(\d*\.\d*)/);Ff&&(Ff=Number(Ff[1])),Ff&&Ff>=15&&(xf=!1,uf=!0);var Gf=Df&&(vf||xf&&(null==Ff||12.11>Ff)),Hf=pf||sf&&tf>=9,If=!1,Jf=!1;p.prototype=Ke({update:function(a){var b=a.scrollWidth>a.clientWidth+1,c=a.scrollHeight>a.clientHeight+1,d=a.nativeBarWidth;if(c){this.vert.style.display="block",this.vert.style.bottom=b?d+"px":"0";var e=a.viewHeight-(b?d:0);this.vert.firstChild.style.height=Math.max(0,a.scrollHeight-a.clientHeight+e)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(b){this.horiz.style.display="block",this.horiz.style.right=c?d+"px":"0",this.horiz.style.left=a.barLeft+"px";var f=a.viewWidth-a.barLeft-(c?d:0);this.horiz.firstChild.style.width=a.scrollWidth-a.clientWidth+f+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&a.clientHeight>0&&(0==d&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:c?d:0,bottom:b?d:0}},setScrollLeft:function(a){this.horiz.scrollLeft!=a&&(this.horiz.scrollLeft=a),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz)},setScrollTop:function(a){this.vert.scrollTop!=a&&(this.vert.scrollTop=a),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert)},zeroWidthHack:function(){var a=Df&&!zf?"12px":"18px";this.horiz.style.height=this.vert.style.width=a,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new De,this.disableVert=new De},enableZeroWidthBar:function(a,b){function c(){var d=a.getBoundingClientRect(),e=document.elementFromPoint(d.left+1,d.bottom-1);e!=a?a.style.pointerEvents="none":b.set(1e3,c)}a.style.pointerEvents="auto",b.set(1e3,c)},clear:function(){var a=this.horiz.parentNode;a.removeChild(this.horiz),a.removeChild(this.vert)}},p.prototype),q.prototype=Ke({update:function(){return{bottom:0,right:0}},setScrollLeft:function(){},setScrollTop:function(){},clear:function(){} +},q.prototype),a.scrollbarModel={"native":p,"null":q},z.prototype.signal=function(a,b){Be(a,b)&&this.events.push(arguments)},z.prototype.finish=function(){for(var a=0;a=9&&c.hasSelection&&(c.hasSelection=null),c.poll()}),Cg(f,"paste",function(a){ze(d,a)||$(a,d)||(d.state.pasteIncoming=!0,c.fastPoll())}),Cg(f,"cut",b),Cg(f,"copy",b),Cg(a.scroller,"paste",function(b){Tb(a,b)||ze(d,b)||(d.state.pasteIncoming=!0,c.focus())}),Cg(a.lineSpace,"selectstart",function(b){Tb(a,b)||zg(b)}),Cg(f,"compositionstart",function(){var a=d.getCursor("from");c.composing&&c.composing.range.clear(),c.composing={start:a,range:d.markText(a,d.getCursor("to"),{className:"CodeMirror-composing"})}}),Cg(f,"compositionend",function(){c.composing&&(c.poll(),c.composing.range.clear(),c.composing=null)})},prepareSelection:function(){var a=this.cm,b=a.display,c=a.doc,d=Ja(a);if(a.options.moveInputWithCursor){var e=nb(a,c.sel.primary().head,"div"),f=b.wrapper.getBoundingClientRect(),g=b.lineDiv.getBoundingClientRect();d.teTop=Math.max(0,Math.min(b.wrapper.clientHeight-10,e.top+g.top-f.top)),d.teLeft=Math.max(0,Math.min(b.wrapper.clientWidth-10,e.left+g.left-f.left))}return d},showSelection:function(a){var b=this.cm,c=b.display;Re(c.cursorDiv,a.cursors),Re(c.selectionDiv,a.selection),null!=a.teTop&&(this.wrapper.style.top=a.teTop+"px",this.wrapper.style.left=a.teLeft+"px")},reset:function(a){if(!this.contextMenuPending){var b,c,d=this.cm,e=d.doc;if(d.somethingSelected()){this.prevInput="";var f=e.sel.primary();b=bh&&(f.to().line-f.from().line>100||(c=d.getSelection()).length>1e3);var g=b?"-":c||d.getSelection();this.textarea.value=g,d.state.focused&&Pg(this.textarea),sf&&tf>=9&&(this.hasSelection=g)}else a||(this.prevInput=this.textarea.value="",sf&&tf>=9&&(this.hasSelection=null));this.inaccurateSelection=b}},getField:function(){return this.textarea},supportsTouch:function(){return!1},focus:function(){if("nocursor"!=this.cm.options.readOnly&&(!Cf||Se()!=this.textarea))try{this.textarea.focus()}catch(a){}},blur:function(){this.textarea.blur()},resetPosition:function(){this.wrapper.style.top=this.wrapper.style.left=0},receivedFocus:function(){this.slowPoll()},slowPoll:function(){var a=this;a.pollingFast||a.polling.set(this.cm.options.pollInterval,function(){a.poll(),a.cm.state.focused&&a.slowPoll()})},fastPoll:function(){function a(){var d=c.poll();d||b?(c.pollingFast=!1,c.slowPoll()):(b=!0,c.polling.set(60,a))}var b=!1,c=this;c.pollingFast=!0,c.polling.set(20,a)},poll:function(){var a=this.cm,b=this.textarea,c=this.prevInput;if(this.contextMenuPending||!a.state.focused||ah(b)&&!c&&!this.composing||a.isReadOnly()||a.options.disableInput||a.state.keySeq)return!1;var d=b.value;if(d==c&&!a.somethingSelected())return!1;if(sf&&tf>=9&&this.hasSelection===d||Df&&/[\uf700-\uf7ff]/.test(d))return a.display.input.reset(),!1;if(a.doc.sel==a.display.selForContextMenu){var e=d.charCodeAt(0);if(8203!=e||c||(c="​"),8666==e)return this.reset(),this.cm.execCommand("undo")}for(var f=0,g=Math.min(c.length,d.length);g>f&&c.charCodeAt(f)==d.charCodeAt(f);)++f;var h=this;return Db(a,function(){Z(a,d.slice(f),c.length-f,null,h.composing?"*compose":null),d.length>1e3||d.indexOf("\n")>-1?b.value=h.prevInput="":h.prevInput=d,h.composing&&(h.composing.range.clear(),h.composing.range=a.markText(h.composing.start,a.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},ensurePolled:function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},onKeyPress:function(){sf&&tf>=9&&(this.hasSelection=null),this.fastPoll()},onContextMenu:function(a){function b(){if(null!=g.selectionStart){var a=e.somethingSelected(),b="​"+(a?g.value:"");g.value="⇚",g.value=b,d.prevInput=a?"":"​",g.selectionStart=1,g.selectionEnd=b.length,f.selForContextMenu=e.doc.sel}}function c(){if(d.contextMenuPending=!1,d.wrapper.style.cssText=l,g.style.cssText=k,sf&&9>tf&&f.scrollbars.setScrollTop(f.scroller.scrollTop=i),null!=g.selectionStart){(!sf||sf&&9>tf)&&b();var a=0,c=function(){f.selForContextMenu==e.doc.sel&&0==g.selectionStart&&g.selectionEnd>0&&"​"==d.prevInput?Eb(e,ig.selectAll)(e):a++<10?f.detectingSelectAll=setTimeout(c,500):f.input.reset()};f.detectingSelectAll=setTimeout(c,200)}}var d=this,e=d.cm,f=e.display,g=d.textarea,h=Ub(e,a),i=f.scroller.scrollTop;if(h&&!xf){var j=e.options.resetSelectionOnContextMenu;j&&-1==e.doc.sel.contains(h)&&Eb(e,Aa)(e.doc,na(h),Jg);var k=g.style.cssText,l=d.wrapper.style.cssText;d.wrapper.style.cssText="position: absolute";var m=d.wrapper.getBoundingClientRect();if(g.style.cssText="position: absolute; width: 30px; height: 30px; top: "+(a.clientY-m.top-5)+"px; left: "+(a.clientX-m.left-5)+"px; z-index: 1000; background: "+(sf?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",uf)var n=window.scrollY;if(f.input.focus(),uf&&window.scrollTo(null,n),f.input.reset(),e.somethingSelected()||(g.value=d.prevInput=" "),d.contextMenuPending=!0,f.selForContextMenu=e.doc.sel,clearTimeout(f.detectingSelectAll),sf&&tf>=9&&b(),Hf){Bg(a);var o=function(){Eg(window,"mouseup",o),setTimeout(c,20)};Cg(window,"mouseup",o)}else setTimeout(c,50)}},readOnlyChanged:function(a){a||this.reset()},setUneditable:Ie,needsContentAttribute:!1},ca.prototype),ea.prototype=Ke({init:function(a){function b(a){if(!ze(d,a)){if(d.somethingSelected())Mf=d.getSelections(),"cut"==a.type&&d.replaceSelection("",null,"cut");else{if(!d.options.lineWiseCopyCut)return;var b=aa(d);Mf=b.text,"cut"==a.type&&d.operation(function(){d.setSelections(b.ranges,0,Jg),d.replaceSelection("",null,"cut")})}if(a.clipboardData&&!Bf)a.preventDefault(),a.clipboardData.clearData(),a.clipboardData.setData("text/plain",Mf.join("\n"));else{var c=da(),e=c.firstChild;d.display.lineSpace.insertBefore(c,d.display.lineSpace.firstChild),e.value=Mf.join("\n");var f=document.activeElement;Pg(e),setTimeout(function(){d.display.lineSpace.removeChild(c),f.focus()},50)}}}var c=this,d=c.cm,e=c.div=a.lineDiv;ba(e),Cg(e,"paste",function(a){ze(d,a)||$(a,d)}),Cg(e,"compositionstart",function(a){var b=a.data;if(c.composing={sel:d.doc.sel,data:b,startData:b},b){var e=d.doc.sel.primary(),f=d.getLine(e.head.line),g=f.indexOf(b,Math.max(0,e.head.ch-b.length));g>-1&&g<=e.head.ch&&(c.composing.sel=na(Kf(e.head.line,g),Kf(e.head.line,g+b.length)))}}),Cg(e,"compositionupdate",function(a){c.composing.data=a.data}),Cg(e,"compositionend",function(a){var b=c.composing;b&&(a.data==b.startData||/\u200b/.test(a.data)||(b.data=a.data),setTimeout(function(){b.handled||c.applyComposition(b),c.composing==b&&(c.composing=null)},50))}),Cg(e,"touchstart",function(){c.forceCompositionEnd()}),Cg(e,"input",function(){c.composing||(d.isReadOnly()||!c.pollContent())&&Db(c.cm,function(){Jb(d)})}),Cg(e,"copy",b),Cg(e,"cut",b)},prepareSelection:function(){var a=Ja(this.cm,!1);return a.focus=this.cm.state.focused,a},showSelection:function(a){a&&this.cm.display.view.length&&(a.focus&&this.showPrimarySelection(),this.showMultipleSelections(a))},showPrimarySelection:function(){var a=window.getSelection(),b=this.cm.doc.sel.primary(),c=ha(this.cm,a.anchorNode,a.anchorOffset),d=ha(this.cm,a.focusNode,a.focusOffset);if(!c||c.bad||!d||d.bad||0!=Lf(X(c,d),b.from())||0!=Lf(W(c,d),b.to())){var e=fa(this.cm,b.from()),f=fa(this.cm,b.to());if(e||f){var g=this.cm.display.view,h=a.rangeCount&&a.getRangeAt(0);if(e){if(!f){var i=g[g.length-1].measure,j=i.maps?i.maps[i.maps.length-1]:i.map;f={node:j[j.length-1],offset:j[j.length-2]-j[j.length-3]}}}else e={node:g[0].measure.map[2],offset:0};try{var k=Qg(e.node,e.offset,f.offset,f.node)}catch(l){}k&&(!pf&&this.cm.state.focused?(a.collapse(e.node,e.offset),k.collapsed||a.addRange(k)):(a.removeAllRanges(),a.addRange(k)),h&&null==a.anchorNode?a.addRange(h):pf&&this.startGracePeriod()),this.rememberSelection()}}},startGracePeriod:function(){var a=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){a.gracePeriod=!1,a.selectionChanged()&&a.cm.operation(function(){a.cm.curOp.selectionChanged=!0})},20)},showMultipleSelections:function(a){Re(this.cm.display.cursorDiv,a.cursors),Re(this.cm.display.selectionDiv,a.selection)},rememberSelection:function(){var a=window.getSelection();this.lastAnchorNode=a.anchorNode,this.lastAnchorOffset=a.anchorOffset,this.lastFocusNode=a.focusNode,this.lastFocusOffset=a.focusOffset},selectionInEditor:function(){var a=window.getSelection();if(!a.rangeCount)return!1;var b=a.getRangeAt(0).commonAncestorContainer;return Ug(this.div,b)},focus:function(){"nocursor"!=this.cm.options.readOnly&&this.div.focus()},blur:function(){this.div.blur()},getField:function(){return this.div},supportsTouch:function(){return!0},receivedFocus:function(){function a(){b.cm.state.focused&&(b.pollSelection(),b.polling.set(b.cm.options.pollInterval,a))}var b=this;this.selectionInEditor()?this.pollSelection():Db(this.cm,function(){b.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,a)},selectionChanged:function(){var a=window.getSelection();return a.anchorNode!=this.lastAnchorNode||a.anchorOffset!=this.lastAnchorOffset||a.focusNode!=this.lastFocusNode||a.focusOffset!=this.lastFocusOffset},pollSelection:function(){if(!this.composing&&!this.gracePeriod&&this.selectionChanged()){var a=window.getSelection(),b=this.cm;this.rememberSelection();var c=ha(b,a.anchorNode,a.anchorOffset),d=ha(b,a.focusNode,a.focusOffset);c&&d&&Db(b,function(){Aa(b.doc,na(c,d),Jg),(c.bad||d.bad)&&(b.curOp.selectionChanged=!0)})}},pollContent:function(){var a=this.cm,b=a.display,c=a.doc.sel.primary(),d=c.from(),e=c.to();if(d.lineb.viewTo-1)return!1;var f;if(d.line==b.viewFrom||0==(f=Mb(a,d.line)))var g=ae(b.view[0].line),h=b.view[0].node;else var g=ae(b.view[f].line),h=b.view[f-1].node.nextSibling;var i=Mb(a,e.line);if(i==b.view.length-1)var j=b.viewTo-1,k=b.lineDiv.lastChild;else var j=ae(b.view[i+1].line)-1,k=b.view[i+1].node.previousSibling;for(var l=a.doc.splitLines(ja(a,h,k,g,j)),m=Zd(a.doc,Kf(g,0),Kf(j,Yd(a.doc,j).text.length));l.length>1&&m.length>1;)if(Fe(l)==Fe(m))l.pop(),m.pop(),j--;else{if(l[0]!=m[0])break;l.shift(),m.shift(),g++}for(var n=0,o=0,p=l[0],q=m[0],r=Math.min(p.length,q.length);r>n&&p.charCodeAt(n)==q.charCodeAt(n);)++n;for(var s=Fe(l),t=Fe(m),u=Math.min(s.length-(1==l.length?n:0),t.length-(1==m.length?n:0));u>o&&s.charCodeAt(s.length-o-1)==t.charCodeAt(t.length-o-1);)++o;l[l.length-1]=s.slice(0,s.length-o),l[0]=l[0].slice(n);var v=Kf(g,n),w=Kf(j,m.length?Fe(m).length-o:0);return l.length>1||l[0]||Lf(v,w)?(Fc(a.doc,l,v,w,"+input"),!0):void 0},ensurePolled:function(){this.forceCompositionEnd()},reset:function(){this.forceCompositionEnd()},forceCompositionEnd:function(){this.composing&&!this.composing.handled&&(this.applyComposition(this.composing),this.composing.handled=!0,this.div.blur(),this.div.focus())},applyComposition:function(a){this.cm.isReadOnly()?Eb(this.cm,Jb)(this.cm):a.data&&a.data!=a.startData&&Eb(this.cm,Z)(this.cm,a.data,0,a.sel)},setUneditable:function(a){a.contentEditable="false"},onKeyPress:function(a){a.preventDefault(),this.cm.isReadOnly()||Eb(this.cm,Z)(this.cm,String.fromCharCode(null==a.charCode?a.keyCode:a.charCode),0)},readOnlyChanged:function(a){this.div.contentEditable=String("nocursor"!=a)},onContextMenu:Ie,resetPosition:Ie,needsContentAttribute:!0},ea.prototype),a.inputStyles={textarea:ca,contenteditable:ea},ka.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(a){if(a==this)return!0;if(a.primIndex!=this.primIndex||a.ranges.length!=this.ranges.length)return!1;for(var b=0;b=0&&Lf(a,d.to())<=0)return c}return-1}},la.prototype={from:function(){return X(this.anchor,this.head)},to:function(){return W(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var Nf,Of,Pf,Qf={left:0,right:0,top:0,bottom:0},Rf=null,Sf=0,Tf=0,Uf=0,Vf=null;sf?Vf=-.53:pf?Vf=15:wf?Vf=-.7:yf&&(Vf=-1/3);var Wf=function(a){var b=a.wheelDeltaX,c=a.wheelDeltaY;return null==b&&a.detail&&a.axis==a.HORIZONTAL_AXIS&&(b=a.detail),null==c&&a.detail&&a.axis==a.VERTICAL_AXIS?c=a.detail:null==c&&(c=a.wheelDelta),{x:b,y:c}};a.wheelEventPixels=function(a){var b=Wf(a);return b.x*=Vf,b.y*=Vf,b};var Xf=new De,Yf=null,Zf=a.changeEnd=function(a){return a.text?Kf(a.from.line+a.text.length-1,Fe(a.text).length+(1==a.text.length?a.from.ch:0)):a.to};a.prototype={constructor:a,focus:function(){window.focus(),this.display.input.focus()},setOption:function(a,b){var c=this.options,d=c[a];(c[a]!=b||"mode"==a)&&(c[a]=b,_f.hasOwnProperty(a)&&Eb(this,_f[a])(this,b,d))},getOption:function(a){return this.options[a]},getDoc:function(){return this.doc},addKeyMap:function(a,b){this.state.keyMaps[b?"push":"unshift"](Uc(a))},removeKeyMap:function(a){for(var b=this.state.keyMaps,c=0;cc&&(Nc(this,e.head.line,a,!0),c=e.head.line,d==this.doc.sel.primIndex&&Lc(this));else{var f=e.from(),g=e.to(),h=Math.max(c,f.line);c=Math.min(this.lastLine(),g.line-(g.ch?0:1))+1;for(var i=h;c>i;++i)Nc(this,i,a);var j=this.doc.sel.ranges;0==f.ch&&b.length==j.length&&j[d].from().ch>0&&wa(this.doc,d,new la(f,j[d].to()),Jg)}}}),getTokenAt:function(a,b){return Fd(this,a,b)},getLineTokens:function(a,b){return Fd(this,Kf(a),b,!0)},getTokenTypeAt:function(a){a=pa(this.doc,a);var b,c=Id(this,Yd(this.doc,a.line)),d=0,e=(c.length-1)/2,f=a.ch;if(0==f)b=c[2];else for(;;){var g=d+e>>1;if((g?c[2*g-1]:0)>=f)e=g;else{if(!(c[2*g+1]h?b:0==h?null:b.slice(0,h-1)},getModeAt:function(b){var c=this.doc.mode;return c.innerMode?a.innerMode(c,this.getTokenAt(b).state).mode:c},getHelper:function(a,b){return this.getHelpers(a,b)[0]},getHelpers:function(a,b){var c=[];if(!fg.hasOwnProperty(b))return c;var d=fg[b],e=this.getModeAt(a);if("string"==typeof e[b])d[e[b]]&&c.push(d[e[b]]);else if(e[b])for(var f=0;fe&&(a=e,d=!0),c=Yd(this.doc,a)}else c=a;return kb(this,c,{top:0,left:0},b||"page").top+(d?this.doc.height-ce(c):0)},defaultTextHeight:function(){return sb(this.display)},defaultCharWidth:function(){return tb(this.display)},setGutterMarker:Fb(function(a,b,c){return Oc(this.doc,a,"gutter",function(a){var d=a.gutterMarkers||(a.gutterMarkers={});return d[b]=c,!c&&Ne(d)&&(a.gutterMarkers=null),!0})}),clearGutter:Fb(function(a){var b=this,c=b.doc,d=c.first;c.iter(function(c){c.gutterMarkers&&c.gutterMarkers[a]&&(c.gutterMarkers[a]=null,Kb(b,d,"gutter"),Ne(c.gutterMarkers)&&(c.gutterMarkers=null)),++d})}),lineInfo:function(a){if("number"==typeof a){if(!ra(this.doc,a))return null;var b=a;if(a=Yd(this.doc,a),!a)return null}else{var b=ae(a);if(null==b)return null}return{line:b,handle:a,text:a.text,gutterMarkers:a.gutterMarkers,textClass:a.textClass,bgClass:a.bgClass,wrapClass:a.wrapClass,widgets:a.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(a,b,c,d,e){var f=this.display;a=nb(this,pa(this.doc,a));var g=a.bottom,h=a.left;if(b.style.position="absolute",b.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(b),f.sizer.appendChild(b),"over"==d)g=a.top;else if("above"==d||"near"==d){var i=Math.max(f.wrapper.clientHeight,this.doc.height),j=Math.max(f.sizer.clientWidth,f.lineSpace.clientWidth);("above"==d||a.bottom+b.offsetHeight>i)&&a.top>b.offsetHeight?g=a.top-b.offsetHeight:a.bottom+b.offsetHeight<=i&&(g=a.bottom),h+b.offsetWidth>j&&(h=j-b.offsetWidth)}b.style.top=g+"px",b.style.left=b.style.right="","right"==e?(h=f.sizer.clientWidth-b.offsetWidth,b.style.right="0px"):("left"==e?h=0:"middle"==e&&(h=(f.sizer.clientWidth-b.offsetWidth)/2),b.style.left=h+"px"),c&&Ic(this,h,g,h+b.offsetWidth,g+b.offsetHeight)},triggerOnKeyDown:Fb(lc),triggerOnKeyPress:Fb(oc),triggerOnKeyUp:nc,execCommand:function(a){return ig.hasOwnProperty(a)?ig[a].call(null,this):void 0},triggerElectric:Fb(function(a){_(this,a)}),findPosH:function(a,b,c,d){var e=1;0>b&&(e=-1,b=-b);for(var f=0,g=pa(this.doc,a);b>f&&(g=Qc(this.doc,g,e,c,d),!g.hitSide);++f);return g},moveH:Fb(function(a,b){var c=this;c.extendSelectionsBy(function(d){return c.display.shift||c.doc.extend||d.empty()?Qc(c.doc,d.head,a,b,c.options.rtlMoveVisually):0>a?d.from():d.to()},Lg)}),deleteH:Fb(function(a,b){var c=this.doc.sel,d=this.doc;c.somethingSelected()?d.replaceSelection("",null,"+delete"):Pc(this,function(c){var e=Qc(d,c.head,a,b,!1);return 0>a?{from:e,to:c.head}:{from:c.head,to:e}})}),findPosV:function(a,b,c,d){var e=1,f=d;0>b&&(e=-1,b=-b);for(var g=0,h=pa(this.doc,a);b>g;++g){var i=nb(this,h,"div");if(null==f?f=i.left:i.left=f,h=Rc(this,i,e,c),h.hitSide)break}return h},moveV:Fb(function(a,b){var c=this,d=this.doc,e=[],f=!c.display.shift&&!d.extend&&d.sel.somethingSelected();if(d.extendSelectionsBy(function(g){if(f)return 0>a?g.from():g.to();var h=nb(c,g.head,"div");null!=g.goalColumn&&(h.left=g.goalColumn),e.push(h.left);var i=Rc(c,h,a,b);return"page"==b&&g==d.sel.primary()&&Kc(c,null,mb(c,i,"div").top-h.top),i},Lg),e.length)for(var g=0;g0&&h(c.charAt(d-1));)--d;for(;e.5)&&g(this),Fg(this,"refresh",this)}),swapDoc:Fb(function(a){var b=this.doc;return b.cm=null,Xd(this,a),hb(this),this.display.input.reset(),this.scrollTo(a.scrollLeft,a.scrollTop),this.curOp.forceScroll=!0,xe(this,"swapDoc",this,b),b}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Ce(a);var $f=a.defaults={},_f=a.optionHandlers={},ag=a.Init={toString:function(){return"CodeMirror.Init"}};Sc("value","",function(a,b){a.setValue(b)},!0),Sc("mode",null,function(a,b){a.doc.modeOption=b,c(a)},!0),Sc("indentUnit",2,c,!0),Sc("indentWithTabs",!1),Sc("smartIndent",!0),Sc("tabSize",4,function(a){d(a),hb(a),Jb(a)},!0),Sc("lineSeparator",null,function(a,b){if(a.doc.lineSep=b,b){var c=[],d=a.doc.first;a.doc.iter(function(a){for(var e=0;;){var f=a.text.indexOf(b,e);if(-1==f)break;e=f+b.length,c.push(Kf(d,f))}d++});for(var e=c.length-1;e>=0;e--)Fc(a.doc,b,c[e],Kf(c[e].line,c[e].ch+b.length))}}),Sc("specialChars",/[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(b,c,d){b.state.specialChars=new RegExp(c.source+(c.test(" ")?"":"| "),"g"),d!=a.Init&&b.refresh()}),Sc("specialCharPlaceholder",Md,function(a){a.refresh()},!0),Sc("electricChars",!0),Sc("inputStyle",Cf?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),Sc("rtlMoveVisually",!Ef),Sc("wholeLineUpdateBefore",!0),Sc("theme","default",function(a){h(a),i(a)},!0),Sc("keyMap","default",function(b,c,d){var e=Uc(c),f=d!=a.Init&&Uc(d);f&&f.detach&&f.detach(b,e),e.attach&&e.attach(b,f||null)}),Sc("extraKeys",null),Sc("lineWrapping",!1,e,!0),Sc("gutters",[],function(a){n(a.options),i(a)},!0),Sc("fixedGutter",!0,function(a,b){a.display.gutters.style.left=b?y(a.display)+"px":"0",a.refresh()},!0),Sc("coverGutterNextToScrollbar",!1,function(a){s(a)},!0),Sc("scrollbarStyle","native",function(a){r(a),s(a),a.display.scrollbars.setScrollTop(a.doc.scrollTop),a.display.scrollbars.setScrollLeft(a.doc.scrollLeft)},!0),Sc("lineNumbers",!1,function(a){n(a.options),i(a)},!0),Sc("firstLineNumber",1,i,!0),Sc("lineNumberFormatter",function(a){return a},i,!0),Sc("showCursorWhenSelecting",!1,Ia,!0),Sc("resetSelectionOnContextMenu",!0),Sc("lineWiseCopyCut",!0),Sc("readOnly",!1,function(a,b){"nocursor"==b?(rc(a),a.display.input.blur(),a.display.disabled=!0):a.display.disabled=!1,a.display.input.readOnlyChanged(b)}),Sc("disableInput",!1,function(a,b){b||a.display.input.reset()},!0),Sc("dragDrop",!0,Rb),Sc("allowDropFileTypes",null),Sc("cursorBlinkRate",530),Sc("cursorScrollMargin",0),Sc("cursorHeight",1,Ia,!0),Sc("singleCursorHeightPerLine",!0,Ia,!0),Sc("workTime",100),Sc("workDelay",100),Sc("flattenSpans",!0,d,!0),Sc("addModeClass",!1,d,!0),Sc("pollInterval",100),Sc("undoDepth",200,function(a,b){a.doc.history.undoDepth=b}),Sc("historyEventDelay",1250),Sc("viewportMargin",10,function(a){a.refresh()},!0),Sc("maxHighlightLength",1e4,d,!0),Sc("moveInputWithCursor",!0,function(a,b){b||a.display.input.resetPosition()}),Sc("tabindex",null,function(a,b){a.display.input.getField().tabIndex=b||""}),Sc("autofocus",null);var bg=a.modes={},cg=a.mimeModes={};a.defineMode=function(b,c){a.defaults.mode||"null"==b||(a.defaults.mode=b),arguments.length>2&&(c.dependencies=Array.prototype.slice.call(arguments,2)),bg[b]=c},a.defineMIME=function(a,b){cg[a]=b},a.resolveMode=function(b){if("string"==typeof b&&cg.hasOwnProperty(b))b=cg[b];else if(b&&"string"==typeof b.name&&cg.hasOwnProperty(b.name)){var c=cg[b.name];"string"==typeof c&&(c={name:c}),b=Je(c,b),b.name=c.name}else if("string"==typeof b&&/^[\w\-]+\/[\w\-]+\+xml$/.test(b))return a.resolveMode("application/xml");return"string"==typeof b?{name:b}:b||{name:"null"}},a.getMode=function(b,c){var c=a.resolveMode(c),d=bg[c.name];if(!d)return a.getMode(b,"text/plain");var e=d(b,c);if(dg.hasOwnProperty(c.name)){var f=dg[c.name];for(var g in f)f.hasOwnProperty(g)&&(e.hasOwnProperty(g)&&(e["_"+g]=e[g]),e[g]=f[g])}if(e.name=c.name,c.helperType&&(e.helperType=c.helperType),c.modeProps)for(var g in c.modeProps)e[g]=c.modeProps[g];return e},a.defineMode("null",function(){return{token:function(a){a.skipToEnd()}}}),a.defineMIME("text/plain","null");var dg=a.modeExtensions={};a.extendMode=function(a,b){var c=dg.hasOwnProperty(a)?dg[a]:dg[a]={};Ke(b,c)},a.defineExtension=function(b,c){a.prototype[b]=c},a.defineDocExtension=function(a,b){wg.prototype[a]=b},a.defineOption=Sc;var eg=[];a.defineInitHook=function(a){eg.push(a)};var fg=a.helpers={};a.registerHelper=function(b,c,d){fg.hasOwnProperty(b)||(fg[b]=a[b]={_global:[]}),fg[b][c]=d},a.registerGlobalHelper=function(b,c,d,e){a.registerHelper(b,c,e),fg[b]._global.push({pred:d,val:e})};var gg=a.copyState=function(a,b){if(b===!0)return b;if(a.copyState)return a.copyState(b);var c={};for(var d in b){var e=b[d];e instanceof Array&&(e=e.concat([])),c[d]=e}return c},hg=a.startState=function(a,b,c){return a.startState?a.startState(b,c):!0};a.innerMode=function(a,b){for(;a.innerMode;){var c=a.innerMode(b);if(!c||c.mode==a)break;b=c.state,a=c.mode}return c||{mode:a,state:b}};var ig=a.commands={selectAll:function(a){a.setSelection(Kf(a.firstLine(),0),Kf(a.lastLine()),Jg)},singleSelection:function(a){a.setSelection(a.getCursor("anchor"),a.getCursor("head"),Jg)},killLine:function(a){Pc(a,function(b){if(b.empty()){var c=Yd(a.doc,b.head.line).text.length;return b.head.ch==c&&b.head.line0)e=new Kf(e.line,e.ch+1),a.replaceRange(f.charAt(e.ch-1)+f.charAt(e.ch-2),Kf(e.line,e.ch-2),e,"+transpose");else if(e.line>a.doc.first){var g=Yd(a.doc,e.line-1).text;g&&a.replaceRange(f.charAt(0)+a.doc.lineSeparator()+g.charAt(g.length-1),Kf(e.line-1,g.length-1),Kf(e.line,1),"+transpose")}c.push(new la(e,e))}a.setSelections(c)})},newlineAndIndent:function(a){Db(a,function(){for(var b=a.listSelections().length,c=0;b>c;c++){var d=a.listSelections()[c];a.replaceRange(a.doc.lineSeparator(),d.anchor,d.head,"+input"),a.indentLine(d.from().line+1,null,!0)}Lc(a)})},toggleOverwrite:function(a){a.toggleOverwrite()}},jg=a.keyMap={};jg.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore", +"Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},jg.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},jg.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars"},jg.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},jg["default"]=Df?jg.macDefault:jg.pcDefault,a.normalizeKeyMap=function(a){var b={};for(var c in a)if(a.hasOwnProperty(c)){var d=a[c];if(/^(name|fallthrough|(de|at)tach)$/.test(c))continue;if("..."==d){delete a[c];continue}for(var e=He(c.split(" "),Tc),f=0;f=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){return this.posb},eatSpace:function(){for(var a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>a},skipToEnd:function(){this.pos=this.string.length},skipTo:function(a){var b=this.string.indexOf(a,this.pos);return b>-1?(this.pos=b,!0):void 0},backUp:function(a){this.pos-=a},column:function(){return this.lastColumnPos0?null:(d&&b!==!1&&(this.pos+=d[0].length),d)}var e=function(a){return c?a.toLowerCase():a},f=this.string.substr(this.pos,a.length);return e(f)==e(a)?(b!==!1&&(this.pos+=a.length),!0):void 0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(a,b){this.lineStart+=a;try{return b()}finally{this.lineStart-=a}}};var og=0,pg=a.TextMarker=function(a,b){this.lines=[],this.type=b,this.doc=a,this.id=++og};Ce(pg),pg.prototype.clear=function(){if(!this.explicitlyCleared){var a=this.doc.cm,b=a&&!a.curOp;if(b&&ub(a),Be(this,"clear")){var c=this.find();c&&xe(this,"clear",c.from,c.to)}for(var d=null,e=null,f=0;fa.display.maxLineLength&&(a.display.maxLine=i,a.display.maxLineLength=j,a.display.maxLineChanged=!0)}null!=d&&a&&this.collapsed&&Jb(a,d,e+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,a&&Da(a.doc)),a&&xe(a,"markerCleared",a,this),b&&wb(a),this.parent&&this.parent.clear()}},pg.prototype.find=function(a,b){null==a&&"bookmark"==this.type&&(a=1);for(var c,d,e=0;ec;++c){var e=this.lines[c];this.height-=e.height,Bd(e),xe(e,"delete")}this.lines.splice(a,b)},collapse:function(a){a.push.apply(a,this.lines)},insertInner:function(a,b,c){this.height+=c,this.lines=this.lines.slice(0,a).concat(b).concat(this.lines.slice(a));for(var d=0;da;++a)if(c(this.lines[a]))return!0}},Vd.prototype={chunkSize:function(){return this.size},removeInner:function(a,b){this.size-=b;for(var c=0;ca){var f=Math.min(b,e-a),g=d.height;if(d.removeInner(a,f),this.height-=g-d.height,e==f&&(this.children.splice(c--,1),d.parent=null),0==(b-=f))break;a=0}else a-=e}if(this.size-b<25&&(this.children.length>1||!(this.children[0]instanceof Ud))){var h=[];this.collapse(h),this.children=[new Ud(h)],this.children[0].parent=this}},collapse:function(a){for(var b=0;b=a){if(e.insertInner(a,b,c),e.lines&&e.lines.length>50){for(;e.lines.length>50;){var g=e.lines.splice(e.lines.length-25,25),h=new Ud(g);e.height-=h.height,this.children.splice(d+1,0,h),h.parent=this}this.maybeSpill()}break}a-=f}},maybeSpill:function(){if(!(this.children.length<=10)){var a=this;do{var b=a.children.splice(a.children.length-5,5),c=new Vd(b);if(a.parent){a.size-=c.size,a.height-=c.height;var d=Ge(a.parent.children,a);a.parent.children.splice(d+1,0,c)}else{var e=new Vd(a.children);e.parent=a,a.children=[e,c],a=e}c.parent=a.parent}while(a.children.length>10);a.parent.maybeSpill()}},iterN:function(a,b,c){for(var d=0;da){var g=Math.min(b,f-a);if(e.iterN(a,g,c))return!0;if(0==(b-=g))break;a=0}else a-=f}}};var vg=0,wg=a.Doc=function(a,b,c,d){if(!(this instanceof wg))return new wg(a,b,c,d);null==c&&(c=0),Vd.call(this,[new Ud([new sg("",null)])]),this.first=c,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=c;var e=Kf(c,0);this.sel=na(e),this.history=new ee(null),this.id=++vg,this.modeOption=b,this.lineSep=d,this.extend=!1,"string"==typeof a&&(a=this.splitLines(a)),Td(this,{from:e,to:e,text:a}),Aa(this,na(e),Jg)};wg.prototype=Je(Vd.prototype,{constructor:wg,iter:function(a,b,c){c?this.iterN(a-this.first,b-a,c):this.iterN(this.first,this.first+this.size,a)},insert:function(a,b){for(var c=0,d=0;d=0;f--)zc(this,d[f]);h?za(this,h):this.cm&&Lc(this.cm)}),undo:Gb(function(){Bc(this,"undo")}),redo:Gb(function(){Bc(this,"redo")}),undoSelection:Gb(function(){Bc(this,"undo",!0)}),redoSelection:Gb(function(){Bc(this,"redo",!0)}),setExtending:function(a){this.extend=a},getExtending:function(){return this.extend},historySize:function(){for(var a=this.history,b=0,c=0,d=0;d=a.ch)&&b.push(e.marker.parent||e.marker)}return b},findMarks:function(a,b,c){a=pa(this,a),b=pa(this,b);var d=[],e=a.line;return this.iter(a.line,b.line+1,function(f){var g=f.markedSpans;if(g)for(var h=0;hi.to||null==i.from&&e!=a.line||null!=i.from&&e==b.line&&i.from>b.ch||c&&!c(i.marker)||d.push(i.marker.parent||i.marker)}++e}),d},getAllMarks:function(){var a=[];return this.iter(function(b){var c=b.markedSpans;if(c)for(var d=0;da?(b=a,!0):(a-=e,void++c)}),pa(this,Kf(c,b))},indexFromPos:function(a){a=pa(this,a);var b=a.ch;return a.lineb&&(b=a.from),null!=a.to&&a.toh||h>=b)return g+(b-f);g+=h-f,g+=c-g%c,f=h+1}},Ng=a.findColumn=function(a,b,c){for(var d=0,e=0;;){var f=a.indexOf(" ",d);-1==f&&(f=a.length);var g=f-d;if(f==a.length||e+g>=b)return d+Math.min(g,b-e);if(e+=f-d,e+=c-e%c,d=f+1,e>=b)return d}},Og=[""],Pg=function(a){a.select()};Bf?Pg=function(a){a.selectionStart=0,a.selectionEnd=a.value.length}:sf&&(Pg=function(a){try{a.select()}catch(b){}});var Qg,Rg=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Sg=a.isWordChar=function(a){return/\w/.test(a)||a>"€"&&(a.toUpperCase()!=a.toLowerCase()||Rg.test(a))},Tg=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;Qg=document.createRange?function(a,b,c,d){var e=document.createRange();return e.setEnd(d||a,c),e.setStart(a,b),e}:function(a,b,c){var d=document.body.createTextRange();try{d.moveToElementText(a.parentNode)}catch(e){return d}return d.collapse(!0),d.moveEnd("character",c),d.moveStart("character",b),d};var Ug=a.contains=function(a,b){if(3==b.nodeType&&(b=b.parentNode),a.contains)return a.contains(b);do if(11==b.nodeType&&(b=b.host),b==a)return!0;while(b=b.parentNode)};sf&&11>tf&&(Se=function(){try{return document.activeElement}catch(a){return document.body}});var Vg,Wg,Xg=a.rmClass=function(a,b){var c=a.className,d=Te(b).exec(c);if(d){var e=c.slice(d.index+d[0].length);a.className=c.slice(0,d.index)+(e?d[1]+e:"")}},Yg=a.addClass=function(a,b){var c=a.className;Te(b).test(c)||(a.className+=(c?" ":"")+b)},Zg=!1,$g=function(){if(sf&&9>tf)return!1;var a=Pe("div");return"draggable"in a||"dragDrop"in a}(),_g=a.splitLines=3!="\n\nb".split(/\n/).length?function(a){for(var b=0,c=[],d=a.length;d>=b;){var e=a.indexOf("\n",b);-1==e&&(e=a.length);var f=a.slice(b,"\r"==a.charAt(e-1)?e-1:e),g=f.indexOf("\r");-1!=g?(c.push(f.slice(0,g)),b+=g+1):(c.push(f),b=e+1)}return c}:function(a){return a.split(/\r\n?|\n/)},ah=window.getSelection?function(a){try{return a.selectionStart!=a.selectionEnd}catch(b){return!1}}:function(a){try{var b=a.ownerDocument.selection.createRange()}catch(c){}return b&&b.parentElement()==a?0!=b.compareEndPoints("StartToEnd",b):!1},bh=function(){var a=Pe("div");return"oncopy"in a?!0:(a.setAttribute("oncopy","return;"),"function"==typeof a.oncopy)}(),ch=null,dh=a.keyNames={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};!function(){for(var a=0;10>a;a++)dh[a+48]=dh[a+96]=String(a);for(var a=65;90>=a;a++)dh[a]=String.fromCharCode(a);for(var a=1;12>=a;a++)dh[a+111]=dh[a+63235]="F"+a}();var eh,fh=function(){function a(a){return 247>=a?c.charAt(a):a>=1424&&1524>=a?"R":a>=1536&&1773>=a?d.charAt(a-1536):a>=1774&&2220>=a?"r":a>=8192&&8203>=a?"w":8204==a?"b":"L"}function b(a,b,c){this.level=a,this.from=b,this.to=c}var c="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",d="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",e=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,f=/[stwN]/,g=/[LRr]/,h=/[Lb1n]/,i=/[1n]/,j="L";return function(c){if(!e.test(c))return!1;for(var d,k=c.length,l=[],m=0;k>m;++m)l.push(d=a(c.charCodeAt(m)));for(var m=0,n=j;k>m;++m){var d=l[m];"m"==d?l[m]=n:n=d}for(var m=0,o=j;k>m;++m){var d=l[m];"1"==d&&"r"==o?l[m]="n":g.test(d)&&(o=d,"r"==d&&(l[m]="R"))}for(var m=1,n=l[0];k-1>m;++m){var d=l[m];"+"==d&&"1"==n&&"1"==l[m+1]?l[m]="1":","!=d||n!=l[m+1]||"1"!=n&&"n"!=n||(l[m]=n),n=d}for(var m=0;k>m;++m){var d=l[m];if(","==d)l[m]="N";else if("%"==d){for(var p=m+1;k>p&&"%"==l[p];++p);for(var q=m&&"!"==l[m-1]||k>p&&"1"==l[p]?"1":"N",r=m;p>r;++r)l[r]=q;m=p-1}}for(var m=0,o=j;k>m;++m){var d=l[m];"L"==o&&"1"==d?l[m]="L":g.test(d)&&(o=d)}for(var m=0;k>m;++m)if(f.test(l[m])){for(var p=m+1;k>p&&f.test(l[p]);++p);for(var s="L"==(m?l[m-1]:j),t="L"==(k>p?l[p]:j),q=s||t?"L":"R",r=m;p>r;++r)l[r]=q;m=p-1}for(var u,v=[],m=0;k>m;)if(h.test(l[m])){var w=m;for(++m;k>m&&h.test(l[m]);++m);v.push(new b(0,w,m))}else{var x=m,y=v.length;for(++m;k>m&&"L"!=l[m];++m);for(var r=x;m>r;)if(i.test(l[r])){r>x&&v.splice(y,0,new b(1,x,r));var z=r;for(++r;m>r&&i.test(l[r]);++r);v.splice(y,0,new b(2,z,r)),x=r}else++r;m>x&&v.splice(y,0,new b(1,x,m))}return 1==v[0].level&&(u=c.match(/^\s+/))&&(v[0].from=u[0].length,v.unshift(new b(0,0,u[0].length))),1==Fe(v).level&&(u=c.match(/\s+$/))&&(Fe(v).to-=u[0].length,v.push(new b(0,k-u[0].length,k))),2==v[0].level&&v.unshift(new b(1,v[0].to,v[0].to)),v[0].level!=Fe(v).level&&v.push(new b(v[0].level,k,k)),v}}();return a.version="5.13.0",a}); \ No newline at end of file diff --git a/media/editors/codemirror/mode/clike/clike.js b/media/editors/codemirror/mode/clike/clike.js index db7f89373d8c1..34d3a5afd3a9c 100644 --- a/media/editors/codemirror/mode/clike/clike.js +++ b/media/editors/codemirror/mode/clike/clike.js @@ -100,7 +100,7 @@ CodeMirror.defineMode("clike", function(config, parserConfig) { } } if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); + while (!stream.match(/^\/[\/*]/, false) && stream.eat(isOperatorChar)) {} return "operator"; } stream.eatWhile(/[\w\$_\xa1-\uffff]/); diff --git a/media/editors/codemirror/mode/clike/clike.min.js b/media/editors/codemirror/mode/clike/clike.min.js index 2efc04ce69dd8..16cc365e38369 100644 --- a/media/editors/codemirror/mode/clike/clike.min.js +++ b/media/editors/codemirror/mode/clike/clike.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function c(a){return"statement"==a||"switchstatement"==a||"namespace"==a}function d(a,d,e){var f=a.indented;return a.context&&c(a.context.type)&&!c(e)&&(f=a.context.indented),a.context=new b(f,d,e,null,a.context)}function e(a){var b=a.context.type;return(")"==b||"]"==b||"}"==b)&&(a.indented=a.context.indented),a.context=a.context.prev}function f(a,b){return"variable"==b.prevToken||"variable-3"==b.prevToken?!0:/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(a.string.slice(0,a.start))?!0:void 0}function g(a){for(;;){if(!a||"top"==a.type)return!0;if("}"==a.type&&"namespace"!=a.prev.type)return!1;a=a.prev}}function h(a){for(var b={},c=a.split(" "),d=0;d!?|\/]/,H=j.endStatement||/^[;:,]$/;return{startState:function(a){return{tokenize:null,context:new b((a||0)-p,0,"top",!1),indented:0,startOfLine:!0,prevToken:null}},token:function(a,b){var h=b.context;if(a.sol()&&(null==h.align&&(h.align=!1),b.indented=a.indentation(),b.startOfLine=!0),a.eatSpace())return null;n=o=null;var i=(b.tokenize||k)(a,b);if("comment"==i||"meta"==i)return i;if(null==h.align&&(h.align=!0),H.test(n))for(;c(b.context.type);)e(b);else if("{"==n)d(b,a.column(),"}");else if("["==n)d(b,a.column(),"]");else if("("==n)d(b,a.column(),")");else if("}"==n){for(;c(h.type);)h=e(b);for("}"==h.type&&(h=e(b));c(h.type);)h=e(b)}else if(n==h.type)e(b);else if(A&&(("}"==h.type||"top"==h.type)&&";"!=n||c(h.type)&&"newstatement"==n)){var l="statement";"newstatement"==n&&B&&"switch"==a.current()?l="switchstatement":"keyword"==i&&"namespace"==a.current()&&(l="namespace"),d(b,a.column(),l)}if("variable"==i&&("def"==b.prevToken||j.typeFirstDefinitions&&f(a,b)&&g(b.context)&&a.match(/^\s*\(/,!1))&&(i="def"),y.token){var m=y.token(a,b,i);void 0!==m&&(i=m)}return"def"==i&&j.styleDefs===!1&&(i="variable"),b.startOfLine=!1,b.prevToken=o?"def":i||n,i},indent:function(b,d){if(b.tokenize!=k&&null!=b.tokenize)return a.Pass;var e=b.context,f=d&&d.charAt(0);if(c(e.type)&&"}"==f&&(e=e.prev),y.indent){var g=y.indent(b,e,d);if("number"==typeof g)return g}var h=f==e.type,i=e.prev&&"switchstatement"==e.prev.type;if(j.allmanIndentation&&/[{(]/.test(f)){for(;"top"!=e.type&&"}"!=e.type;)e=e.prev;return e.indented}return c(e.type)?e.indented+("{"==f?0:q):!e.align||r&&")"==e.type?")"!=e.type||h?e.indented+(h?0:p)+(h||!i||/^(?:case|default)\b/.test(d)?0:p):e.indented+q:e.column+(h?0:1)},electricInput:B?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",fold:"brace"}});var u="auto if break case register continue return default do sizeof static else struct switch extern typedef union for goto while enum const volatile",v="int long char short double float unsigned signed void size_t ptrdiff_t";q(["text/x-csrc","text/x-c","text/x-chdr"],{name:"clike",keywords:h(u),types:h(v+" bool _Complex _Bool float_t double_t intptr_t intmax_t int8_t int16_t int32_t int64_t uintptr_t uintmax_t uint8_t uint16_t uint32_t uint64_t"),blockKeywords:h("case do else for if switch while struct"),defKeywords:h("struct"),typeFirstDefinitions:!0,atoms:h("null true false"),hooks:{"#":j,"*":k},modeProps:{fold:["brace","include"]}}),q(["text/x-c++src","text/x-c++hdr"],{name:"clike",keywords:h(u+" asm dynamic_cast namespace reinterpret_cast try explicit new static_cast typeid catch operator template typename class friend private this using const_cast inline public throw virtual delete mutable protected alignas alignof constexpr decltype nullptr noexcept thread_local final static_assert override"),types:h(v+" bool wchar_t"),blockKeywords:h("catch class do else finally for if struct switch try while"),defKeywords:h("class namespace struct enum union"),typeFirstDefinitions:!0,atoms:h("true false null"),hooks:{"#":j,"*":k,u:m,U:m,L:m,R:m,0:l,1:l,2:l,3:l,4:l,5:l,6:l,7:l,8:l,9:l,token:function(a,b,c){return"variable"!=c||"("!=a.peek()||";"!=b.prevToken&&null!=b.prevToken&&"}"!=b.prevToken||!n(a.current())?void 0:"def"}},namespaceSeparator:"::",modeProps:{fold:["brace","include"]}}),q("text/x-java",{name:"clike",keywords:h("abstract assert break case catch class const continue default do else enum extends final finally float for goto if implements import instanceof interface native new package private protected public return static strictfp super switch synchronized this throw throws transient try volatile while"),types:h("byte short int long float double boolean char void Boolean Byte Character Double Float Integer Long Number Object Short String StringBuffer StringBuilder Void"),blockKeywords:h("catch class do else finally for if switch try while"),defKeywords:h("class interface package enum"),typeFirstDefinitions:!0,atoms:h("true false null"),endStatement:/^[;:]$/,hooks:{"@":function(a){return a.eatWhile(/[\w\$_]/),"meta"}},modeProps:{fold:["brace","import"]}}),q("text/x-csharp",{name:"clike",keywords:h("abstract as async await base break case catch checked class const continue default delegate do else enum event explicit extern finally fixed for foreach goto if implicit in interface internal is lock namespace new operator out override params private protected public readonly ref return sealed sizeof stackalloc static struct switch this throw try typeof unchecked unsafe using virtual void volatile while add alias ascending descending dynamic from get global group into join let orderby partial remove select set value var yield"),types:h("Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32 UInt64 bool byte char decimal double short int long object sbyte float string ushort uint ulong"),blockKeywords:h("catch class do else finally for foreach if struct switch try while"),defKeywords:h("class interface namespace struct var"),typeFirstDefinitions:!0,atoms:h("true false null"),hooks:{"@":function(a,b){return a.eat('"')?(b.tokenize=o,o(a,b)):(a.eatWhile(/[\w\$_]/),"meta")}}}),q("text/x-scala",{name:"clike",keywords:h("abstract case catch class def do else extends final finally for forSome if implicit import lazy match new null object override package private protected return sealed super this throw trait try type val var while with yield _ : = => <- <: <% >: # @ assert assume require print println printf readLine readBoolean readByte readShort readChar readInt readLong readFloat readDouble :: #:: "),types:h("AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either Enumeration Equiv Error Exception Fractional Function IndexedSeq Int Integral Iterable Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"),multiLineStrings:!0,blockKeywords:h("catch class do else finally for forSome if match switch try while"),defKeywords:h("class def object package trait type val var"),atoms:h("true false null"),indentStatements:!1,indentSwitch:!1,hooks:{"@":function(a){return a.eatWhile(/[\w\$_]/),"meta"},'"':function(a,b){return a.match('""')?(b.tokenize=r,b.tokenize(a,b)):!1},"'":function(a){return a.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},"=":function(a,c){var d=c.context;return"}"==d.type&&d.align&&a.eat(">")?(c.context=new b(d.indented,d.column,d.type,null,d.prev),"operator"):!1}},modeProps:{closeBrackets:{triples:'"'}}}),q("text/x-kotlin",{name:"clike",keywords:h("package as typealias class interface this super val var fun for is in This throw return break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix"),types:h("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"),intendSwitch:!1,indentStatements:!1,multiLineStrings:!0,blockKeywords:h("catch class do else finally for if where try while enum"),defKeywords:h("class val var object package interface fun"),atoms:h("true false null this"),hooks:{'"':function(a,b){return b.tokenize=s(a.match('""')),b.tokenize(a,b)}},modeProps:{closeBrackets:{triples:'"'}}}),q(["x-shader/x-vertex","x-shader/x-fragment"],{name:"clike",keywords:h("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:h("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:h("for while do if else struct"),builtin:h("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:h("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":j},modeProps:{fold:["brace","include"]}}),q("text/x-nesc",{name:"clike",keywords:h(u+"as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:h(v),blockKeywords:h("case do else for if switch while struct"),atoms:h("null true false"),hooks:{"#":j},modeProps:{fold:["brace","include"]}}),q("text/x-objectivec",{name:"clike",keywords:h(u+"inline restrict _Bool _Complex _Imaginery BOOL Class bycopy byref id IMP in inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly"),types:h(v),atoms:h("YES NO NULL NILL ON OFF true false"),hooks:{"@":function(a){return a.eatWhile(/[\w\$]/),"keyword"},"#":j,indent:function(a,b,c){return"statement"==b.type&&/^@\w/.test(c)?b.indented:void 0}},modeProps:{fold:"brace"}}),q("text/x-squirrel",{name:"clike",keywords:h("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:h(v),blockKeywords:h("case catch class else for foreach if switch try while"),defKeywords:h("function local class"),typeFirstDefinitions:!0,atoms:h("true false null"),hooks:{"#":j},modeProps:{fold:["brace","include"]}});var w=null;q("text/x-ceylon",{name:"clike",keywords:h("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(a){var b=a.charAt(0);return b===b.toUpperCase()&&b!==b.toLowerCase()},blockKeywords:h("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:h("class dynamic function interface module object package value"),builtin:h("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:h("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(a){return a.eatWhile(/[\w\$_]/),"meta"},'"':function(a,b){return b.tokenize=t(a.match('""')?"triple":"single"),b.tokenize(a,b)},"`":function(a,b){return w&&a.match("`")?(b.tokenize=w,w=null,b.tokenize(a,b)):!1},"'":function(a){return a.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},token:function(a,b,c){return"variable"!=c&&"variable-3"!=c||"."!=b.prevToken?void 0:"variable-2"}},modeProps:{fold:["brace","import"],closeBrackets:{triples:'"'}}})}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function c(a){return"statement"==a||"switchstatement"==a||"namespace"==a}function d(a,d,e){var f=a.indented;return a.context&&c(a.context.type)&&!c(e)&&(f=a.context.indented),a.context=new b(f,d,e,null,a.context)}function e(a){var b=a.context.type;return(")"==b||"]"==b||"}"==b)&&(a.indented=a.context.indented),a.context=a.context.prev}function f(a,b){return"variable"==b.prevToken||"variable-3"==b.prevToken?!0:/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(a.string.slice(0,a.start))?!0:void 0}function g(a){for(;;){if(!a||"top"==a.type)return!0;if("}"==a.type&&"namespace"!=a.prev.type)return!1;a=a.prev}}function h(a){for(var b={},c=a.split(" "),d=0;d!?|\/]/,H=j.endStatement||/^[;:,]$/;return{startState:function(a){return{tokenize:null,context:new b((a||0)-p,0,"top",!1),indented:0,startOfLine:!0,prevToken:null}},token:function(a,b){var h=b.context;if(a.sol()&&(null==h.align&&(h.align=!1),b.indented=a.indentation(),b.startOfLine=!0),a.eatSpace())return null;n=o=null;var i=(b.tokenize||k)(a,b);if("comment"==i||"meta"==i)return i;if(null==h.align&&(h.align=!0),H.test(n))for(;c(b.context.type);)e(b);else if("{"==n)d(b,a.column(),"}");else if("["==n)d(b,a.column(),"]");else if("("==n)d(b,a.column(),")");else if("}"==n){for(;c(h.type);)h=e(b);for("}"==h.type&&(h=e(b));c(h.type);)h=e(b)}else if(n==h.type)e(b);else if(A&&(("}"==h.type||"top"==h.type)&&";"!=n||c(h.type)&&"newstatement"==n)){var l="statement";"newstatement"==n&&B&&"switch"==a.current()?l="switchstatement":"keyword"==i&&"namespace"==a.current()&&(l="namespace"),d(b,a.column(),l)}if("variable"==i&&("def"==b.prevToken||j.typeFirstDefinitions&&f(a,b)&&g(b.context)&&a.match(/^\s*\(/,!1))&&(i="def"),y.token){var m=y.token(a,b,i);void 0!==m&&(i=m)}return"def"==i&&j.styleDefs===!1&&(i="variable"),b.startOfLine=!1,b.prevToken=o?"def":i||n,i},indent:function(b,d){if(b.tokenize!=k&&null!=b.tokenize)return a.Pass;var e=b.context,f=d&&d.charAt(0);if(c(e.type)&&"}"==f&&(e=e.prev),y.indent){var g=y.indent(b,e,d);if("number"==typeof g)return g}var h=f==e.type,i=e.prev&&"switchstatement"==e.prev.type;if(j.allmanIndentation&&/[{(]/.test(f)){for(;"top"!=e.type&&"}"!=e.type;)e=e.prev;return e.indented}return c(e.type)?e.indented+("{"==f?0:q):!e.align||r&&")"==e.type?")"!=e.type||h?e.indented+(h?0:p)+(h||!i||/^(?:case|default)\b/.test(d)?0:p):e.indented+q:e.column+(h?0:1)},electricInput:B?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",fold:"brace"}});var u="auto if break case register continue return default do sizeof static else struct switch extern typedef union for goto while enum const volatile",v="int long char short double float unsigned signed void size_t ptrdiff_t";q(["text/x-csrc","text/x-c","text/x-chdr"],{name:"clike",keywords:h(u),types:h(v+" bool _Complex _Bool float_t double_t intptr_t intmax_t int8_t int16_t int32_t int64_t uintptr_t uintmax_t uint8_t uint16_t uint32_t uint64_t"),blockKeywords:h("case do else for if switch while struct"),defKeywords:h("struct"),typeFirstDefinitions:!0,atoms:h("null true false"),hooks:{"#":j,"*":k},modeProps:{fold:["brace","include"]}}),q(["text/x-c++src","text/x-c++hdr"],{name:"clike",keywords:h(u+" asm dynamic_cast namespace reinterpret_cast try explicit new static_cast typeid catch operator template typename class friend private this using const_cast inline public throw virtual delete mutable protected alignas alignof constexpr decltype nullptr noexcept thread_local final static_assert override"),types:h(v+" bool wchar_t"),blockKeywords:h("catch class do else finally for if struct switch try while"),defKeywords:h("class namespace struct enum union"),typeFirstDefinitions:!0,atoms:h("true false null"),hooks:{"#":j,"*":k,u:m,U:m,L:m,R:m,0:l,1:l,2:l,3:l,4:l,5:l,6:l,7:l,8:l,9:l,token:function(a,b,c){return"variable"!=c||"("!=a.peek()||";"!=b.prevToken&&null!=b.prevToken&&"}"!=b.prevToken||!n(a.current())?void 0:"def"}},namespaceSeparator:"::",modeProps:{fold:["brace","include"]}}),q("text/x-java",{name:"clike",keywords:h("abstract assert break case catch class const continue default do else enum extends final finally float for goto if implements import instanceof interface native new package private protected public return static strictfp super switch synchronized this throw throws transient try volatile while"),types:h("byte short int long float double boolean char void Boolean Byte Character Double Float Integer Long Number Object Short String StringBuffer StringBuilder Void"),blockKeywords:h("catch class do else finally for if switch try while"),defKeywords:h("class interface package enum"),typeFirstDefinitions:!0,atoms:h("true false null"),endStatement:/^[;:]$/,hooks:{"@":function(a){return a.eatWhile(/[\w\$_]/),"meta"}},modeProps:{fold:["brace","import"]}}),q("text/x-csharp",{name:"clike",keywords:h("abstract as async await base break case catch checked class const continue default delegate do else enum event explicit extern finally fixed for foreach goto if implicit in interface internal is lock namespace new operator out override params private protected public readonly ref return sealed sizeof stackalloc static struct switch this throw try typeof unchecked unsafe using virtual void volatile while add alias ascending descending dynamic from get global group into join let orderby partial remove select set value var yield"),types:h("Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32 UInt64 bool byte char decimal double short int long object sbyte float string ushort uint ulong"),blockKeywords:h("catch class do else finally for foreach if struct switch try while"),defKeywords:h("class interface namespace struct var"),typeFirstDefinitions:!0,atoms:h("true false null"),hooks:{"@":function(a,b){return a.eat('"')?(b.tokenize=o,o(a,b)):(a.eatWhile(/[\w\$_]/),"meta")}}}),q("text/x-scala",{name:"clike",keywords:h("abstract case catch class def do else extends final finally for forSome if implicit import lazy match new null object override package private protected return sealed super this throw trait try type val var while with yield _ : = => <- <: <% >: # @ assert assume require print println printf readLine readBoolean readByte readShort readChar readInt readLong readFloat readDouble :: #:: "),types:h("AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either Enumeration Equiv Error Exception Fractional Function IndexedSeq Int Integral Iterable Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"),multiLineStrings:!0,blockKeywords:h("catch class do else finally for forSome if match switch try while"),defKeywords:h("class def object package trait type val var"),atoms:h("true false null"),indentStatements:!1,indentSwitch:!1,hooks:{"@":function(a){return a.eatWhile(/[\w\$_]/),"meta"},'"':function(a,b){return a.match('""')?(b.tokenize=r,b.tokenize(a,b)):!1},"'":function(a){return a.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},"=":function(a,c){var d=c.context;return"}"==d.type&&d.align&&a.eat(">")?(c.context=new b(d.indented,d.column,d.type,null,d.prev),"operator"):!1}},modeProps:{closeBrackets:{triples:'"'}}}),q("text/x-kotlin",{name:"clike",keywords:h("package as typealias class interface this super val var fun for is in This throw return break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix"),types:h("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"),intendSwitch:!1,indentStatements:!1,multiLineStrings:!0,blockKeywords:h("catch class do else finally for if where try while enum"),defKeywords:h("class val var object package interface fun"),atoms:h("true false null this"),hooks:{'"':function(a,b){return b.tokenize=s(a.match('""')),b.tokenize(a,b)}},modeProps:{closeBrackets:{triples:'"'}}}),q(["x-shader/x-vertex","x-shader/x-fragment"],{name:"clike",keywords:h("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:h("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:h("for while do if else struct"),builtin:h("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:h("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":j},modeProps:{fold:["brace","include"]}}),q("text/x-nesc",{name:"clike",keywords:h(u+"as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:h(v),blockKeywords:h("case do else for if switch while struct"),atoms:h("null true false"),hooks:{"#":j},modeProps:{fold:["brace","include"]}}),q("text/x-objectivec",{name:"clike",keywords:h(u+"inline restrict _Bool _Complex _Imaginery BOOL Class bycopy byref id IMP in inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly"),types:h(v),atoms:h("YES NO NULL NILL ON OFF true false"),hooks:{"@":function(a){return a.eatWhile(/[\w\$]/),"keyword"},"#":j,indent:function(a,b,c){return"statement"==b.type&&/^@\w/.test(c)?b.indented:void 0}},modeProps:{fold:"brace"}}),q("text/x-squirrel",{name:"clike",keywords:h("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:h(v),blockKeywords:h("case catch class else for foreach if switch try while"),defKeywords:h("function local class"),typeFirstDefinitions:!0,atoms:h("true false null"),hooks:{"#":j},modeProps:{fold:["brace","include"]}});var w=null;q("text/x-ceylon",{name:"clike",keywords:h("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(a){var b=a.charAt(0);return b===b.toUpperCase()&&b!==b.toLowerCase()},blockKeywords:h("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:h("class dynamic function interface module object package value"),builtin:h("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:h("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(a){return a.eatWhile(/[\w\$_]/),"meta"},'"':function(a,b){return b.tokenize=t(a.match('""')?"triple":"single"),b.tokenize(a,b)},"`":function(a,b){return w&&a.match("`")?(b.tokenize=w,w=null,b.tokenize(a,b)):!1},"'":function(a){return a.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},token:function(a,b,c){return"variable"!=c&&"variable-3"!=c||"."!=b.prevToken?void 0:"variable-2"}},modeProps:{fold:["brace","import"],closeBrackets:{triples:'"'}}})}); \ No newline at end of file diff --git a/media/editors/codemirror/mode/clojure/clojure.js b/media/editors/codemirror/mode/clojure/clojure.js index fd5e66ff26d17..cd8129f7576a1 100644 --- a/media/editors/codemirror/mode/clojure/clojure.js +++ b/media/editors/codemirror/mode/clojure/clojure.js @@ -245,5 +245,6 @@ CodeMirror.defineMode("clojure", function (options) { CodeMirror.defineMIME("text/x-clojure", "clojure"); CodeMirror.defineMIME("text/x-clojurescript", "clojure"); +CodeMirror.defineMIME("application/edn", "clojure"); }); diff --git a/media/editors/codemirror/mode/clojure/clojure.min.js b/media/editors/codemirror/mode/clojure/clojure.min.js index 05f5c6b8ad646..16c384a4a4bb5 100644 --- a/media/editors/codemirror/mode/clojure/clojure.min.js +++ b/media/editors/codemirror/mode/clojure/clojure.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("clojure",function(a){function b(a){for(var b={},c=a.split(" "),d=0;d ->> doto and or dosync doseq dotimes dorun doall load import unimport ns in-ns refer try catch finally throw with-open with-local-vars binding gen-class gen-and-load-class gen-and-save-class handler-case handle"),u=b("* *' *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* *compile-path* *compiler-options* *data-readers* *e *err* *file* *flush-on-newline* *fn-loader* *in* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* + +' - -' -> ->> ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods .. / < <= = == > >= EMPTY-NODE accessor aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 bases bean bigdec bigint biginteger binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* bound? butlast byte byte-array bytes case cast char char-array char-escape-string char-name-string char? chars chunk chunk-append chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement concat cond condp conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? declare default-data-readers definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol defrecord defstruct deftype delay delay? deliver denominator deref derive descendants destructure disj disj! dissoc dissoc! distinct distinct? doall dorun doseq dosync dotimes doto double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info extend extend-protocol extend-type extenders extends? false? ffirst file-seq filter filterv find find-keyword find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn fn? fnext fnil for force format frequencies future future-call future-cancel future-cancelled? future-done? future? gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash hash-combine hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc inc' init-proxy instance? int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt keep keep-indexed key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array make-hierarchy map map-indexed map? mapcat mapv max max-key memfn memoize merge merge-with meta method-sig methods min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext nthrest num number? numerator object-array odd? or parents partial partition partition-all partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers primitives-classnames print print-ctor print-dup print-method print-simple print-str printf println println-str prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot rand rand-int rand-nth range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string realized? reduce reduce-kv reductions ref ref-history-count ref-max-history ref-min-history ref-set refer refer-clojure reify release-pending-sends rem remove remove-all-methods remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off seq seq? seque sequence sequential? set set-error-handler! set-error-mode! set-validator! set? short short-array shorts shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol symbol? sync take take-last take-nth take-while test the-ns thread-bound? time to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive unquote unquote-splicing update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of vector? when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context with-local-vars with-meta with-open with-out-str with-precision with-redefs with-redefs-fn xml-seq zero? zipmap *default-data-reader-fn* as-> cond-> cond->> reduced reduced? send-via set-agent-send-executor! set-agent-send-off-executor! some-> some->>"),v=b("ns fn def defn defmethod bound-fn if if-not case condp when while when-not when-first do future comment doto locking proxy with-open with-precision reify deftype defrecord defprotocol extend extend-protocol extend-type try catch let letfn binding loop for doseq dotimes when-let if-let defstruct struct-map assoc testing deftest handler-case handle dotrace deftrace"),w={digit:/\d/,digit_or_colon:/[\d:]/,hex:/[0-9a-f]/i,sign:/[+-]/,exponent:/e/i,keyword_char:/[^\s\(\[\;\)\]]/,symbol:/[\w*+!\-\._?:<>\/\xa1-\uffff]/,block_indent:/^(?:def|with)[^\/]+$|\/(?:def|with)/};return{startState:function(){return{indentStack:null,indentation:0,mode:!1}},token:function(a,b){if(null==b.indentStack&&a.sol()&&(b.indentation=a.indentation()),"string"!=b.mode&&a.eatSpace())return null;var c=null;switch(b.mode){case"string":for(var x,y=!1;null!=(x=a.next());){if('"'==x&&!y){b.mode=!1;break}y=!y&&"\\"==x}c=j;break;default:var z=a.next();if('"'==z)b.mode="string",c=j;else if("\\"==z)g(a),c=k;else if("'"!=z||w.digit_or_colon.test(a.peek()))if(";"==z)a.skipToEnd(),c=i;else if(f(z,a))c=m;else if("("==z||"["==z||"{"==z){var A,B="",C=a.column();if("("==z)for(;null!=(A=a.eat(w.keyword_char));)B+=A;B.length>0&&(v.propertyIsEnumerable(B)||w.block_indent.test(B))?d(b,C+q,z):(a.eatSpace(),a.eol()||";"==a.peek()?d(b,C+r,z):d(b,C+a.current().length,z)),a.backUp(a.current().length-1),c=n}else if(")"==z||"]"==z||"}"==z)c=n,null!=b.indentStack&&b.indentStack.type==(")"==z?"(":"]"==z?"[":"{")&&e(b);else{if(":"==z)return a.eatWhile(w.symbol),l;a.eatWhile(w.symbol),c=t&&t.propertyIsEnumerable(a.current())?o:u&&u.propertyIsEnumerable(a.current())?h:s&&s.propertyIsEnumerable(a.current())?l:p}else c=l}return c},indent:function(a){return null==a.indentStack?a.indentation:a.indentStack.indent},closeBrackets:{pairs:'()[]{}""'},lineComment:";;"}}),a.defineMIME("text/x-clojure","clojure"),a.defineMIME("text/x-clojurescript","clojure")}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("clojure",function(a){function b(a){for(var b={},c=a.split(" "),d=0;d ->> doto and or dosync doseq dotimes dorun doall load import unimport ns in-ns refer try catch finally throw with-open with-local-vars binding gen-class gen-and-load-class gen-and-save-class handler-case handle"),u=b("* *' *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* *compile-path* *compiler-options* *data-readers* *e *err* *file* *flush-on-newline* *fn-loader* *in* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* + +' - -' -> ->> ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods .. / < <= = == > >= EMPTY-NODE accessor aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 bases bean bigdec bigint biginteger binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* bound? butlast byte byte-array bytes case cast char char-array char-escape-string char-name-string char? chars chunk chunk-append chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement concat cond condp conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? declare default-data-readers definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol defrecord defstruct deftype delay delay? deliver denominator deref derive descendants destructure disj disj! dissoc dissoc! distinct distinct? doall dorun doseq dosync dotimes doto double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info extend extend-protocol extend-type extenders extends? false? ffirst file-seq filter filterv find find-keyword find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn fn? fnext fnil for force format frequencies future future-call future-cancel future-cancelled? future-done? future? gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash hash-combine hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc inc' init-proxy instance? int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt keep keep-indexed key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array make-hierarchy map map-indexed map? mapcat mapv max max-key memfn memoize merge merge-with meta method-sig methods min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext nthrest num number? numerator object-array odd? or parents partial partition partition-all partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers primitives-classnames print print-ctor print-dup print-method print-simple print-str printf println println-str prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot rand rand-int rand-nth range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string realized? reduce reduce-kv reductions ref ref-history-count ref-max-history ref-min-history ref-set refer refer-clojure reify release-pending-sends rem remove remove-all-methods remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off seq seq? seque sequence sequential? set set-error-handler! set-error-mode! set-validator! set? short short-array shorts shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol symbol? sync take take-last take-nth take-while test the-ns thread-bound? time to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive unquote unquote-splicing update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of vector? when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context with-local-vars with-meta with-open with-out-str with-precision with-redefs with-redefs-fn xml-seq zero? zipmap *default-data-reader-fn* as-> cond-> cond->> reduced reduced? send-via set-agent-send-executor! set-agent-send-off-executor! some-> some->>"),v=b("ns fn def defn defmethod bound-fn if if-not case condp when while when-not when-first do future comment doto locking proxy with-open with-precision reify deftype defrecord defprotocol extend extend-protocol extend-type try catch let letfn binding loop for doseq dotimes when-let if-let defstruct struct-map assoc testing deftest handler-case handle dotrace deftrace"),w={digit:/\d/,digit_or_colon:/[\d:]/,hex:/[0-9a-f]/i,sign:/[+-]/,exponent:/e/i,keyword_char:/[^\s\(\[\;\)\]]/,symbol:/[\w*+!\-\._?:<>\/\xa1-\uffff]/,block_indent:/^(?:def|with)[^\/]+$|\/(?:def|with)/};return{startState:function(){return{indentStack:null,indentation:0,mode:!1}},token:function(a,b){if(null==b.indentStack&&a.sol()&&(b.indentation=a.indentation()),"string"!=b.mode&&a.eatSpace())return null;var c=null;switch(b.mode){case"string":for(var x,y=!1;null!=(x=a.next());){if('"'==x&&!y){b.mode=!1;break}y=!y&&"\\"==x}c=j;break;default:var z=a.next();if('"'==z)b.mode="string",c=j;else if("\\"==z)g(a),c=k;else if("'"!=z||w.digit_or_colon.test(a.peek()))if(";"==z)a.skipToEnd(),c=i;else if(f(z,a))c=m;else if("("==z||"["==z||"{"==z){var A,B="",C=a.column();if("("==z)for(;null!=(A=a.eat(w.keyword_char));)B+=A;B.length>0&&(v.propertyIsEnumerable(B)||w.block_indent.test(B))?d(b,C+q,z):(a.eatSpace(),a.eol()||";"==a.peek()?d(b,C+r,z):d(b,C+a.current().length,z)),a.backUp(a.current().length-1),c=n}else if(")"==z||"]"==z||"}"==z)c=n,null!=b.indentStack&&b.indentStack.type==(")"==z?"(":"]"==z?"[":"{")&&e(b);else{if(":"==z)return a.eatWhile(w.symbol),l;a.eatWhile(w.symbol),c=t&&t.propertyIsEnumerable(a.current())?o:u&&u.propertyIsEnumerable(a.current())?h:s&&s.propertyIsEnumerable(a.current())?l:p}else c=l}return c},indent:function(a){return null==a.indentStack?a.indentation:a.indentStack.indent},closeBrackets:{pairs:'()[]{}""'},lineComment:";;"}}),a.defineMIME("text/x-clojure","clojure"),a.defineMIME("text/x-clojurescript","clojure"),a.defineMIME("application/edn","clojure")}); \ No newline at end of file diff --git a/media/editors/codemirror/mode/dart/dart.js b/media/editors/codemirror/mode/dart/dart.js index d92eb5190cced..8d383a95efb8b 100644 --- a/media/editors/codemirror/mode/dart/dart.js +++ b/media/editors/codemirror/mode/dart/dart.js @@ -72,6 +72,12 @@ return null; } return false; + }, + + "/": function(stream, state) { + if (!stream.eat("*")) return false + state.tokenize = tokenNestedComment(1) + return state.tokenize(stream, state) } } }); @@ -121,6 +127,27 @@ return "variable"; } + function tokenNestedComment(depth) { + return function (stream, state) { + var ch + while (ch = stream.next()) { + if (ch == "*" && stream.eat("/")) { + if (depth == 1) { + state.tokenize = null + break + } else { + state.tokenize = tokenNestedComment(depth - 1) + return state.tokenize(stream, state) + } + } else if (ch == "/" && stream.eat("*")) { + state.tokenize = tokenNestedComment(depth + 1) + return state.tokenize(stream, state) + } + } + return "comment" + } + } + CodeMirror.registerHelper("hintWords", "application/dart", keywords.concat(atoms).concat(builtins)); // This is needed to make loading through meta.js work. diff --git a/media/editors/codemirror/mode/dart/dart.min.js b/media/editors/codemirror/mode/dart/dart.min.js index 82b601e3ab47c..7eb49fd7c7898 100644 --- a/media/editors/codemirror/mode/dart/dart.min.js +++ b/media/editors/codemirror/mode/dart/dart.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("../clike/clike")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../clike/clike"],a):a(CodeMirror)}(function(a){"use strict";function b(a){for(var b={},c=0;c0?(b.tokenize=d(b),null):!1}}}),a.registerHelper("hintWords","application/dart",i.concat(k).concat(l)),a.defineMode("dart",function(b){return a.getMode(b,"application/dart")},"clike")}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("../clike/clike")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../clike/clike"],a):a(CodeMirror)}(function(a){"use strict";function b(a){for(var b={},c=0;c0?(b.tokenize=d(b),null):!1},"/":function(a,b){return a.eat("*")?(b.tokenize=i(1),b.tokenize(a,b)):!1}}}),a.registerHelper("hintWords","application/dart",j.concat(l).concat(m)),a.defineMode("dart",function(b){return a.getMode(b,"application/dart")},"clike")}); \ No newline at end of file diff --git a/media/editors/codemirror/mode/dylan/dylan.js b/media/editors/codemirror/mode/dylan/dylan.js index 85f0166c10a1f..1b46bc828465f 100644 --- a/media/editors/codemirror/mode/dylan/dylan.js +++ b/media/editors/codemirror/mode/dylan/dylan.js @@ -169,15 +169,16 @@ CodeMirror.defineMode("dylan", function(_config) { } else if (stream.eat("/")) { stream.skipToEnd(); return "comment"; - } else { - stream.skipTo(" "); - return "operator"; } + stream.backUp(1); } // Decimal - else if (/\d/.test(ch)) { - stream.match(/^\d*(?:\.\d*)?(?:e[+\-]?\d+)?/); - return "number"; + else if (/[+\-\d\.]/.test(ch)) { + if (stream.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i) || + stream.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i) || + stream.match(/^[+-]?\d+/)) { + return "number"; + } } // Hash else if (ch == "#") { @@ -186,7 +187,7 @@ CodeMirror.defineMode("dylan", function(_config) { ch = stream.peek(); if (ch == '"') { stream.next(); - return chain(stream, state, tokenString('"', "string-2")); + return chain(stream, state, tokenString('"', "string")); } // Binary number else if (ch == "b") { @@ -206,11 +207,51 @@ CodeMirror.defineMode("dylan", function(_config) { stream.eatWhile(/[0-7]/); return "number"; } + // Token concatenation in macros + else if (ch == '#') { + stream.next(); + return "punctuation"; + } + // Sequence literals + else if ((ch == '[') || (ch == '(')) { + stream.next(); + return "bracket"; // Hash symbol - else { + } else if (stream.match(/f|t|all-keys|include|key|next|rest/i)) { + return "atom"; + } else { stream.eatWhile(/[-a-zA-Z]/); - return "keyword"; + return "error"; + } + } else if (ch == "~") { + stream.next(); + ch = stream.peek(); + if (ch == "=") { + stream.next(); + ch = stream.peek(); + if (ch == "=") { + stream.next(); + return "operator"; + } + return "operator"; } + return "operator"; + } else if (ch == ":") { + stream.next(); + ch = stream.peek(); + if (ch == "=") { + stream.next(); + return "operator"; + } else if (ch == ":") { + stream.next(); + return "punctuation"; + } + } else if ("[](){}".indexOf(ch) != -1) { + stream.next(); + return "bracket"; + } else if (".,".indexOf(ch) != -1) { + stream.next(); + return "punctuation"; } else if (stream.match("end")) { return "keyword"; } @@ -223,6 +264,10 @@ CodeMirror.defineMode("dylan", function(_config) { return patternStyles[name]; } } + if (/[+\-*\/^=<>&|]/.test(ch)) { + stream.next(); + return "operator"; + } if (stream.match("define")) { return "def"; } else { @@ -240,29 +285,37 @@ CodeMirror.defineMode("dylan", function(_config) { } function tokenComment(stream, state) { - var maybeEnd = false, - ch; + var maybeEnd = false, maybeNested = false, nestedCount = 0, ch; while ((ch = stream.next())) { if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; + if (nestedCount > 0) { + nestedCount--; + } else { + state.tokenize = tokenBase; + break; + } + } else if (ch == "*" && maybeNested) { + nestedCount++; } maybeEnd = (ch == "*"); + maybeNested = (ch == "/"); } return "comment"; } function tokenString(quote, style) { return function(stream, state) { - var next, end = false; + var escaped = false, next, end = false; while ((next = stream.next()) != null) { - if (next == quote) { + if (next == quote && !escaped) { end = true; break; } + escaped = !escaped && next == "\\"; } - if (end) + if (end || !escaped) { state.tokenize = tokenBase; + } return style; }; } diff --git a/media/editors/codemirror/mode/dylan/dylan.min.js b/media/editors/codemirror/mode/dylan/dylan.min.js index 550880b2267d5..833d04ea4a816 100644 --- a/media/editors/codemirror/mode/dylan/dylan.min.js +++ b/media/editors/codemirror/mode/dylan/dylan.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("dylan",function(a){function b(a,b,c){return b.tokenize=c,c(a,b)}function c(a,c){var f=a.peek();if("'"==f||'"'==f)return a.next(),b(a,c,e(f,"string"));if("/"==f)return a.next(),a.eat("*")?b(a,c,d):a.eat("/")?(a.skipToEnd(),"comment"):(a.skipTo(" "),"operator");if(/\d/.test(f))return a.match(/^\d*(?:\.\d*)?(?:e[+\-]?\d+)?/),"number";if("#"==f)return a.next(),f=a.peek(),'"'==f?(a.next(),b(a,c,e('"',"string-2"))):"b"==f?(a.next(),a.eatWhile(/[01]/),"number"):"x"==f?(a.next(),a.eatWhile(/[\da-f]/i),"number"):"o"==f?(a.next(),a.eatWhile(/[0-7]/),"number"):(a.eatWhile(/[-a-zA-Z]/),"keyword");if(a.match("end"))return"keyword";for(var g in i)if(i.hasOwnProperty(g)){var k=i[g];if(k instanceof Array&&k.some(function(b){return a.match(b)})||a.match(k))return j[g]}return a.match("define")?"def":(a.eatWhile(/[\w\-]/),m[a.current()]?n[a.current()]:a.current().match(h)?"variable":(a.next(),"variable-2"))}function d(a,b){for(var d,e=!1;d=a.next();){if("/"==d&&e){b.tokenize=c;break}e="*"==d}return"comment"}function e(a,b){return function(d,e){for(var f,g=!1;null!=(f=d.next());)if(f==a){g=!0;break}return g&&(e.tokenize=c),b}}var f={unnamedDefinition:["interface"],namedDefinition:["module","library","macro","C-struct","C-union","C-function","C-callable-wrapper"],typeParameterizedDefinition:["class","C-subtype","C-mapped-subtype"],otherParameterizedDefinition:["method","function","C-variable","C-address"],constantSimpleDefinition:["constant"],variableSimpleDefinition:["variable"],otherSimpleDefinition:["generic","domain","C-pointer-type","table"],statement:["if","block","begin","method","case","for","select","when","unless","until","while","iterate","profiling","dynamic-bind"],separator:["finally","exception","cleanup","else","elseif","afterwards"],other:["above","below","by","from","handler","in","instance","let","local","otherwise","slot","subclass","then","to","keyed-by","virtual"],signalingCalls:["signal","error","cerror","break","check-type","abort"]};f.otherDefinition=f.unnamedDefinition.concat(f.namedDefinition).concat(f.otherParameterizedDefinition),f.definition=f.typeParameterizedDefinition.concat(f.otherDefinition),f.parameterizedDefinition=f.typeParameterizedDefinition.concat(f.otherParameterizedDefinition),f.simpleDefinition=f.constantSimpleDefinition.concat(f.variableSimpleDefinition).concat(f.otherSimpleDefinition),f.keyword=f.statement.concat(f.separator).concat(f.other);var g="[-_a-zA-Z?!*@<>$%]+",h=new RegExp("^"+g),i={symbolKeyword:g+":",symbolClass:"<"+g+">",symbolGlobal:"\\*"+g+"\\*",symbolConstant:"\\$"+g},j={symbolKeyword:"atom",symbolClass:"tag",symbolGlobal:"variable-2",symbolConstant:"variable-3"};for(var k in i)i.hasOwnProperty(k)&&(i[k]=new RegExp("^"+i[k]));i.keyword=[/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/];var l={};l.keyword="keyword",l.definition="def",l.simpleDefinition="def",l.signalingCalls="builtin";var m={},n={};return["keyword","definition","simpleDefinition","signalingCalls"].forEach(function(a){f[a].forEach(function(b){m[b]=a,n[b]=l[a]})}),{startState:function(){return{tokenize:c,currentIndent:0}},token:function(a,b){if(a.eatSpace())return null;var c=b.tokenize(a,b);return c},blockCommentStart:"/*",blockCommentEnd:"*/"}}),a.defineMIME("text/x-dylan","dylan")}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("dylan",function(a){function b(a,b,c){return b.tokenize=c,c(a,b)}function c(a,c){var f=a.peek();if("'"==f||'"'==f)return a.next(),b(a,c,e(f,"string"));if("/"==f){if(a.next(),a.eat("*"))return b(a,c,d);if(a.eat("/"))return a.skipToEnd(),"comment";a.backUp(1)}else if(/[+\-\d\.]/.test(f)){if(a.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i)||a.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i)||a.match(/^[+-]?\d+/))return"number"}else{if("#"==f)return a.next(),f=a.peek(),'"'==f?(a.next(),b(a,c,e('"',"string"))):"b"==f?(a.next(),a.eatWhile(/[01]/),"number"):"x"==f?(a.next(),a.eatWhile(/[\da-f]/i),"number"):"o"==f?(a.next(),a.eatWhile(/[0-7]/),"number"):"#"==f?(a.next(),"punctuation"):"["==f||"("==f?(a.next(),"bracket"):a.match(/f|t|all-keys|include|key|next|rest/i)?"atom":(a.eatWhile(/[-a-zA-Z]/),"error");if("~"==f)return a.next(),f=a.peek(),"="==f?(a.next(),f=a.peek(),"="==f?(a.next(),"operator"):"operator"):"operator";if(":"==f){if(a.next(),f=a.peek(),"="==f)return a.next(),"operator";if(":"==f)return a.next(),"punctuation"}else{if(-1!="[](){}".indexOf(f))return a.next(),"bracket";if(-1!=".,".indexOf(f))return a.next(),"punctuation";if(a.match("end"))return"keyword"}}for(var g in i)if(i.hasOwnProperty(g)){var k=i[g];if(k instanceof Array&&k.some(function(b){return a.match(b)})||a.match(k))return j[g]}return/[+\-*\/^=<>&|]/.test(f)?(a.next(),"operator"):a.match("define")?"def":(a.eatWhile(/[\w\-]/),m[a.current()]?n[a.current()]:a.current().match(h)?"variable":(a.next(),"variable-2"))}function d(a,b){for(var d,e=!1,f=!1,g=0;d=a.next();){if("/"==d&&e){if(!(g>0)){b.tokenize=c;break}g--}else"*"==d&&f&&g++;e="*"==d,f="/"==d}return"comment"}function e(a,b){return function(d,e){for(var f,g=!1,h=!1;null!=(f=d.next());){if(f==a&&!g){h=!0;break}g=!g&&"\\"==f}return(h||!g)&&(e.tokenize=c),b}}var f={unnamedDefinition:["interface"],namedDefinition:["module","library","macro","C-struct","C-union","C-function","C-callable-wrapper"],typeParameterizedDefinition:["class","C-subtype","C-mapped-subtype"],otherParameterizedDefinition:["method","function","C-variable","C-address"],constantSimpleDefinition:["constant"],variableSimpleDefinition:["variable"],otherSimpleDefinition:["generic","domain","C-pointer-type","table"],statement:["if","block","begin","method","case","for","select","when","unless","until","while","iterate","profiling","dynamic-bind"],separator:["finally","exception","cleanup","else","elseif","afterwards"],other:["above","below","by","from","handler","in","instance","let","local","otherwise","slot","subclass","then","to","keyed-by","virtual"],signalingCalls:["signal","error","cerror","break","check-type","abort"]};f.otherDefinition=f.unnamedDefinition.concat(f.namedDefinition).concat(f.otherParameterizedDefinition),f.definition=f.typeParameterizedDefinition.concat(f.otherDefinition),f.parameterizedDefinition=f.typeParameterizedDefinition.concat(f.otherParameterizedDefinition),f.simpleDefinition=f.constantSimpleDefinition.concat(f.variableSimpleDefinition).concat(f.otherSimpleDefinition),f.keyword=f.statement.concat(f.separator).concat(f.other);var g="[-_a-zA-Z?!*@<>$%]+",h=new RegExp("^"+g),i={symbolKeyword:g+":",symbolClass:"<"+g+">",symbolGlobal:"\\*"+g+"\\*",symbolConstant:"\\$"+g},j={symbolKeyword:"atom",symbolClass:"tag",symbolGlobal:"variable-2",symbolConstant:"variable-3"};for(var k in i)i.hasOwnProperty(k)&&(i[k]=new RegExp("^"+i[k]));i.keyword=[/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/];var l={};l.keyword="keyword",l.definition="def",l.simpleDefinition="def",l.signalingCalls="builtin";var m={},n={};return["keyword","definition","simpleDefinition","signalingCalls"].forEach(function(a){f[a].forEach(function(b){m[b]=a,n[b]=l[a]})}),{startState:function(){return{tokenize:c,currentIndent:0}},token:function(a,b){if(a.eatSpace())return null;var c=b.tokenize(a,b);return c},blockCommentStart:"/*",blockCommentEnd:"*/"}}),a.defineMIME("text/x-dylan","dylan")}); \ No newline at end of file diff --git a/media/editors/codemirror/mode/haskell-literate/haskell-literate.js b/media/editors/codemirror/mode/haskell-literate/haskell-literate.js index 9358994db915b..906415b4c1697 100644 --- a/media/editors/codemirror/mode/haskell-literate/haskell-literate.js +++ b/media/editors/codemirror/mode/haskell-literate/haskell-literate.js @@ -40,4 +40,4 @@ }, "haskell") CodeMirror.defineMIME("text/x-literate-haskell", "haskell-literate") -}) +}); diff --git a/media/editors/codemirror/mode/jsx/jsx.js b/media/editors/codemirror/mode/jsx/jsx.js index bc2ea79758c60..aff01b8d35566 100644 --- a/media/editors/codemirror/mode/jsx/jsx.js +++ b/media/editors/codemirror/mode/jsx/jsx.js @@ -25,9 +25,9 @@ context.prev && copyContext(context.prev)) } - CodeMirror.defineMode("jsx", function(config) { + CodeMirror.defineMode("jsx", function(config, modeConfig) { var xmlMode = CodeMirror.getMode(config, {name: "xml", allowMissing: true, multilineTagIndentPastTag: false}) - var jsMode = CodeMirror.getMode(config, "javascript") + var jsMode = CodeMirror.getMode(config, modeConfig && modeConfig.base || "javascript") function flatXMLIndent(state) { var tagName = state.tagName @@ -144,4 +144,4 @@ }, "xml", "javascript") CodeMirror.defineMIME("text/jsx", "jsx") -}) +}); diff --git a/media/editors/codemirror/mode/jsx/jsx.min.js b/media/editors/codemirror/mode/jsx/jsx.min.js index d5f5e8b18e26a..4e32c33f25846 100644 --- a/media/editors/codemirror/mode/jsx/jsx.min.js +++ b/media/editors/codemirror/mode/jsx/jsx.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("../xml/xml"),require("../javascript/javascript")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../javascript/javascript"],a):a(CodeMirror)}(function(a){"use strict";function b(a,b,c,d){this.state=a,this.mode=b,this.depth=c,this.prev=d}function c(d){return new b(a.copyState(d.mode,d.state),d.mode,d.depth,d.prev&&c(d.prev))}a.defineMode("jsx",function(d){function e(a){var b=a.tagName;a.tagName=null;var c=i.indent(a,"");return a.tagName=b,c}function f(a,b){return b.context.mode==i?g(a,b,b.context):h(a,b,b.context)}function g(c,g,h){if(2==h.depth)return c.match(/^.*?\*\//)?h.depth=1:c.skipToEnd(),"comment";if("{"==c.peek()){i.skipAttribute(h.state);var k=e(h.state),l=h.state.context;if(l&&c.match(/^[^>]*>\s*$/,!1)){for(;l.prev&&!l.startOfLine;)l=l.prev;l.startOfLine?k-=d.indentUnit:h.prev.state.lexical&&(k=h.prev.state.lexical.indented)}else 1==h.depth&&(k+=d.indentUnit);return g.context=new b(a.startState(j,k),j,0,g.context),null}if(1==h.depth){if("<"==c.peek())return i.skipAttribute(h.state),g.context=new b(a.startState(i,e(h.state)),i,0,g.context),null;if(c.match("//"))return c.skipToEnd(),"comment";if(c.match("/*"))return h.depth=2,f(c,g)}var m,n=i.token(c,h.state),o=c.current();return/\btag\b/.test(n)?/>$/.test(o)?h.state.context?h.depth=0:g.context=g.context.prev:/^-1&&c.backUp(o.length-m),n}function h(c,d,e){if("<"==c.peek()&&j.expressionAllowed(c,e.state))return j.skipExpression(e.state),d.context=new b(a.startState(i,j.indent(e.state,"")),i,0,d.context),null;var f=j.token(c,e.state);if(!f&&null!=e.depth){var g=c.current();"{"==g?e.depth++:"}"==g&&0==--e.depth&&(d.context=d.context.prev)}return f}var i=a.getMode(d,{name:"xml",allowMissing:!0,multilineTagIndentPastTag:!1}),j=a.getMode(d,"javascript");return{startState:function(){return{context:new b(a.startState(j),j)}},copyState:function(a){return{context:c(a.context)}},token:f,indent:function(a,b,c){return a.context.mode.indent(a.context.state,b,c)},innerMode:function(a){return a.context}}},"xml","javascript"),a.defineMIME("text/jsx","jsx")}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("../xml/xml"),require("../javascript/javascript")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../javascript/javascript"],a):a(CodeMirror)}(function(a){"use strict";function b(a,b,c,d){this.state=a,this.mode=b,this.depth=c,this.prev=d}function c(d){return new b(a.copyState(d.mode,d.state),d.mode,d.depth,d.prev&&c(d.prev))}a.defineMode("jsx",function(d,e){function f(a){var b=a.tagName;a.tagName=null;var c=j.indent(a,"");return a.tagName=b,c}function g(a,b){return b.context.mode==j?h(a,b,b.context):i(a,b,b.context)}function h(c,e,h){if(2==h.depth)return c.match(/^.*?\*\//)?h.depth=1:c.skipToEnd(),"comment";if("{"==c.peek()){j.skipAttribute(h.state);var i=f(h.state),l=h.state.context;if(l&&c.match(/^[^>]*>\s*$/,!1)){for(;l.prev&&!l.startOfLine;)l=l.prev;l.startOfLine?i-=d.indentUnit:h.prev.state.lexical&&(i=h.prev.state.lexical.indented)}else 1==h.depth&&(i+=d.indentUnit);return e.context=new b(a.startState(k,i),k,0,e.context),null}if(1==h.depth){if("<"==c.peek())return j.skipAttribute(h.state),e.context=new b(a.startState(j,f(h.state)),j,0,e.context),null;if(c.match("//"))return c.skipToEnd(),"comment";if(c.match("/*"))return h.depth=2,g(c,e)}var m,n=j.token(c,h.state),o=c.current();return/\btag\b/.test(n)?/>$/.test(o)?h.state.context?h.depth=0:e.context=e.context.prev:/^-1&&c.backUp(o.length-m),n}function i(c,d,e){if("<"==c.peek()&&k.expressionAllowed(c,e.state))return k.skipExpression(e.state),d.context=new b(a.startState(j,k.indent(e.state,"")),j,0,d.context),null;var f=k.token(c,e.state);if(!f&&null!=e.depth){var g=c.current();"{"==g?e.depth++:"}"==g&&0==--e.depth&&(d.context=d.context.prev)}return f}var j=a.getMode(d,{name:"xml",allowMissing:!0,multilineTagIndentPastTag:!1}),k=a.getMode(d,e&&e.base||"javascript");return{startState:function(){return{context:new b(a.startState(k),k)}},copyState:function(a){return{context:c(a.context)}},token:g,indent:function(a,b,c){return a.context.mode.indent(a.context.state,b,c)},innerMode:function(a){return a.context}}},"xml","javascript"),a.defineMIME("text/jsx","jsx")}); \ No newline at end of file diff --git a/media/editors/codemirror/mode/markdown/markdown.js b/media/editors/codemirror/mode/markdown/markdown.js index ed8452abe65d1..a6942b39c8a51 100644 --- a/media/editors/codemirror/mode/markdown/markdown.js +++ b/media/editors/codemirror/mode/markdown/markdown.js @@ -149,10 +149,8 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { state.list = null; } else if (state.indentation > 0) { state.list = null; - state.listDepth = Math.floor(state.indentation / 4); } else { // No longer a list state.list = false; - state.listDepth = 0; } } @@ -199,7 +197,17 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { } state.indentation = stream.column() + stream.current().length; state.list = true; - state.listDepth++; + + // While this list item's marker's indentation + // is less than the deepest list item's content's indentation, + // pop the deepest list item indentation off the stack. + while (state.listStack && stream.column() < state.listStack[state.listStack.length - 1]) { + state.listStack.pop(); + } + + // Add this list item's content's indentation to the stack + state.listStack.push(state.indentation); + if (modeCfg.taskLists && stream.match(taskListRE, false)) { state.taskList = true; } @@ -321,7 +329,7 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { } if (state.list !== false) { - var listMod = (state.listDepth - 1) % 3; + var listMod = (state.listStack.length - 1) % 3; if (!listMod) { styles.push(tokenTypes.list1); } else if (listMod === 1) { @@ -697,7 +705,7 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { hr: false, taskList: false, list: false, - listDepth: 0, + listStack: [], quote: 0, trailingSpace: 0, trailingSpaceNewLine: false, @@ -732,7 +740,7 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { hr: s.hr, taskList: s.taskList, list: s.list, - listDepth: s.listDepth, + listStack: s.listStack.slice(0), quote: s.quote, indentedCode: s.indentedCode, trailingSpace: s.trailingSpace, @@ -772,11 +780,8 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { state.f = state.block; var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g, ' ').length; - var difference = Math.floor((indentation - state.indentation) / 4) * 4; - if (difference > 4) difference = 4; - var adjustedIndentation = state.indentation + difference; - state.indentationDiff = adjustedIndentation - state.indentation; - state.indentation = adjustedIndentation; + state.indentationDiff = Math.min(indentation - state.indentation, 4); + state.indentation = state.indentation + state.indentationDiff; if (indentation > 0) return null; } return state.f(stream, state); diff --git a/media/editors/codemirror/mode/markdown/markdown.min.js b/media/editors/codemirror/mode/markdown/markdown.min.js index b2fd8f47ff3d2..9219dcc38dfd0 100644 --- a/media/editors/codemirror/mode/markdown/markdown.min.js +++ b/media/editors/codemirror/mode/markdown/markdown.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("../xml/xml"),require("../meta")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../meta"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("markdown",function(b,c){function d(c){if(a.findModeByName){var d=a.findModeByName(c);d&&(c=d.mime||d.mimes[0])}var e=a.getMode(b,c);return"null"==e.name?null:e}function e(a,b,c){return b.f=b.inline=c,c(a,b)}function f(a,b,c){return b.f=b.block=c,c(a,b)}function g(a){return!a||!/\S/.test(a.string)}function h(a){return a.linkTitle=!1,a.em=!1,a.strong=!1,a.strikethrough=!1,a.quote=0,a.indentedCode=!1,x&&a.f==j&&(a.f=o,a.block=i),a.trailingSpace=0,a.trailingSpaceNewLine=!1,a.prevLine=a.thisLine,a.thisLine=null,null}function i(a,b){var f=a.sol(),h=b.list!==!1,i=b.indentedCode;b.indentedCode=!1,h&&(b.indentationDiff>=0?(b.indentationDiff<4&&(b.indentation-=b.indentationDiff),b.list=null):b.indentation>0?(b.list=null,b.listDepth=Math.floor(b.indentation/4)):(b.list=!1,b.listDepth=0));var j=null;if(b.indentationDiff>=4)return a.skipToEnd(),i||g(b.prevLine)?(b.indentation-=4,b.indentedCode=!0,y.code):null;if(a.eatSpace())return null;if((j=a.match(E))&&j[1].length<=6)return b.header=j[1].length,c.highlightFormatting&&(b.formatting="header"),b.f=b.inline,m(b);if(!(g(b.prevLine)||b.quote||h||i)&&(j=a.match(F)))return b.header="="==j[0].charAt(0)?1:2,c.highlightFormatting&&(b.formatting="header"),b.f=b.inline,m(b);if(a.eat(">"))return b.quote=f?1:b.quote+1,c.highlightFormatting&&(b.formatting="quote"),a.eatSpace(),m(b);if("["===a.peek())return e(a,b,s);if(a.match(A,!0))return b.hr=!0,y.hr;if((g(b.prevLine)||h)&&(a.match(B,!1)||a.match(C,!1))){var l=null;return a.match(B,!0)?l="ul":(a.match(C,!0),l="ol"),b.indentation=a.column()+a.current().length,b.list=!0,b.listDepth++,c.taskLists&&a.match(D,!1)&&(b.taskList=!0),b.f=b.inline,c.highlightFormatting&&(b.formatting=["list","list-"+l]),m(b)}return c.fencedCodeBlocks&&(j=a.match(H,!0))?(b.fencedChars=j[1],b.localMode=d(j[2]),b.localMode&&(b.localState=b.localMode.startState()),b.f=b.block=k,c.highlightFormatting&&(b.formatting="code-block"),b.code=-1,m(b)):e(a,b,b.inline)}function j(b,c){var d=w.token(b,c.htmlState);if(!x){var e=a.innerMode(w,c.htmlState);("xml"==e.mode.name&&null===e.state.tagStart&&!e.state.context&&e.state.tokenize.isInText||c.md_inside&&b.current().indexOf(">")>-1)&&(c.f=o,c.block=i,c.htmlState=null)}return d}function k(a,b){return b.fencedChars&&a.match(b.fencedChars,!1)?(b.localMode=b.localState=null,b.f=b.block=l,null):b.localMode?b.localMode.token(a,b.localState):(a.skipToEnd(),y.code)}function l(a,b){a.match(b.fencedChars),b.block=i,b.f=o,b.fencedChars=null,c.highlightFormatting&&(b.formatting="code-block"),b.code=1;var d=m(b);return b.code=0,d}function m(a){var b=[];if(a.formatting){b.push(y.formatting),"string"==typeof a.formatting&&(a.formatting=[a.formatting]);for(var d=0;d=a.quote?b.push(y.formatting+"-"+a.formatting[d]+"-"+a.quote):b.push("error"))}if(a.taskOpen)return b.push("meta"),b.length?b.join(" "):null;if(a.taskClosed)return b.push("property"),b.length?b.join(" "):null;if(a.linkHref?b.push(y.linkHref,"url"):(a.strong&&b.push(y.strong),a.em&&b.push(y.em),a.strikethrough&&b.push(y.strikethrough),a.linkText&&b.push(y.linkText),a.code&&b.push(y.code)),a.header&&b.push(y.header,y.header+"-"+a.header),a.quote&&(b.push(y.quote),!c.maxBlockquoteDepth||c.maxBlockquoteDepth>=a.quote?b.push(y.quote+"-"+a.quote):b.push(y.quote+"-"+c.maxBlockquoteDepth)),a.list!==!1){var e=(a.listDepth-1)%3;e?1===e?b.push(y.list2):b.push(y.list3):b.push(y.list1)}return a.trailingSpaceNewLine?b.push("trailing-space-new-line"):a.trailingSpace&&b.push("trailing-space-"+(a.trailingSpace%2?"a":"b")),b.length?b.join(" "):null}function n(a,b){return a.match(G,!0)?m(b):void 0}function o(b,d){var e=d.text(b,d);if("undefined"!=typeof e)return e;if(d.list)return d.list=null,m(d);if(d.taskList){var g="x"!==b.match(D,!0)[1];return g?d.taskOpen=!0:d.taskClosed=!0,c.highlightFormatting&&(d.formatting="task"),d.taskList=!1,m(d)}if(d.taskOpen=!1,d.taskClosed=!1,d.header&&b.match(/^#+$/,!0))return c.highlightFormatting&&(d.formatting="header"),m(d);var h=b.sol(),i=b.next();if(d.linkTitle){d.linkTitle=!1;var k=i;"("===i&&(k=")"),k=(k+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1");var l="^\\s*(?:[^"+k+"\\\\]+|\\\\\\\\|\\\\.)"+k;if(b.match(new RegExp(l),!0))return y.linkHref}if("`"===i){var n=d.formatting;c.highlightFormatting&&(d.formatting="code"),b.eatWhile("`");var o=b.current().length;if(0==d.code)return d.code=o,m(d);if(o==d.code){var r=m(d);return d.code=0,r}return d.formatting=n,m(d)}if(d.code)return m(d);if("\\"===i&&(b.next(),c.highlightFormatting)){var s=m(d),t=y.formatting+"-escape";return s?s+" "+t:t}if("!"===i&&b.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return b.match(/\[[^\]]*\]/),d.inline=d.f=q,y.image;if("["===i&&b.match(/.*\](\(.*\)| ?\[.*\])/,!1))return d.linkText=!0,c.highlightFormatting&&(d.formatting="link"),m(d);if("]"===i&&d.linkText&&b.match(/\(.*\)| ?\[.*\]/,!1)){c.highlightFormatting&&(d.formatting="link");var s=m(d);return d.linkText=!1,d.inline=d.f=q,s}if("<"===i&&b.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){d.f=d.inline=p,c.highlightFormatting&&(d.formatting="link");var s=m(d);return s?s+=" ":s="",s+y.linkInline}if("<"===i&&b.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){d.f=d.inline=p,c.highlightFormatting&&(d.formatting="link");var s=m(d);return s?s+=" ":s="",s+y.linkEmail}if("<"===i&&b.match(/^(!--|\w)/,!1)){var u=b.string.indexOf(">",b.pos);if(-1!=u){var v=b.string.substring(b.start,u);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(v)&&(d.md_inside=!0)}return b.backUp(1),d.htmlState=a.startState(w),f(b,d,j)}if("<"===i&&b.match(/^\/\w*?>/))return d.md_inside=!1,"tag";var x=!1;if(!c.underscoresBreakWords&&"_"===i&&"_"!==b.peek()&&b.match(/(\w)/,!1)){var z=b.pos-2;if(z>=0){var A=b.string.charAt(z);"_"!==A&&A.match(/(\w)/,!1)&&(x=!0)}}if("*"===i||"_"===i&&!x)if(h&&" "===b.peek());else{if(d.strong===i&&b.eat(i)){c.highlightFormatting&&(d.formatting="strong");var r=m(d);return d.strong=!1,r}if(!d.strong&&b.eat(i))return d.strong=i,c.highlightFormatting&&(d.formatting="strong"),m(d);if(d.em===i){c.highlightFormatting&&(d.formatting="em");var r=m(d);return d.em=!1,r}if(!d.em)return d.em=i,c.highlightFormatting&&(d.formatting="em"),m(d)}else if(" "===i&&(b.eat("*")||b.eat("_"))){if(" "===b.peek())return m(d);b.backUp(1)}if(c.strikethrough)if("~"===i&&b.eatWhile(i)){if(d.strikethrough){c.highlightFormatting&&(d.formatting="strikethrough");var r=m(d);return d.strikethrough=!1,r}if(b.match(/^[^\s]/,!1))return d.strikethrough=!0,c.highlightFormatting&&(d.formatting="strikethrough"),m(d)}else if(" "===i&&b.match(/^~~/,!0)){if(" "===b.peek())return m(d);b.backUp(2)}return" "===i&&(b.match(/ +$/,!1)?d.trailingSpace++:d.trailingSpace&&(d.trailingSpaceNewLine=!0)),m(d)}function p(a,b){var d=a.next();if(">"===d){b.f=b.inline=o,c.highlightFormatting&&(b.formatting="link");var e=m(b);return e?e+=" ":e="",e+y.linkInline}return a.match(/^[^>]+/,!0),y.linkInline}function q(a,b){if(a.eatSpace())return null;var d=a.next();return"("===d||"["===d?(b.f=b.inline=r("("===d?")":"]"),c.highlightFormatting&&(b.formatting="link-string"),b.linkHref=!0,m(b)):"error"}function r(a){return function(b,d){var e=b.next();if(e===a){d.f=d.inline=o,c.highlightFormatting&&(d.formatting="link-string");var f=m(d);return d.linkHref=!1,f}return b.match(v(a),!0)&&b.backUp(1),d.linkHref=!0,m(d)}}function s(a,b){return a.match(/^([^\]\\]|\\.)*\]:/,!1)?(b.f=t,a.next(),c.highlightFormatting&&(b.formatting="link"),b.linkText=!0,m(b)):e(a,b,o)}function t(a,b){if(a.match(/^\]:/,!0)){b.f=b.inline=u,c.highlightFormatting&&(b.formatting="link");var d=m(b);return b.linkText=!1,d}return a.match(/^([^\]\\]|\\.)+/,!0),y.linkText}function u(a,b){return a.eatSpace()?null:(a.match(/^[^\s]+/,!0),void 0===a.peek()?b.linkTitle=!0:a.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),b.f=b.inline=o,y.linkHref+" url")}function v(a){return I[a]||(a=(a+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1"),I[a]=new RegExp("^(?:[^\\\\]|\\\\.)*?("+a+")")),I[a]}var w=a.getMode(b,"text/html"),x="null"==w.name;void 0===c.highlightFormatting&&(c.highlightFormatting=!1),void 0===c.maxBlockquoteDepth&&(c.maxBlockquoteDepth=0),void 0===c.underscoresBreakWords&&(c.underscoresBreakWords=!0),void 0===c.taskLists&&(c.taskLists=!1),void 0===c.strikethrough&&(c.strikethrough=!1),void 0===c.tokenTypeOverrides&&(c.tokenTypeOverrides={});var y={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"tag",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough"};for(var z in y)y.hasOwnProperty(z)&&c.tokenTypeOverrides[z]&&(y[z]=c.tokenTypeOverrides[z]);var A=/^([*\-_])(?:\s*\1){2,}\s*$/,B=/^[*\-+]\s+/,C=/^[0-9]+([.)])\s+/,D=/^\[(x| )\](?=\s)/,E=c.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,F=/^ *(?:\={1,}|-{1,})\s*$/,G=/^[^#!\[\]*_\\<>` "'(~]+/,H=new RegExp("^("+(c.fencedCodeBlocks===!0?"~~~+|```+":c.fencedCodeBlocks)+")[ \\t]*([\\w+#]*)"),I=[],J={startState:function(){return{f:i,prevLine:null,thisLine:null,block:i,htmlState:null,indentation:0,inline:o,text:n,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,hr:!1,taskList:!1,list:!1,listDepth:0,quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,fencedChars:null}},copyState:function(b){return{f:b.f,prevLine:b.prevLine,thisLine:b.thisLine,block:b.block,htmlState:b.htmlState&&a.copyState(w,b.htmlState),indentation:b.indentation,localMode:b.localMode,localState:b.localMode?a.copyState(b.localMode,b.localState):null,inline:b.inline,text:b.text,formatting:!1,linkTitle:b.linkTitle,code:b.code,em:b.em,strong:b.strong,strikethrough:b.strikethrough,header:b.header,hr:b.hr,taskList:b.taskList,list:b.list,listDepth:b.listDepth,quote:b.quote,indentedCode:b.indentedCode,trailingSpace:b.trailingSpace,trailingSpaceNewLine:b.trailingSpaceNewLine,md_inside:b.md_inside,fencedChars:b.fencedChars}},token:function(a,b){if(b.formatting=!1,a!=b.thisLine){var c=b.header||b.hr;if(b.header=0,b.hr=!1,a.match(/^\s*$/,!0)||c){if(h(b),!c)return null;b.prevLine=null}b.prevLine=b.thisLine,b.thisLine=a,b.taskList=!1,b.trailingSpace=0,b.trailingSpaceNewLine=!1,b.f=b.block;var d=a.match(/^\s*/,!0)[0].replace(/\t/g," ").length,e=4*Math.floor((d-b.indentation)/4);e>4&&(e=4);var f=b.indentation+e;if(b.indentationDiff=f-b.indentation,b.indentation=f,d>0)return null}return b.f(a,b)},innerMode:function(a){return a.block==j?{state:a.htmlState,mode:w}:a.localState?{state:a.localState,mode:a.localMode}:{state:a,mode:J}},blankLine:h,getType:m,fold:"markdown"};return J},"xml"),a.defineMIME("text/x-markdown","markdown")}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("../xml/xml"),require("../meta")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../meta"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("markdown",function(b,c){function d(c){if(a.findModeByName){var d=a.findModeByName(c);d&&(c=d.mime||d.mimes[0])}var e=a.getMode(b,c);return"null"==e.name?null:e}function e(a,b,c){return b.f=b.inline=c,c(a,b)}function f(a,b,c){return b.f=b.block=c,c(a,b)}function g(a){return!a||!/\S/.test(a.string)}function h(a){return a.linkTitle=!1,a.em=!1,a.strong=!1,a.strikethrough=!1,a.quote=0,a.indentedCode=!1,x&&a.f==j&&(a.f=o,a.block=i),a.trailingSpace=0,a.trailingSpaceNewLine=!1,a.prevLine=a.thisLine,a.thisLine=null,null}function i(a,b){var f=a.sol(),h=b.list!==!1,i=b.indentedCode;b.indentedCode=!1,h&&(b.indentationDiff>=0?(b.indentationDiff<4&&(b.indentation-=b.indentationDiff),b.list=null):b.indentation>0?b.list=null:b.list=!1);var j=null;if(b.indentationDiff>=4)return a.skipToEnd(),i||g(b.prevLine)?(b.indentation-=4,b.indentedCode=!0,y.code):null;if(a.eatSpace())return null;if((j=a.match(E))&&j[1].length<=6)return b.header=j[1].length,c.highlightFormatting&&(b.formatting="header"),b.f=b.inline,m(b);if(!(g(b.prevLine)||b.quote||h||i)&&(j=a.match(F)))return b.header="="==j[0].charAt(0)?1:2,c.highlightFormatting&&(b.formatting="header"),b.f=b.inline,m(b);if(a.eat(">"))return b.quote=f?1:b.quote+1,c.highlightFormatting&&(b.formatting="quote"),a.eatSpace(),m(b);if("["===a.peek())return e(a,b,s);if(a.match(A,!0))return b.hr=!0,y.hr;if((g(b.prevLine)||h)&&(a.match(B,!1)||a.match(C,!1))){var l=null;for(a.match(B,!0)?l="ul":(a.match(C,!0),l="ol"),b.indentation=a.column()+a.current().length,b.list=!0;b.listStack&&a.column()")>-1)&&(c.f=o,c.block=i,c.htmlState=null)}return d}function k(a,b){return b.fencedChars&&a.match(b.fencedChars,!1)?(b.localMode=b.localState=null,b.f=b.block=l,null):b.localMode?b.localMode.token(a,b.localState):(a.skipToEnd(),y.code)}function l(a,b){a.match(b.fencedChars),b.block=i,b.f=o,b.fencedChars=null,c.highlightFormatting&&(b.formatting="code-block"),b.code=1;var d=m(b);return b.code=0,d}function m(a){var b=[];if(a.formatting){b.push(y.formatting),"string"==typeof a.formatting&&(a.formatting=[a.formatting]);for(var d=0;d=a.quote?b.push(y.formatting+"-"+a.formatting[d]+"-"+a.quote):b.push("error"))}if(a.taskOpen)return b.push("meta"),b.length?b.join(" "):null;if(a.taskClosed)return b.push("property"),b.length?b.join(" "):null;if(a.linkHref?b.push(y.linkHref,"url"):(a.strong&&b.push(y.strong),a.em&&b.push(y.em),a.strikethrough&&b.push(y.strikethrough),a.linkText&&b.push(y.linkText),a.code&&b.push(y.code)),a.header&&b.push(y.header,y.header+"-"+a.header),a.quote&&(b.push(y.quote),!c.maxBlockquoteDepth||c.maxBlockquoteDepth>=a.quote?b.push(y.quote+"-"+a.quote):b.push(y.quote+"-"+c.maxBlockquoteDepth)),a.list!==!1){var e=(a.listStack.length-1)%3;e?1===e?b.push(y.list2):b.push(y.list3):b.push(y.list1)}return a.trailingSpaceNewLine?b.push("trailing-space-new-line"):a.trailingSpace&&b.push("trailing-space-"+(a.trailingSpace%2?"a":"b")),b.length?b.join(" "):null}function n(a,b){return a.match(G,!0)?m(b):void 0}function o(b,d){var e=d.text(b,d);if("undefined"!=typeof e)return e;if(d.list)return d.list=null,m(d);if(d.taskList){var g="x"!==b.match(D,!0)[1];return g?d.taskOpen=!0:d.taskClosed=!0,c.highlightFormatting&&(d.formatting="task"),d.taskList=!1,m(d)}if(d.taskOpen=!1,d.taskClosed=!1,d.header&&b.match(/^#+$/,!0))return c.highlightFormatting&&(d.formatting="header"),m(d);var h=b.sol(),i=b.next();if(d.linkTitle){d.linkTitle=!1;var k=i;"("===i&&(k=")"),k=(k+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1");var l="^\\s*(?:[^"+k+"\\\\]+|\\\\\\\\|\\\\.)"+k;if(b.match(new RegExp(l),!0))return y.linkHref}if("`"===i){var n=d.formatting;c.highlightFormatting&&(d.formatting="code"),b.eatWhile("`");var o=b.current().length;if(0==d.code)return d.code=o,m(d);if(o==d.code){var r=m(d);return d.code=0,r}return d.formatting=n,m(d)}if(d.code)return m(d);if("\\"===i&&(b.next(),c.highlightFormatting)){var s=m(d),t=y.formatting+"-escape";return s?s+" "+t:t}if("!"===i&&b.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return b.match(/\[[^\]]*\]/),d.inline=d.f=q,y.image;if("["===i&&b.match(/.*\](\(.*\)| ?\[.*\])/,!1))return d.linkText=!0,c.highlightFormatting&&(d.formatting="link"),m(d);if("]"===i&&d.linkText&&b.match(/\(.*\)| ?\[.*\]/,!1)){c.highlightFormatting&&(d.formatting="link");var s=m(d);return d.linkText=!1,d.inline=d.f=q,s}if("<"===i&&b.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){d.f=d.inline=p,c.highlightFormatting&&(d.formatting="link");var s=m(d);return s?s+=" ":s="",s+y.linkInline}if("<"===i&&b.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){d.f=d.inline=p,c.highlightFormatting&&(d.formatting="link");var s=m(d);return s?s+=" ":s="",s+y.linkEmail}if("<"===i&&b.match(/^(!--|\w)/,!1)){var u=b.string.indexOf(">",b.pos);if(-1!=u){var v=b.string.substring(b.start,u);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(v)&&(d.md_inside=!0)}return b.backUp(1),d.htmlState=a.startState(w),f(b,d,j)}if("<"===i&&b.match(/^\/\w*?>/))return d.md_inside=!1,"tag";var x=!1;if(!c.underscoresBreakWords&&"_"===i&&"_"!==b.peek()&&b.match(/(\w)/,!1)){var z=b.pos-2;if(z>=0){var A=b.string.charAt(z);"_"!==A&&A.match(/(\w)/,!1)&&(x=!0)}}if("*"===i||"_"===i&&!x)if(h&&" "===b.peek());else{if(d.strong===i&&b.eat(i)){c.highlightFormatting&&(d.formatting="strong");var r=m(d);return d.strong=!1,r}if(!d.strong&&b.eat(i))return d.strong=i,c.highlightFormatting&&(d.formatting="strong"),m(d);if(d.em===i){c.highlightFormatting&&(d.formatting="em");var r=m(d);return d.em=!1,r}if(!d.em)return d.em=i,c.highlightFormatting&&(d.formatting="em"),m(d)}else if(" "===i&&(b.eat("*")||b.eat("_"))){if(" "===b.peek())return m(d);b.backUp(1)}if(c.strikethrough)if("~"===i&&b.eatWhile(i)){if(d.strikethrough){c.highlightFormatting&&(d.formatting="strikethrough");var r=m(d);return d.strikethrough=!1,r}if(b.match(/^[^\s]/,!1))return d.strikethrough=!0,c.highlightFormatting&&(d.formatting="strikethrough"),m(d)}else if(" "===i&&b.match(/^~~/,!0)){if(" "===b.peek())return m(d);b.backUp(2)}return" "===i&&(b.match(/ +$/,!1)?d.trailingSpace++:d.trailingSpace&&(d.trailingSpaceNewLine=!0)),m(d)}function p(a,b){var d=a.next();if(">"===d){b.f=b.inline=o,c.highlightFormatting&&(b.formatting="link");var e=m(b);return e?e+=" ":e="",e+y.linkInline}return a.match(/^[^>]+/,!0),y.linkInline}function q(a,b){if(a.eatSpace())return null;var d=a.next();return"("===d||"["===d?(b.f=b.inline=r("("===d?")":"]"),c.highlightFormatting&&(b.formatting="link-string"),b.linkHref=!0,m(b)):"error"}function r(a){return function(b,d){var e=b.next();if(e===a){d.f=d.inline=o,c.highlightFormatting&&(d.formatting="link-string");var f=m(d);return d.linkHref=!1,f}return b.match(v(a),!0)&&b.backUp(1),d.linkHref=!0,m(d)}}function s(a,b){return a.match(/^([^\]\\]|\\.)*\]:/,!1)?(b.f=t,a.next(),c.highlightFormatting&&(b.formatting="link"),b.linkText=!0,m(b)):e(a,b,o)}function t(a,b){if(a.match(/^\]:/,!0)){b.f=b.inline=u,c.highlightFormatting&&(b.formatting="link");var d=m(b);return b.linkText=!1,d}return a.match(/^([^\]\\]|\\.)+/,!0),y.linkText}function u(a,b){return a.eatSpace()?null:(a.match(/^[^\s]+/,!0),void 0===a.peek()?b.linkTitle=!0:a.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),b.f=b.inline=o,y.linkHref+" url")}function v(a){return I[a]||(a=(a+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1"),I[a]=new RegExp("^(?:[^\\\\]|\\\\.)*?("+a+")")),I[a]}var w=a.getMode(b,"text/html"),x="null"==w.name;void 0===c.highlightFormatting&&(c.highlightFormatting=!1),void 0===c.maxBlockquoteDepth&&(c.maxBlockquoteDepth=0),void 0===c.underscoresBreakWords&&(c.underscoresBreakWords=!0),void 0===c.taskLists&&(c.taskLists=!1),void 0===c.strikethrough&&(c.strikethrough=!1),void 0===c.tokenTypeOverrides&&(c.tokenTypeOverrides={});var y={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"tag",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough"};for(var z in y)y.hasOwnProperty(z)&&c.tokenTypeOverrides[z]&&(y[z]=c.tokenTypeOverrides[z]);var A=/^([*\-_])(?:\s*\1){2,}\s*$/,B=/^[*\-+]\s+/,C=/^[0-9]+([.)])\s+/,D=/^\[(x| )\](?=\s)/,E=c.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,F=/^ *(?:\={1,}|-{1,})\s*$/,G=/^[^#!\[\]*_\\<>` "'(~]+/,H=new RegExp("^("+(c.fencedCodeBlocks===!0?"~~~+|```+":c.fencedCodeBlocks)+")[ \\t]*([\\w+#]*)"),I=[],J={startState:function(){return{f:i,prevLine:null,thisLine:null,block:i,htmlState:null,indentation:0,inline:o,text:n,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,fencedChars:null}},copyState:function(b){return{f:b.f,prevLine:b.prevLine,thisLine:b.thisLine,block:b.block,htmlState:b.htmlState&&a.copyState(w,b.htmlState),indentation:b.indentation,localMode:b.localMode,localState:b.localMode?a.copyState(b.localMode,b.localState):null,inline:b.inline,text:b.text,formatting:!1,linkTitle:b.linkTitle,code:b.code,em:b.em,strong:b.strong,strikethrough:b.strikethrough,header:b.header,hr:b.hr,taskList:b.taskList,list:b.list,listStack:b.listStack.slice(0),quote:b.quote,indentedCode:b.indentedCode,trailingSpace:b.trailingSpace,trailingSpaceNewLine:b.trailingSpaceNewLine,md_inside:b.md_inside,fencedChars:b.fencedChars}},token:function(a,b){if(b.formatting=!1,a!=b.thisLine){var c=b.header||b.hr;if(b.header=0,b.hr=!1,a.match(/^\s*$/,!0)||c){if(h(b),!c)return null;b.prevLine=null}b.prevLine=b.thisLine,b.thisLine=a,b.taskList=!1,b.trailingSpace=0,b.trailingSpaceNewLine=!1,b.f=b.block;var d=a.match(/^\s*/,!0)[0].replace(/\t/g," ").length;if(b.indentationDiff=Math.min(d-b.indentation,4),b.indentation=b.indentation+b.indentationDiff,d>0)return null}return b.f(a,b)},innerMode:function(a){return a.block==j?{state:a.htmlState,mode:w}:a.localState?{state:a.localState,mode:a.localMode}:{state:a,mode:J}},blankLine:h,getType:m,fold:"markdown"};return J},"xml"),a.defineMIME("text/x-markdown","markdown")}); \ No newline at end of file diff --git a/media/editors/codemirror/mode/meta.js b/media/editors/codemirror/mode/meta.js index bc34cf832020a..3cb9de21e11ed 100644 --- a/media/editors/codemirror/mode/meta.js +++ b/media/editors/codemirror/mode/meta.js @@ -21,7 +21,7 @@ {name: "C++", mime: "text/x-c++src", mode: "clike", ext: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"], alias: ["cpp"]}, {name: "Cobol", mime: "text/x-cobol", mode: "cobol", ext: ["cob", "cpy"]}, {name: "C#", mime: "text/x-csharp", mode: "clike", ext: ["cs"], alias: ["csharp"]}, - {name: "Clojure", mime: "text/x-clojure", mode: "clojure", ext: ["clj"]}, + {name: "Clojure", mime: "text/x-clojure", mode: "clojure", ext: ["clj", "cljc", "cljx"]}, {name: "ClojureScript", mime: "text/x-clojurescript", mode: "clojure", ext: ["cljs"]}, {name: "Closure Stylesheets (GSS)", mime: "text/x-gss", mode: "css", ext: ["gss"]}, {name: "CMake", mime: "text/x-cmake", mode: "cmake", ext: ["cmake", "cmake.in"], file: /^CMakeLists.txt$/}, @@ -41,6 +41,7 @@ {name: "Dylan", mime: "text/x-dylan", mode: "dylan", ext: ["dylan", "dyl", "intr"]}, {name: "EBNF", mime: "text/x-ebnf", mode: "ebnf"}, {name: "ECL", mime: "text/x-ecl", mode: "ecl", ext: ["ecl"]}, + {name: "edn", mime: "application/edn", mode: "clojure", ext: ["edn"]}, {name: "Eiffel", mime: "text/x-eiffel", mode: "eiffel", ext: ["e"]}, {name: "Elm", mime: "text/x-elm", mode: "elm", ext: ["elm"]}, {name: "Embedded Javascript", mime: "application/x-ejs", mode: "htmlembedded", ext: ["ejs"]}, @@ -84,7 +85,7 @@ {name: "MariaDB SQL", mime: "text/x-mariadb", mode: "sql"}, {name: "Mathematica", mime: "text/x-mathematica", mode: "mathematica", ext: ["m", "nb"]}, {name: "Modelica", mime: "text/x-modelica", mode: "modelica", ext: ["mo"]}, - {name: "MUMPS", mime: "text/x-mumps", mode: "mumps"}, + {name: "MUMPS", mime: "text/x-mumps", mode: "mumps", ext: ["mps"]}, {name: "MS SQL", mime: "text/x-mssql", mode: "sql"}, {name: "MySQL", mime: "text/x-mysql", mode: "sql"}, {name: "Nginx", mime: "text/x-nginx-conf", mode: "nginx", file: /nginx.*\.conf$/i}, @@ -102,6 +103,7 @@ {name: "Plain Text", mime: "text/plain", mode: "null", ext: ["txt", "text", "conf", "def", "list", "log"]}, {name: "PLSQL", mime: "text/x-plsql", mode: "sql", ext: ["pls"]}, {name: "Properties files", mime: "text/x-properties", mode: "properties", ext: ["properties", "ini", "in"], alias: ["ini", "properties"]}, + {name: "ProtoBuf", mime: "text/x-protobuf", mode: "protobuf", ext: ["proto"]}, {name: "Python", mime: "text/x-python", mode: "python", ext: ["py", "pyw"]}, {name: "Puppet", mime: "text/x-puppet", mode: "puppet", ext: ["pp"]}, {name: "Q", mime: "text/x-q", mode: "q", ext: ["q"]}, @@ -127,7 +129,6 @@ {name: "SQL", mime: "text/x-sql", mode: "sql", ext: ["sql"]}, {name: "Squirrel", mime: "text/x-squirrel", mode: "clike", ext: ["nut"]}, {name: "Swift", mime: "text/x-swift", mode: "swift", ext: ["swift"]}, - {name: "MariaDB", mime: "text/x-mariadb", mode: "sql"}, {name: "sTeX", mime: "text/x-stex", mode: "stex"}, {name: "LaTeX", mime: "text/x-latex", mode: "stex", ext: ["text", "ltx"], alias: ["tex"]}, {name: "SystemVerilog", mime: "text/x-systemverilog", mode: "verilog", ext: ["v"]}, @@ -137,7 +138,7 @@ {name: "Tiki wiki", mime: "text/tiki", mode: "tiki"}, {name: "TOML", mime: "text/x-toml", mode: "toml", ext: ["toml"]}, {name: "Tornado", mime: "text/x-tornado", mode: "tornado"}, - {name: "troff", mime: "troff", mode: "troff", ext: ["1", "2", "3", "4", "5", "6", "7", "8", "9"]}, + {name: "troff", mime: "text/troff", mode: "troff", ext: ["1", "2", "3", "4", "5", "6", "7", "8", "9"]}, {name: "TTCN", mime: "text/x-ttcn", mode: "ttcn", ext: ["ttcn", "ttcn3", "ttcnpp"]}, {name: "TTCN_CFG", mime: "text/x-ttcn-cfg", mode: "ttcn-cfg", ext: ["cfg"]}, {name: "Turtle", mime: "text/turtle", mode: "turtle", ext: ["ttl"]}, diff --git a/media/editors/codemirror/mode/meta.min.js b/media/editors/codemirror/mode/meta.min.js index 4ca80f9557cad..80d7bdcfb3cd0 100644 --- a/media/editors/codemirror/mode/meta.min.js +++ b/media/editors/codemirror/mode/meta.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../lib/codemirror")):"function"==typeof define&&define.amd?define(["../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["pgp"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure Stylesheets (GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"CoffeeScript",mime:"text/x-coffeescript",mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"]},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell (Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Jade",mime:"text/x-jade",mode:"jade",ext:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java Server Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"null",mode:"jinja2"},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps"},{name:"MS SQL",mime:"text/x-mssql",mode:"sql"},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mime:"text/n-triples",mode:"ntriples",ext:["nt"]},{name:"Objective C",mime:"text/x-objectivec",mode:"clike",ext:["m","mm"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mime:"application/x-httpd-php",mode:"php",ext:["php","php3","php4","php5","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"Properties files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["py","pyw"]},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mime:"text/x-sh",mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"MariaDB",mime:"text/x-mariadb",mode:"sql"},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki ",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"YAML",mime:"text/x-yaml",mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]}];for(var b=0;b-1&&b.substring(e+1,b.length);return f?a.findModeByExtension(f):void 0},a.findModeByName=function(b){b=b.toLowerCase();for(var c=0;c-1&&b.substring(e+1,b.length);return f?a.findModeByExtension(f):void 0},a.findModeByName=function(b){b=b.toLowerCase();for(var c=0;c=!&|~$:]/;return{startState:function(){return{tokenize:c,ctx:{type:"top",indent:-a.indentUnit,align:!1},indent:0,afterIdent:!1}},token:function(a,b){if(a.sol()&&(null==b.ctx.align&&(b.ctx.align=!1),b.indent=a.indentation()),a.eatSpace())return null;var c=b.tokenize(a,b);"comment"!=c&&null==b.ctx.align&&(b.ctx.align=!0);var d=b.ctx.type;return";"!=g&&"{"!=g&&"}"!=g||"block"!=d||f(b),"{"==g?e(b,"}",a):"("==g?(e(b,")",a),b.afterIdent&&(b.ctx.argList=!0)):"["==g?e(b,"]",a):"block"==g?e(b,"block",a):g==d&&f(b),b.afterIdent="variable"==c||"keyword"==c,c},indent:function(b,d){if(b.tokenize!=c)return 0;var e=d&&d.charAt(0),f=b.ctx,g=e==f.type;return"block"==f.type?f.indent+("{"==e?0:a.indentUnit):f.align?f.column+(g?0:1):f.indent+(g?0:a.indentUnit)},lineComment:"#"}}),a.defineMIME("text/x-rsrc","r")}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.registerHelper("wordChars","r",/[\w.]/),a.defineMode("r",function(a){function b(a){for(var b=a.split(" "),c={},d=0;d=!&|~$:]/;return{startState:function(){return{tokenize:c,ctx:{type:"top",indent:-a.indentUnit,align:!1},indent:0,afterIdent:!1}},token:function(a,b){if(a.sol()&&(null==b.ctx.align&&(b.ctx.align=!1),b.indent=a.indentation()),a.eatSpace())return null;var c=b.tokenize(a,b);"comment"!=c&&null==b.ctx.align&&(b.ctx.align=!0);var d=b.ctx.type;return";"!=g&&"{"!=g&&"}"!=g||"block"!=d||f(b),"{"==g?e(b,"}",a):"("==g?(e(b,")",a),b.afterIdent&&(b.ctx.argList=!0)):"["==g?e(b,"]",a):"block"==g?e(b,"block",a):g==d&&f(b),b.afterIdent="variable"==c||"keyword"==c,c},indent:function(b,d){if(b.tokenize!=c)return 0;var e=d&&d.charAt(0),f=b.ctx,g=e==f.type;return"block"==f.type?f.indent+("{"==e?0:a.indentUnit):f.align?f.column+(g?0:1):f.indent+(g?0:a.indentUnit)},lineComment:"#"}}),a.defineMIME("text/x-rsrc","r")}); \ No newline at end of file diff --git a/media/editors/codemirror/mode/swift/swift.js b/media/editors/codemirror/mode/swift/swift.js index 86d1c6b9b8f75..3c28ced329b18 100644 --- a/media/editors/codemirror/mode/swift/swift.js +++ b/media/editors/codemirror/mode/swift/swift.js @@ -199,4 +199,4 @@ }) CodeMirror.defineMIME("text/x-swift","swift") -}) +}); diff --git a/media/editors/codemirror/mode/tcl/tcl.js b/media/editors/codemirror/mode/tcl/tcl.js index 056accb2df3e7..8c76d52ca0873 100644 --- a/media/editors/codemirror/mode/tcl/tcl.js +++ b/media/editors/codemirror/mode/tcl/tcl.js @@ -42,42 +42,34 @@ CodeMirror.defineMode("tcl", function() { var beforeParams = state.beforeParams; state.beforeParams = false; var ch = stream.next(); - if ((ch == '"' || ch == "'") && state.inParams) + if ((ch == '"' || ch == "'") && state.inParams) { return chain(stream, state, tokenString(ch)); - else if (/[\[\]{}\(\),;\.]/.test(ch)) { + } else if (/[\[\]{}\(\),;\.]/.test(ch)) { if (ch == "(" && beforeParams) state.inParams = true; else if (ch == ")") state.inParams = false; return null; - } - else if (/\d/.test(ch)) { + } else if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; - } - else if (ch == "#" && stream.eat("*")) { - return chain(stream, state, tokenComment); - } - else if (ch == "#" && stream.match(/ *\[ *\[/)) { - return chain(stream, state, tokenUnparsed); - } - else if (ch == "#" && stream.eat("#")) { + } else if (ch == "#") { + if (stream.eat("*")) + return chain(stream, state, tokenComment); + if (ch == "#" && stream.match(/ *\[ *\[/)) + return chain(stream, state, tokenUnparsed); stream.skipToEnd(); return "comment"; - } - else if (ch == '"') { + } else if (ch == '"') { stream.skipTo(/"/); return "comment"; - } - else if (ch == "$") { + } else if (ch == "$") { stream.eatWhile(/[$_a-z0-9A-Z\.{:]/); stream.eatWhile(/}/); state.beforeParams = true; return "builtin"; - } - else if (isOperatorChar.test(ch)) { + } else if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "comment"; - } - else { + } else { stream.eatWhile(/[\w\$_{}\xa1-\uffff]/); var word = stream.current().toLowerCase(); if (keywords && keywords.propertyIsEnumerable(word)) diff --git a/media/editors/codemirror/mode/tcl/tcl.min.js b/media/editors/codemirror/mode/tcl/tcl.min.js index 49b08311483d7..61ef1721a8637 100644 --- a/media/editors/codemirror/mode/tcl/tcl.min.js +++ b/media/editors/codemirror/mode/tcl/tcl.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("tcl",function(){function a(a){for(var b={},c=a.split(" "),d=0;d!?^\/\|]/;return{startState:function(){return{tokenize:c,beforeParams:!1,inParams:!1}},token:function(a,b){return a.eatSpace()?null:b.tokenize(a,b)}}}),a.defineMIME("text/x-tcl","tcl")}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("tcl",function(){function a(a){for(var b={},c=a.split(" "),d=0;d!?^\/\|]/;return{startState:function(){return{tokenize:c,beforeParams:!1,inParams:!1}},token:function(a,b){return a.eatSpace()?null:b.tokenize(a,b)}}}),a.defineMIME("text/x-tcl","tcl")}); \ No newline at end of file diff --git a/media/editors/codemirror/mode/troff/troff.js b/media/editors/codemirror/mode/troff/troff.js index beca778eeb3d6..86154b6e14a8e 100644 --- a/media/editors/codemirror/mode/troff/troff.js +++ b/media/editors/codemirror/mode/troff/troff.js @@ -77,6 +77,8 @@ CodeMirror.defineMode('troff', function() { }; }); -CodeMirror.defineMIME('troff', 'troff'); +CodeMirror.defineMIME('text/troff', 'troff'); +CodeMirror.defineMIME('text/x-troff', 'troff'); +CodeMirror.defineMIME('application/x-troff', 'troff'); }); diff --git a/media/editors/codemirror/mode/troff/troff.min.js b/media/editors/codemirror/mode/troff/troff.min.js index 3fd43538d61b7..ca5f9bad4deb6 100644 --- a/media/editors/codemirror/mode/troff/troff.min.js +++ b/media/editors/codemirror/mode/troff/troff.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("troff",function(){function a(a){if(a.eatSpace())return null;var b=a.sol(),d=a.next();if("\\"===d)return a.match("fB")||a.match("fR")||a.match("fI")||a.match("u")||a.match("d")||a.match("%")||a.match("&")?"string":a.match("m[")?(a.skipTo("]"),a.next(),"string"):a.match("s+")||a.match("s-")?(a.eatWhile(/[\d-]/),"string"):a.match("(")||a.match("*(")?(a.eatWhile(/[\w-]/),"string"):"string";if(b&&("."===d||"'"===d)&&a.eat("\\")&&a.eat('"'))return a.skipToEnd(),"comment";if(b&&"."===d){if(a.match("B ")||a.match("I ")||a.match("R "))return"attribute";if(a.match("TH ")||a.match("SH ")||a.match("SS ")||a.match("HP "))return a.skipToEnd(),"quote";if(a.match(/[A-Z]/)&&a.match(/[A-Z]/)||a.match(/[a-z]/)&&a.match(/[a-z]/))return"attribute"}a.eatWhile(/[\w-]/);var e=a.current();return c.hasOwnProperty(e)?c[e]:null}function b(b,c){return(c.tokens[0]||a)(b,c)}var c={};return{startState:function(){return{tokens:[]}},token:function(a,c){return b(a,c)}}}),a.defineMIME("troff","troff")}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("troff",function(){function a(a){if(a.eatSpace())return null;var b=a.sol(),d=a.next();if("\\"===d)return a.match("fB")||a.match("fR")||a.match("fI")||a.match("u")||a.match("d")||a.match("%")||a.match("&")?"string":a.match("m[")?(a.skipTo("]"),a.next(),"string"):a.match("s+")||a.match("s-")?(a.eatWhile(/[\d-]/),"string"):a.match("(")||a.match("*(")?(a.eatWhile(/[\w-]/),"string"):"string";if(b&&("."===d||"'"===d)&&a.eat("\\")&&a.eat('"'))return a.skipToEnd(),"comment";if(b&&"."===d){if(a.match("B ")||a.match("I ")||a.match("R "))return"attribute";if(a.match("TH ")||a.match("SH ")||a.match("SS ")||a.match("HP "))return a.skipToEnd(),"quote";if(a.match(/[A-Z]/)&&a.match(/[A-Z]/)||a.match(/[a-z]/)&&a.match(/[a-z]/))return"attribute"}a.eatWhile(/[\w-]/);var e=a.current();return c.hasOwnProperty(e)?c[e]:null}function b(b,c){return(c.tokens[0]||a)(b,c)}var c={};return{startState:function(){return{tokens:[]}},token:function(a,c){return b(a,c)}}}),a.defineMIME("text/troff","troff"),a.defineMIME("text/x-troff","troff"),a.defineMIME("application/x-troff","troff")}); \ No newline at end of file diff --git a/media/editors/codemirror/mode/twig/twig.js b/media/editors/codemirror/mode/twig/twig.js index aa676dc480cca..1f2854bef21a2 100644 --- a/media/editors/codemirror/mode/twig/twig.js +++ b/media/editors/codemirror/mode/twig/twig.js @@ -3,15 +3,15 @@ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); + mod(require("../../lib/codemirror"), require("../../addon/mode/multiplex")); else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); + define(["../../lib/codemirror", "../../addon/mode/multiplex"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; - CodeMirror.defineMode("twig", function() { + CodeMirror.defineMode("twig:inner", function() { var keywords = ["and", "as", "autoescape", "endautoescape", "block", "do", "endblock", "else", "elseif", "extends", "for", "endfor", "embed", "endembed", "filter", "endfilter", "flush", "from", "if", "endif", "in", "is", "include", "import", "not", "or", "set", "spaceless", "endspaceless", "with", "endwith", "trans", "endtrans", "blocktrans", "endblocktrans", "macro", "endmacro", "use", "verbatim", "endverbatim"], operator = /^[+\-*&%=<>!?|~^]/, sign = /^[:\[\(\{]/, @@ -128,5 +128,14 @@ }; }); + CodeMirror.defineMode("twig", function(config, parserConfig) { + var twigInner = CodeMirror.getMode(config, "twig:inner"); + if (!parserConfig || !parserConfig.base) return twigInner; + return CodeMirror.multiplexingMode( + CodeMirror.getMode(config, parserConfig.base), { + open: /\{[{#%]/, close: /[}#%]\}/, mode: twigInner, parseDelimiters: true + } + ); + }); CodeMirror.defineMIME("text/x-twig", "twig"); }); diff --git a/media/editors/codemirror/mode/twig/twig.min.js b/media/editors/codemirror/mode/twig/twig.min.js index 480c5630a2f12..af41933f98b53 100644 --- a/media/editors/codemirror/mode/twig/twig.min.js +++ b/media/editors/codemirror/mode/twig/twig.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("twig",function(){function a(a,g){var h=a.peek();if(g.incomment)return a.skipTo("#}")?(a.eatWhile(/\#|}/),g.incomment=!1):a.skipToEnd(),"comment";if(g.intag){if(g.operator){if(g.operator=!1,a.match(e))return"atom";if(a.match(f))return"number"}if(g.sign){if(g.sign=!1,a.match(e))return"atom";if(a.match(f))return"number"}if(g.instring)return h==g.instring&&(g.instring=!1),a.next(),"string";if("'"==h||'"'==h)return g.instring=h,a.next(),"string";if(a.match(g.intag+"}")||a.eat("-")&&a.match(g.intag+"}"))return g.intag=!1,"tag";if(a.match(c))return g.operator=!0,"operator";if(a.match(d))g.sign=!0;else if(a.eat(" ")||a.sol()){if(a.match(b))return"keyword";if(a.match(e))return"atom";if(a.match(f))return"number";a.sol()&&a.next()}else a.next();return"variable"}if(a.eat("{")){if(h=a.eat("#"))return g.incomment=!0,a.skipTo("#}")?(a.eatWhile(/\#|}/),g.incomment=!1):a.skipToEnd(),"comment";if(h=a.eat(/\{|%/))return g.intag=h,"{"==h&&(g.intag="}"),a.eat("-"),"tag"}a.next()}var b=["and","as","autoescape","endautoescape","block","do","endblock","else","elseif","extends","for","endfor","embed","endembed","filter","endfilter","flush","from","if","endif","in","is","include","import","not","or","set","spaceless","endspaceless","with","endwith","trans","endtrans","blocktrans","endblocktrans","macro","endmacro","use","verbatim","endverbatim"],c=/^[+\-*&%=<>!?|~^]/,d=/^[:\[\(\{]/,e=["true","false","null","empty","defined","divisibleby","divisible by","even","odd","iterable","sameas","same as"],f=/^(\d[+\-\*\/])?\d+(\.\d+)?/;return b=new RegExp("(("+b.join(")|(")+"))\\b"),e=new RegExp("(("+e.join(")|(")+"))\\b"),{startState:function(){return{}},token:function(b,c){return a(b,c)}}}),a.defineMIME("text/x-twig","twig")}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror"),require("../../addon/mode/multiplex")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../../addon/mode/multiplex"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("twig:inner",function(){function a(a,g){var h=a.peek();if(g.incomment)return a.skipTo("#}")?(a.eatWhile(/\#|}/),g.incomment=!1):a.skipToEnd(),"comment";if(g.intag){if(g.operator){if(g.operator=!1,a.match(e))return"atom";if(a.match(f))return"number"}if(g.sign){if(g.sign=!1,a.match(e))return"atom";if(a.match(f))return"number"}if(g.instring)return h==g.instring&&(g.instring=!1),a.next(),"string";if("'"==h||'"'==h)return g.instring=h,a.next(),"string";if(a.match(g.intag+"}")||a.eat("-")&&a.match(g.intag+"}"))return g.intag=!1,"tag";if(a.match(c))return g.operator=!0,"operator";if(a.match(d))g.sign=!0;else if(a.eat(" ")||a.sol()){if(a.match(b))return"keyword";if(a.match(e))return"atom";if(a.match(f))return"number";a.sol()&&a.next()}else a.next();return"variable"}if(a.eat("{")){if(h=a.eat("#"))return g.incomment=!0,a.skipTo("#}")?(a.eatWhile(/\#|}/),g.incomment=!1):a.skipToEnd(),"comment";if(h=a.eat(/\{|%/))return g.intag=h,"{"==h&&(g.intag="}"),a.eat("-"),"tag"}a.next()}var b=["and","as","autoescape","endautoescape","block","do","endblock","else","elseif","extends","for","endfor","embed","endembed","filter","endfilter","flush","from","if","endif","in","is","include","import","not","or","set","spaceless","endspaceless","with","endwith","trans","endtrans","blocktrans","endblocktrans","macro","endmacro","use","verbatim","endverbatim"],c=/^[+\-*&%=<>!?|~^]/,d=/^[:\[\(\{]/,e=["true","false","null","empty","defined","divisibleby","divisible by","even","odd","iterable","sameas","same as"],f=/^(\d[+\-\*\/])?\d+(\.\d+)?/;return b=new RegExp("(("+b.join(")|(")+"))\\b"),e=new RegExp("(("+e.join(")|(")+"))\\b"),{startState:function(){return{}},token:function(b,c){return a(b,c)}}}),a.defineMode("twig",function(b,c){var d=a.getMode(b,"twig:inner");return c&&c.base?a.multiplexingMode(a.getMode(b,c.base),{open:/\{[{#%]/,close:/[}#%]\}/,mode:d,parseDelimiters:!0}):d}),a.defineMIME("text/x-twig","twig")}); \ No newline at end of file diff --git a/media/editors/codemirror/mode/velocity/velocity.js b/media/editors/codemirror/mode/velocity/velocity.js index 8fc4f95d05034..12ee221249c8e 100644 --- a/media/editors/codemirror/mode/velocity/velocity.js +++ b/media/editors/codemirror/mode/velocity/velocity.js @@ -34,7 +34,7 @@ CodeMirror.defineMode("velocity", function() { state.beforeParams = false; var ch = stream.next(); // start of unparsed string? - if ((ch == "'") && state.inParams) { + if ((ch == "'") && !state.inString && state.inParams) { state.lastTokenWasBuiltin = false; return chain(stream, state, tokenString(ch)); } diff --git a/media/editors/codemirror/mode/velocity/velocity.min.js b/media/editors/codemirror/mode/velocity/velocity.min.js index 08735aae6cc68..d6d7acfe92255 100644 --- a/media/editors/codemirror/mode/velocity/velocity.min.js +++ b/media/editors/codemirror/mode/velocity/velocity.min.js @@ -1 +1 @@ -!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("velocity",function(){function a(a){for(var b={},c=a.split(" "),d=0;dm.length&&"."==a.string.charAt(a.pos-m.length-1)&&c.lastTokenWasBuiltin?"builtin":(c.lastTokenWasBuiltin=!1,null)}return c.lastTokenWasBuiltin=!1,c.inString?(c.inString=!1,"string"):c.inParams?b(a,c,d(l)):void 0}function d(a){return function(b,d){for(var e,f=!1,g=!1;null!=(e=b.next());){if(e==a&&!f){g=!0;break}if('"'==a&&"$"==b.peek()&&!f){d.inString=!0,g=!0;break}f=!f&&"\\"==e}return g&&(d.tokenize=c),"string"}}function e(a,b){for(var d,e=!1;d=a.next();){if("#"==d&&e){b.tokenize=c;break}e="*"==d}return"comment"}function f(a,b){for(var d,e=0;d=a.next();){if("#"==d&&2==e){b.tokenize=c;break}"]"==d?e++:" "!=d&&(e=0)}return"meta"}var g=a("#end #else #break #stop #[[ #]] #{end} #{else} #{break} #{stop}"),h=a("#if #elseif #foreach #set #include #parse #macro #define #evaluate #{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}"),i=a("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent"),j=/[+\-*&%=<>!?:\/|]/;return{startState:function(){return{tokenize:c,beforeParams:!1,inParams:!1,inString:!1,lastTokenWasBuiltin:!1}},token:function(a,b){return a.eatSpace()?null:b.tokenize(a,b)},blockCommentStart:"#*",blockCommentEnd:"*#",lineComment:"##",fold:"velocity"}}),a.defineMIME("text/velocity","velocity")}); \ No newline at end of file +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("velocity",function(){function a(a){for(var b={},c=a.split(" "),d=0;dm.length&&"."==a.string.charAt(a.pos-m.length-1)&&c.lastTokenWasBuiltin?"builtin":(c.lastTokenWasBuiltin=!1,null)}return c.lastTokenWasBuiltin=!1,c.inString?(c.inString=!1,"string"):c.inParams?b(a,c,d(l)):void 0}function d(a){return function(b,d){for(var e,f=!1,g=!1;null!=(e=b.next());){if(e==a&&!f){g=!0;break}if('"'==a&&"$"==b.peek()&&!f){d.inString=!0,g=!0;break}f=!f&&"\\"==e}return g&&(d.tokenize=c),"string"}}function e(a,b){for(var d,e=!1;d=a.next();){if("#"==d&&e){b.tokenize=c;break}e="*"==d}return"comment"}function f(a,b){for(var d,e=0;d=a.next();){if("#"==d&&2==e){b.tokenize=c;break}"]"==d?e++:" "!=d&&(e=0)}return"meta"}var g=a("#end #else #break #stop #[[ #]] #{end} #{else} #{break} #{stop}"),h=a("#if #elseif #foreach #set #include #parse #macro #define #evaluate #{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}"),i=a("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent"),j=/[+\-*&%=<>!?:\/|]/;return{startState:function(){return{tokenize:c,beforeParams:!1,inParams:!1,inString:!1,lastTokenWasBuiltin:!1}},token:function(a,b){return a.eatSpace()?null:b.tokenize(a,b)},blockCommentStart:"#*",blockCommentEnd:"*#",lineComment:"##",fold:"velocity"}}),a.defineMIME("text/velocity","velocity")}); \ No newline at end of file diff --git a/media/editors/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js b/media/editors/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js index 9f081b009a8d7..5f49772370704 100644 --- a/media/editors/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +++ b/media/editors/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js @@ -65,4 +65,4 @@ } } }) -}) +}); diff --git a/media/editors/codemirror/theme/night.css b/media/editors/codemirror/theme/night.css index 4dbb86624a517..fd4e5619337e5 100644 --- a/media/editors/codemirror/theme/night.css +++ b/media/editors/codemirror/theme/night.css @@ -10,7 +10,7 @@ .cm-s-night .CodeMirror-linenumber { color: #f8f8f8; } .cm-s-night .CodeMirror-cursor { border-left: 1px solid white; } -.cm-s-night span.cm-comment { color: #6900a1; } +.cm-s-night span.cm-comment { color: #8900d1; } .cm-s-night span.cm-atom { color: #845dc4; } .cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; } .cm-s-night span.cm-keyword { color: #599eff; } @@ -19,7 +19,6 @@ .cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; } .cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; } .cm-s-night span.cm-bracket { color: #8da6ce; } -.cm-s-night span.cm-comment { color: #6900a1; } .cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; } .cm-s-night span.cm-link { color: #845dc4; } .cm-s-night span.cm-error { color: #9d1e15; } diff --git a/plugins/editors/codemirror/codemirror.xml b/plugins/editors/codemirror/codemirror.xml index c6593f50db0c2..95c834ac92da8 100644 --- a/plugins/editors/codemirror/codemirror.xml +++ b/plugins/editors/codemirror/codemirror.xml @@ -1,7 +1,7 @@ plg_editors_codemirror - 5.12 + 5.13 28 March 2011 Marijn Haverbeke marijnh@gmail.com From 74f75e9d6addd5d8ad9b266db9dc9116936c757d Mon Sep 17 00:00:00 2001 From: bertmert Date: Wed, 13 Apr 2016 00:08:04 +0200 Subject: [PATCH 345/352] Remove unnecessary trim (#9079) --- libraries/joomla/form/form.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/joomla/form/form.php b/libraries/joomla/form/form.php index 489190a3a4ee7..3ae055d5c64ae 100644 --- a/libraries/joomla/form/form.php +++ b/libraries/joomla/form/form.php @@ -2075,7 +2075,7 @@ public static function getInstance($name, $data = null, $options = array(), $rep $forms[$name] = new JForm($name, $options); // Load the data. - if (substr(trim($data), 0, 1) == '<') + if (substr($data, 0, 1) == '<') { if ($forms[$name]->load($data, $replace, $xpath) == false) { From 13e6523faa6ece40639f1cabb7fa74df40030ad1 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 23:14:47 +0100 Subject: [PATCH 346/352] only show enabled templates (#9723) --- administrator/components/com_templates/models/templates.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_templates/models/templates.php b/administrator/components/com_templates/models/templates.php index bf57f8f21519e..d54ea32b821d2 100644 --- a/administrator/components/com_templates/models/templates.php +++ b/administrator/components/com_templates/models/templates.php @@ -88,8 +88,8 @@ protected function getListQuery() ); $query->from($db->quoteName('#__extensions') . ' AS a'); - // Filter by extension type. - $query->where($db->quoteName('type') . ' = ' . $db->quote('template')); + // Filter by extension enabled and extension type. + $query->where('a.enabled = 1')->where('a.type = ' . $db->quote('template')); // Filter by client. $clientId = $this->getState('filter.client_id'); From 848f141e092762b39cd3d30d7c24cc49a1018756 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Tue, 12 Apr 2016 23:34:34 +0100 Subject: [PATCH 347/352] com_installer: translatable ordering in manage and updatesites views (#9139) --- .../com_installer/models/extension.php | 36 ++++++++-- .../models/forms/filter_manage.xml | 12 ++-- .../models/forms/filter_updatesites.xml | 12 ++-- .../com_installer/models/manage.php | 7 +- .../com_installer/models/updatesites.php | 72 ++----------------- .../views/manage/tmpl/default.php | 12 ++-- .../views/updatesites/tmpl/default.php | 12 ++-- 7 files changed, 67 insertions(+), 96 deletions(-) diff --git a/administrator/components/com_installer/models/extension.php b/administrator/components/com_installer/models/extension.php index e997967c4d3ba..80960e56f3505 100644 --- a/administrator/components/com_installer/models/extension.php +++ b/administrator/components/com_installer/models/extension.php @@ -63,31 +63,56 @@ protected function _getList($query, $limitstart = 0, $limit = 0) $search = str_replace('/', ' ', $search); $db = $this->getDbo(); - // Process ordering and pagination. - if (in_array($listOrder, array('name', 'client_translated', 'type_translated', 'folder_translated')) - || (!empty($search) && stripos($search, 'id:') !== 0)) + // Define which fields have to be processed in a custom way because of translation. + $customOrderFields = array('name', 'client_translated', 'type_translated', 'folder_translated'); + + // Process searching, ordering and pagination for fields that need to be translated. + if (in_array($listOrder, $customOrderFields) || (!empty($search) && stripos($search, 'id:') !== 0)) { + // Get results from database and translate them. $db->setQuery($query); $result = $db->loadObjectList(); $this->translate($result); - // Search in the name. + // Process searching. if (!empty($search)) { $escapedSearchString = $this->refineSearchStringToRegex($search, '/'); + // By default search only the extension name field. + $searchFields = array('name'); + + // If in update sites view search also in the update site name field. + if ($this instanceof InstallerModelUpdatesites) + { + $searchFields[] = 'update_site_name'; + } + foreach ($result as $i => $item) { - if (!preg_match("/$escapedSearchString/i", $item->name)) + // Check if search string exists in any of the fields to be searched. + $found = 0; + foreach ($searchFields as $key => $field) + { + if (!$found && preg_match('/' . $escapedSearchString . '/i', $item->{$field})) + { + $found = 1; + } + } + + // If search string was not found in any of the fields searched remove it from results array. + if (!$found) { unset($result[$i]); } } } + // Process ordering. // Sort array object by selected ordering and selected direction. Sort is case insensative and using locale sorting. $result = ArrayHelper::sortObjects($result, $listOrder, strtolower($listDirn) == 'desc' ? -1 : 1, false, true); + // Process pagination. $total = count($result); $this->cache[$this->getStoreId('getTotal')] = $total; @@ -100,6 +125,7 @@ protected function _getList($query, $limitstart = 0, $limit = 0) return array_slice($result, $limitstart, $limit ? $limit : null); } + // Process searching, ordering and pagination for regular database fields. $query->order($db->quoteName($listOrder) . ' ' . $db->escape($listDirn)); $result = parent::_getList($query, $limitstart, $limit); $this->translate($result); diff --git a/administrator/components/com_installer/models/forms/filter_manage.xml b/administrator/components/com_installer/models/forms/filter_manage.xml index 320ee339c4795..8d16b8ef08762 100644 --- a/administrator/components/com_installer/models/forms/filter_manage.xml +++ b/administrator/components/com_installer/models/forms/filter_manage.xml @@ -55,12 +55,12 @@ - - - - - - + + + + + +
    diff --git a/administrator/components/com_installer/models/forms/filter_updatesites.xml b/administrator/components/com_installer/models/forms/filter_updatesites.xml index c7e4b43cc2a32..60bf6fa60c683 100644 --- a/administrator/components/com_installer/models/forms/filter_updatesites.xml +++ b/administrator/components/com_installer/models/forms/filter_updatesites.xml @@ -59,12 +59,12 @@ - - - - - - + + + + + + diff --git a/administrator/components/com_installer/models/manage.php b/administrator/components/com_installer/models/manage.php index 63217b815cc85..cdd9b0486bf5f 100644 --- a/administrator/components/com_installer/models/manage.php +++ b/administrator/components/com_installer/models/manage.php @@ -34,8 +34,9 @@ public function __construct($config = array()) 'status', 'name', 'client_id', - 'type', - 'folder', + 'client', 'client_translated', + 'type', 'type_translated', + 'folder', 'folder_translated', 'extension_id', ); } @@ -333,6 +334,8 @@ protected function getListQuery() $query->where('extension_id = ' . (int) substr($search, 3)); } + // Note: The search for name, ordering and pagination are processed by the parent InstallerModel class (in extension.php). + return $query; } } diff --git a/administrator/components/com_installer/models/updatesites.php b/administrator/components/com_installer/models/updatesites.php index 3c08b2051860d..859a387692e1a 100644 --- a/administrator/components/com_installer/models/updatesites.php +++ b/administrator/components/com_installer/models/updatesites.php @@ -11,8 +11,6 @@ require_once __DIR__ . '/extension.php'; -use Joomla\Utilities\ArrayHelper; - /** * Installer Update Sites Model * @@ -38,9 +36,10 @@ public function __construct($config = array()) 'update_site_name', 'name', 'client_id', + 'client', 'client_translated', 'status', - 'type', - 'folder', + 'type', 'type_translated', + 'folder', 'folder_translated', 'update_site_id', 'enabled', ); @@ -171,12 +170,12 @@ protected function getListQuery() if ($clientId != '') { - $query->where('client_id = ' . (int) $clientId); + $query->where('e.client_id = ' . (int) $clientId); } if ($folder != '' && in_array($type, array('plugin', 'library', ''))) { - $query->where('folder = ' . $this->_db->quote($folder == '*' ? '' : $folder)); + $query->where('e.folder = ' . $this->_db->quote($folder == '*' ? '' : $folder)); } // Process search filter (update site id). @@ -187,65 +186,8 @@ protected function getListQuery() $query->where('s.update_site_id = ' . (int) substr($search, 3)); } - return $query; - } - - /** - * Returns an object list - * - * @param string $query The query - * @param int $limitstart Offset - * @param int $limit The number of records - * - * @return array - * - * @since 3.4 - */ - protected function _getList($query, $limitstart = 0, $limit = 0) - { - $ordering = $this->getState('list.ordering', 'name'); - $direction = $this->getState('list.direction', 'asc'); - $search = $this->getState('filter.search'); - - // Replace slashes so preg_match will work - $search = str_replace('/', ' ', $search); - $db = $this->getDbo(); - - if ($ordering == 'name' || (!empty($search) && stripos($search, 'id:') !== 0)) - { - $db->setQuery($query); - $result = $db->loadObjectList(); - $this->translate($result); + // Note: The search for name, ordering and pagination are processed by the parent InstallerModel class (in extension.php). - if (!empty($search) && (stripos($search, 'id:') !== 0)) - { - foreach ($result as $i => $item) - { - if (!preg_match("/$search/i", $item->name) && !preg_match("/$search/i", $item->update_site_name)) - { - unset($result[$i]); - } - } - } - - $result = ArrayHelper::sortObjects($result, $ordering, strtolower($direction) === 'desc' ? -1 : 1, true, true); - - $total = count($result); - $this->cache[$this->getStoreId('getTotal')] = $total; - - if ($total < $limitstart) - { - $limitstart = 0; - $this->setState('list.start', 0); - } - - return array_slice($result, $limitstart, $limit ? $limit : null); - } - - $query->order($db->quoteName($ordering) . ' ' . $direction); - $result = parent::_getList($query, $limitstart, $limit); - $this->translate($result); - - return $result; + return $query; } } diff --git a/administrator/components/com_installer/views/manage/tmpl/default.php b/administrator/components/com_installer/views/manage/tmpl/default.php index 5d37fea6d8392..042d9dad45de4 100644 --- a/administrator/components/com_installer/views/manage/tmpl/default.php +++ b/administrator/components/com_installer/views/manage/tmpl/default.php @@ -52,10 +52,10 @@
    + - + + - + + - + + - + +
    + pagination->getListFooter(); ?>
    + message_id); ?> @@ -107,7 +93,7 @@ user_from; ?> + date_time, JText::_('DATE_FORMAT_LC2')); ?>
    - + - + @@ -67,7 +67,7 @@ - + @@ -102,10 +102,10 @@ - client; ?> + client_translated; ?> - type); ?> + type_translated; ?> version != '' ? $item->version : ' '; ?> @@ -119,7 +119,7 @@ - folder != '' ? $item->folder : JText::_('COM_INSTALLER_TYPE_NONAPPLICABLE'); ?> + folder_translated; ?> extension_id; ?> diff --git a/administrator/components/com_installer/views/updatesites/tmpl/default.php b/administrator/components/com_installer/views/updatesites/tmpl/default.php index c50afbc1eca53..012792721aca9 100644 --- a/administrator/components/com_installer/views/updatesites/tmpl/default.php +++ b/administrator/components/com_installer/views/updatesites/tmpl/default.php @@ -49,13 +49,13 @@ - + - + - + @@ -97,13 +97,13 @@ - client; ?> + client_translated; ?> - type); ?> + type_translated; ?> - folder != '' ? $item->folder : JText::_('COM_INSTALLER_TYPE_NONAPPLICABLE'); ?> + folder_translated; ?> update_site_id; ?> From 19270afc3c7c1899fe87fa988d7ab5084ed5c028 Mon Sep 17 00:00:00 2001 From: Twincarb Date: Tue, 12 Apr 2016 23:52:08 +0100 Subject: [PATCH 348/352] Update mod_breadcrumbs.xml (#9540) --- installation/sql/mysql/joomla.sql | 2 +- installation/sql/mysql/sample_blog.sql | 2 +- installation/sql/mysql/sample_brochure.sql | 2 +- installation/sql/mysql/sample_data.sql | 2 +- installation/sql/mysql/sample_learn.sql | 4 ++-- installation/sql/mysql/sample_testing.sql | 4 ++-- installation/sql/postgresql/joomla.sql | 2 +- installation/sql/postgresql/sample_blog.sql | 2 +- installation/sql/postgresql/sample_data.sql | 2 +- installation/sql/postgresql/sample_learn.sql | 4 ++-- installation/sql/postgresql/sample_testing.sql | 4 ++-- installation/sql/sqlazure/joomla.sql | 2 +- installation/sql/sqlazure/sample_blog.sql | 2 +- installation/sql/sqlazure/sample_brochure.sql | 2 +- installation/sql/sqlazure/sample_data.sql | 4 ++-- installation/sql/sqlazure/sample_learn.sql | 4 ++-- installation/sql/sqlazure/sample_testing.sql | 4 ++-- modules/mod_breadcrumbs/mod_breadcrumbs.xml | 4 ++-- 18 files changed, 26 insertions(+), 26 deletions(-) diff --git a/installation/sql/mysql/joomla.sql b/installation/sql/mysql/joomla.sql index ddbb7907a4d85..0ce94e199bd4a 100644 --- a/installation/sql/mysql/joomla.sql +++ b/installation/sql/mysql/joomla.sql @@ -1377,7 +1377,7 @@ INSERT INTO `#__modules` (`id`, `asset_id`, `title`, `note`, `content`, `orderin (14, 48, 'User Status', '', '', 2, 'status', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_status', 3, 1, '', 1, '*'), (15, 49, 'Title', '', '', 1, 'title', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_title', 3, 1, '', 1, '*'), (16, 50, 'Login Form', '', '', 7, 'position-7', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'), -(17, 51, 'Breadcrumbs', '', '', 1, 'position-2', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), +(17, 51, 'Breadcrumbs', '', '', 1, 'position-2', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), (79, 52, 'Multilanguage status', '', '', 1, 'status', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 'mod_multilangstatus', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), (86, 53, 'Joomla Version', '', '', 1, 'footer', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_version', 3, 1, '{"format":"short","product":"1","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'); diff --git a/installation/sql/mysql/sample_blog.sql b/installation/sql/mysql/sample_blog.sql index ff582b6a163d9..e0a0b9e010d1f 100644 --- a/installation/sql/mysql/sample_blog.sql +++ b/installation/sql/mysql/sample_blog.sql @@ -126,7 +126,7 @@ INSERT IGNORE INTO `#__modules` (`id`, `title`, `note`, `content`, `ordering`, ` (14, 'User Status', '', '', 2, 'status', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_status', 3, 1, '', 1, '*'), (15, 'Title', '', '', 1, 'title', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_title', 3, 1, '', 1, '*'), (16, 'Login Form', '', '', 7, 'position-7', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'), -(17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), +(17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), (79, 'Multilanguage status', '', '', 1, 'status', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 'mod_multilangstatus', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), (80, 'Author Menu', '', '', 1, 'position-1', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_menu', 3, 0, '{"menutype":"authormenu","base":"","startLevel":"1","endLevel":"0","showAllChildren":"1","tag_id":"","class_sfx":" nav-pills","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"itemid","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'), (82, 'Syndication', '', '', 6, 'position-7', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_syndicate', 1, 0, '{"display_text":1,"text":"My Blog","format":"rss","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 0, '*'), diff --git a/installation/sql/mysql/sample_brochure.sql b/installation/sql/mysql/sample_brochure.sql index a8e33dac85502..f05723069e5a9 100644 --- a/installation/sql/mysql/sample_brochure.sql +++ b/installation/sql/mysql/sample_brochure.sql @@ -127,7 +127,7 @@ INSERT IGNORE INTO `#__modules` (`id`, `asset_id`, `title`, `note`, `content`, ` (14, 0, 'User Status', '', '', 2, 'status', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_status', 3, 1, '', 1, '*'), (15, 0, 'Title', '', '', 1, 'title', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_title', 3, 1, '', 1, '*'), (16, 0, 'Login Form', '', '', 2, 'position-7', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_login', 1, 1, '{"pretext":"","posttext":"","login":"","logout":"","greeting":"1","name":"0","usesecure":"0","layout":"_:default","moduleclass_sfx":"","cache":"0","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'), -(17, 0, 'Breadcrumbs', '', '', 1, 'position-2', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), +(17, 0, 'Breadcrumbs', '', '', 1, 'position-2', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), (79, 0, 'Multilanguage status', '', '', 1, 'status', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 'mod_multilangstatus', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), (80, 0, 'Search', '', '', -2, 'position-0', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_search', 1, 0, '{"label":"","width":"20","text":"","button":"","button_pos":"right","imagebutton":"","button_text":"","opensearch":"1","opensearch_title":"","set_itemid":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), (82, 0, 'News Flash', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_articles_news', 1, 1, '{"catid":["8"],"image":"0","item_title":"1","link_titles":"1","item_heading":"h4","showLastSeparator":"0","readmore":"0","count":"5","ordering":"a.publish_up","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"itemid","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'), diff --git a/installation/sql/mysql/sample_data.sql b/installation/sql/mysql/sample_data.sql index cd9203949aece..483ff6f036ef4 100644 --- a/installation/sql/mysql/sample_data.sql +++ b/installation/sql/mysql/sample_data.sql @@ -126,7 +126,7 @@ INSERT IGNORE INTO `#__modules` (`id`, `asset_id`, `title`, `note`, `content`, ` (14, 48, 'User Status', '', '', 2, 'status', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_status', 3, 1, '', 1, '*'), (15, 49, 'Title', '', '', 1, 'title', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_title', 3, 1, '', 1, '*'), (16, 50, 'Login Form', '', '', 7, 'position-7', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'), -(17, 51, 'Breadcrumbs', '', '', 1, 'position-2', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), +(17, 51, 'Breadcrumbs', '', '', 1, 'position-2', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), (79, 52, 'Multilanguage status', '', '', 1, 'status', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 'mod_multilangstatus', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), (86, 53, 'Joomla Version', '', '', 1, 'footer', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_version', 3, 1, '{"format":"short","product":"1","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), (87, 54, 'Popular Tags', '', '', 1, 'position-7', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_tags_popular', 1, 1, '{"maximum":"10","timeframe":"alltime","order_value":"count","order_direction":"1","display_count":0,"no_results_text":"0","minsize":1,"maxsize":2,"layout":"_:default","moduleclass_sfx":"","owncache":"1","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'), diff --git a/installation/sql/mysql/sample_learn.sql b/installation/sql/mysql/sample_learn.sql index a8b3284392b3f..699968a3c9fcb 100644 --- a/installation/sql/mysql/sample_learn.sql +++ b/installation/sql/mysql/sample_learn.sql @@ -492,7 +492,7 @@ INSERT IGNORE INTO `#__modules` (`id`, `title`, `note`, `content`, `ordering`, ` (14, 'User Status', '', '', 2, 'status', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_status', 3, 1, '', 1, '*'), (15, 'Title', '', '', 1, 'title', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_title', 3, 1, '', 1, '*'), (16, 'Login Form', '', '', 7, 'position-7', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'), -(17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), +(17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), (18, 'Book Store', '', '', 1, 'position-10', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_banners', 1, 0, '{"target":"1","count":"1","cid":"3","catid":[""],"tag_search":"0","ordering":"0","header_text":"","footer_text":"Books!","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}', 0, '*'), (19, 'User Menu', '', '', 3, 'position-7', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_menu', 2, 1, '{"menutype":"usermenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"_menu","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), (20, 'Top', '', '', 1, 'position-1', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"top","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":" nav-pills","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'), @@ -518,7 +518,7 @@ INSERT IGNORE INTO `#__modules` (`id`, `title`, `note`, `content`, `ordering`, ` (45, 'Menu Example', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"mainmenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'), (47, 'Latest Park Blogs', '', '', 6, 'position-7', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_articles_latest', 1, 1, '{"catid":["27"],"count":"5","show_featured":"","ordering":"c_dsc","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, 'en-GB'), (48, 'Custom', '', '

    This is a custom module. That means you can enter whatever content you want.

    ', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_custom', 1, 1, '{"prepare_content":"1","backgroundimage":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'), -(52, 'Breadcrumbs', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'), +(52, 'Breadcrumbs', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), (56, 'Banners', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_banners', 1, 1, '{"target":"1","count":"1","cid":"1","catid":["15"],"tag_search":"0","ordering":"random","header_text":"","footer_text":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}', 0, '*'), (57, 'Fruit Shop', '', '', 3, 'position-5', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"fruitshop","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'), (58, 'Special!', '', '

    This week we have a special, half price on delicious oranges!

    Only for our special customers!
    Use the code: Joomla! when ordering

    This module can only be seen by people in the customers group or higher.

    ', 1, 'position-12', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_custom', 4, 1, '{"prepare_content":"1","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'), diff --git a/installation/sql/mysql/sample_testing.sql b/installation/sql/mysql/sample_testing.sql index d02e79153ddee..8b2f6be264f63 100644 --- a/installation/sql/mysql/sample_testing.sql +++ b/installation/sql/mysql/sample_testing.sql @@ -510,7 +510,7 @@ INSERT IGNORE INTO `#__modules` (`id`, `title`, `note`, `content`, `ordering`, ` (14, 'User Status', '', '', 2, 'status', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_status', 3, 1, '', 1, '*'), (15, 'Title', '', '', 1, 'title', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_title', 3, 1, '', 1, '*'), (16, 'Login Form', '', '', 7, 'position-7', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'), -(17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), +(17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), (18, 'Book Store', '', '', 1, 'position-10', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_banners', 1, 0, '{"target":"1","count":"1","cid":"3","catid":[""],"tag_search":"0","ordering":"0","header_text":"","footer_text":"Books!","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}', 0, '*'), (19, 'User Menu', '', '', 3, 'position-7', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_menu', 2, 1, '{"menutype":"usermenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"_menu","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), (20, 'Top', '', '', 1, 'position-1', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"top","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":" nav-pills","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'), @@ -536,7 +536,7 @@ INSERT IGNORE INTO `#__modules` (`id`, `title`, `note`, `content`, `ordering`, ` (45, 'Menu Example', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"mainmenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'), (47, 'Latest Park Blogs', '', '', 6, 'position-7', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_articles_latest', 1, 1, '{"catid":["27"],"count":"5","ordering":"c_dsc","user_id":"0","show_front":"1","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900"}', 0, 'en-GB'), (48, 'Custom', '', '

    This is a custom module. That means you can enter whatever content you want.

    ', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_custom', 1, 1, '{"prepare_content":"1","backgroundimage":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'), -(52, 'Breadcrumbs', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'), +(52, 'Breadcrumbs', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), (56, 'Banners', '', '', 1, '', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_banners', 1, 1, '{"target":"1","count":"1","cid":"1","catid":["15"],"tag_search":"0","ordering":"random","header_text":"","footer_text":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}', 0, '*'), (57, 'Fruit Shop', '', '', 3, 'position-5', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"fruitshop","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'), (58, 'Special!', '', '

    This week we have a special, half price on delicious oranges!

    Only for our special customers!
    Use the code: Joomla! when ordering

    This module can only be seen by people in the customers group or higher.

    ', 1, 'position-12', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_custom', 4, 1, '{"prepare_content":"1","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'), diff --git a/installation/sql/postgresql/joomla.sql b/installation/sql/postgresql/joomla.sql index 3949eeb1e1c2f..d232e2732b3a6 100644 --- a/installation/sql/postgresql/joomla.sql +++ b/installation/sql/postgresql/joomla.sql @@ -1318,7 +1318,7 @@ INSERT INTO "#__modules" ("id", "asset_id", "title", "note", "content", "orderin (14, 48, 'User Status', '', '', 2, 'status', 0, '1970-01-01 00:00:00', '1970-01-01 00:00:00', '1970-01-01 00:00:00', 1, 'mod_status', 3, 1, '', 1, '*'), (15, 49, 'Title', '', '', 1, 'title', 0, '1970-01-01 00:00:00', '1970-01-01 00:00:00', '1970-01-01 00:00:00', 1, 'mod_title', 3, 1, '', 1, '*'), (16, 50, 'Login Form', '', '', 7, 'position-7', 0, '1970-01-01 00:00:00', '1970-01-01 00:00:00', '1970-01-01 00:00:00', 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'), -(17, 51, 'Breadcrumbs', '', '', 1, 'position-2', 0, '1970-01-01 00:00:00', '1970-01-01 00:00:00', '1970-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), +(17, 51, 'Breadcrumbs', '', '', 1, 'position-2', 0, '1970-01-01 00:00:00', '1970-01-01 00:00:00', '1970-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), (79, 52, 'Multilanguage status', '', '', 1, 'status', 0, '1970-01-01 00:00:00', '1970-01-01 00:00:00', '1970-01-01 00:00:00', 0, 'mod_multilangstatus', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), (86, 53, 'Joomla Version', '', '', 1, 'footer', 0, '1970-01-01 00:00:00', '1970-01-01 00:00:00', '1970-01-01 00:00:00', 1, 'mod_version', 3, 1, '{"format":"short","product":"1","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'); diff --git a/installation/sql/postgresql/sample_blog.sql b/installation/sql/postgresql/sample_blog.sql index 4affb5e9f1ca8..70bf990ca07c3 100644 --- a/installation/sql/postgresql/sample_blog.sql +++ b/installation/sql/postgresql/sample_blog.sql @@ -147,7 +147,7 @@ INSERT INTO "#__modules" VALUES (14,0,'User Status','','',2,'status',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_status',3,1,'',1,'*'), (15,0,'Title','','',1,'title',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_title',3,1,'',1,'*'), (16,0,'Login Form','','',7,'position-7',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',0,'mod_login',1,1,'{"greeting":"1","name":"0"}',0,'*'), -(17,0,'Breadcrumbs','','',1,'position-2',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_breadcrumbs',1,1,'{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}',0,'*'), +(17,0,'Breadcrumbs','','',1,'position-2',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_breadcrumbs',1,1,'{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}',0,'*'), (79,0,'Multilanguage status','','',1,'status',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',0,'mod_multilangstatus',3,1,'{"layout":"_:default","moduleclass_sfx":"","cache":"0"}',1,'*'), (80,0,'Author Menu','','',1,'position-1',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_menu',3,0,'{"menutype":"authormenu","base":"","startLevel":"1","endLevel":"0","showAllChildren":"1","tag_id":"","class_sfx":" nav-pills","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"itemid","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}',0,'*'), (82,0,'Syndication','','',6,'position-7',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_syndicate',1,0,'{"display_text":1,"text":"My Blog","format":"rss","layout":"_:default","moduleclass_sfx":"","cache":"0"}',0,'*'), diff --git a/installation/sql/postgresql/sample_data.sql b/installation/sql/postgresql/sample_data.sql index 6f9000a73fe2f..9312e316a4138 100644 --- a/installation/sql/postgresql/sample_data.sql +++ b/installation/sql/postgresql/sample_data.sql @@ -116,7 +116,7 @@ INSERT INTO "#__modules" VALUES (14,0,'User Status','','',2,'status',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_status',2,1,'',1,'*'), (15,0,'Title','','',1,'title',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_title',2,1,'',1,'*'), (16,0,'Login Form','','',7,'position-7',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_login',1,1,'{"greeting":"1","name":"0"}',0,'*'), -(17,0,'Breadcrumbs','','',1,'position-2',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_breadcrumbs',1,1,'{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}',0,'*'), +(17,0,'Breadcrumbs','','',1,'position-2',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_breadcrumbs',1,1,'{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}',0,'*'), (19,0,'User Menu','','',3,'position-7',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_menu',2,1,'{"menutype":"usermenu","active":"","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"_menu","cache":"1","cache_time":"900","cachemode":"itemid","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}',0,'*'), (27,0,'Archived Articles','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_articles_archive',1,1,'{"count":"10","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), (28,0,'Latest Articles','','',1,'position-7',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_articles_latest',1,1,'{"catid":[""],"count":"8","show_featured":"","ordering":"c_dsc","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}',0,'*'), diff --git a/installation/sql/postgresql/sample_learn.sql b/installation/sql/postgresql/sample_learn.sql index cdf25025c5965..b72970432452d 100644 --- a/installation/sql/postgresql/sample_learn.sql +++ b/installation/sql/postgresql/sample_learn.sql @@ -528,7 +528,7 @@ INSERT INTO "#__modules" VALUES (14,0,'User Status','','',2,'status',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_status',3,1,'',1,'*'), (15,0,'Title','','',1,'title',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_title',3,1,'',1,'*'), (16,0,'Login Form','','',7,'position-7',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_login',1,1,'{"greeting":"1","name":"0"}',0,'*'), -(17,0,'Breadcrumbs','','',1,'position-2',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_breadcrumbs',1,1,'{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}',0,'*'), +(17,0,'Breadcrumbs','','',1,'position-2',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_breadcrumbs',1,1,'{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}',0,'*'), (18,0,'Book Store','','',1,'position-10',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_banners',1,0,'{"target":"1","count":"1","cid":"3","catid":[""],"tag_search":"0","ordering":"0","header_text":"","footer_text":"Books!","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}',0,'*'), (19,0,'User Menu','','',3,'position-7',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_menu',2,1,'{"menutype":"usermenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"_menu","cache":"1","cache_time":"900","cachemode":"itemid"}',0,'*'), (20,0,'Top','','',1,'position-1',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_menu',1,1,'{"menutype":"top","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":" nav-pills","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}',0,'*'), @@ -554,7 +554,7 @@ INSERT INTO "#__modules" VALUES (45,0,'Menu Example','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_menu',1,1,'{"menutype":"mainmenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}',0,'*'), (47,0,'Latest Park Blogs','','',6,'position-7',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_articles_latest',1,1,'{"catid":["27"],"count":"5","show_featured":"","ordering":"c_dsc","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}',0,'en-GB'), (48,0,'Custom','','

    This is a custom module. That means you can enter whatever content you want.

    ',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_custom',1,1,'{"prepare_content":"1","backgroundimage":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), -(52,0,'Breadcrumbs','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_breadcrumbs',1,1,'{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}',0,'*'), +(52,0,'Breadcrumbs','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_breadcrumbs',1,1,'{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"0","cachemode":"itemid"}',0,'*'), (56,0,'Banners','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_banners',1,1,'{"target":"1","count":"1","cid":"1","catid":["15"],"tag_search":"0","ordering":"random","header_text":"","footer_text":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}',0,'*'), (57,0,'Fruit Shop','','',3,'position-5',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_menu',1,1,'{"menutype":"fruitshop","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}',0,'*'), (58,0,'Special!','','

    This week we have a special, half price on delicious oranges!

    Only for our special customers!
    Use the code: Joomla! when ordering

    This module can only be seen by people in the customers group or higher.

    ',1,'position-12',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_custom',4,1,'{"prepare_content":"1","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), diff --git a/installation/sql/postgresql/sample_testing.sql b/installation/sql/postgresql/sample_testing.sql index d4eb750d3a57f..64aae4d7c0f81 100644 --- a/installation/sql/postgresql/sample_testing.sql +++ b/installation/sql/postgresql/sample_testing.sql @@ -541,7 +541,7 @@ INSERT INTO "#__modules" VALUES (14,0,'User Status','','',2,'status',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_status',3,1,'',1,'*'), (15,0,'Title','','',1,'title',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_title',3,1,'',1,'*'), (16,0,'Login Form','','',7,'position-7',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_login',1,1,'{"greeting":"1","name":"0"}',0,'*'), -(17,0,'Breadcrumbs','','',1,'position-2',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_breadcrumbs',1,1,'{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}',0,'*'), +(17,0,'Breadcrumbs','','',1,'position-2',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_breadcrumbs',1,1,'{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}',0,'*'), (18,0,'Book Store','','',1,'position-10',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_banners',1,0,'{"target":"1","count":"1","cid":"3","catid":[""],"tag_search":"0","ordering":"0","header_text":"","footer_text":"Books!","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}',0,'*'), (19,0,'User Menu','','',3,'position-7',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_menu',2,1,'{"menutype":"usermenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"_menu","cache":"1","cache_time":"900","cachemode":"itemid"}',0,'*'), (20,0,'Top','','',1,'position-1',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_menu',1,1,'{"menutype":"top","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":" nav-pills","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}',0,'*'), @@ -568,7 +568,7 @@ INSERT INTO "#__modules" VALUES (47,0,'Latest Park Blogs','','',6,'position-7',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_articles_latest',1,1,'{"catid":["27"],"count":"5","ordering":"c_dsc","user_id":"0","show_front":"1","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900"}',0,'en-GB'), (48,0,'Custom','','

    This is a custom module. That means you can enter whatever content you want.

    ',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_custom',1,1,'{"prepare_content":"1","backgroundimage":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), (52,0,'Breadcrumbs','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_breadcrumbs',1,1,'{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}',0,'*'), -(56,0,'Banners','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_banners',1,1,'{"target":"1","count":"1","cid":"1","catid":["15"],"tag_search":"0","ordering":"random","header_text":"","footer_text":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}',0,'*'), +(56,0,'Banners','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_banners',1,1,'{"target":"1","count":"1","cid":"1","catid":["15"],"tag_search":"0","ordering":"random","header_text":"","footer_text":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"0"}',0,'*'), (57,0,'Fruit Shop','','',3,'position-5',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_menu',1,1,'{"menutype":"fruitshop","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}',0,'*'), (58,0,'Special!','','

    This week we have a special, half price on delicious oranges!

    Only for our special customers!
    Use the code: Joomla! when ordering

    This module can only be seen by people in the customers group or higher.

    ',1,'position-12',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_custom',4,1,'{"prepare_content":"1","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}',0,'*'), (61,0,'Articles Categories','','',1,'',0,'1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',1,'mod_articles_categories',1,1,'{"parent":"29","show_description":"0","show_children":"0","count":"0","maxlevel":"0","layout":"_:default","item_heading":"4","moduleclass_sfx":"","owncache":"1","cache_time":"900"}',0,'*'), diff --git a/installation/sql/sqlazure/joomla.sql b/installation/sql/sqlazure/joomla.sql index aa3ecd5774730..d906bb1b80b2e 100644 --- a/installation/sql/sqlazure/joomla.sql +++ b/installation/sql/sqlazure/joomla.sql @@ -2155,7 +2155,7 @@ SELECT 15, 49, 'Title', '', '', 1, 'title', 0, '1900-01-01 00:00:00', '1900-01-0 UNION ALL SELECT 16, 50, 'Login Form', '', '', 7, 'position-7', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*' UNION ALL -SELECT 17, 51, 'Breadcrumbs', '', '', 1, 'position-2', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*' +SELECT 17, 51, 'Breadcrumbs', '', '', 1, 'position-2', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*' UNION ALL SELECT 79, 52, 'Multilanguage status', '', '', 1, 'status', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 0, 'mod_multilangstatus', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*' UNION ALL diff --git a/installation/sql/sqlazure/sample_blog.sql b/installation/sql/sqlazure/sample_blog.sql index 5ccf2f026c4c0..c5e1f3e82c9fc 100644 --- a/installation/sql/sqlazure/sample_blog.sql +++ b/installation/sql/sqlazure/sample_blog.sql @@ -167,7 +167,7 @@ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (14, 'User Status', '', '', 2, 'status', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_status', 3, 1, '', 1, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (15, 'Title', '', '', 1, 'title', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_title', 3, 1, '', 1, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (16, 'Login Form', '', '', 7, 'position-7', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 0, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'); -INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'); +INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (79, 'Multilanguage status', '', '', 1, 'status', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 0, 'mod_multilangstatus', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (80, 'Author Menu', '', '', 1, 'position-1', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_menu', 3, 0, '{"menutype":"authormenu","base":"","startLevel":"1","endLevel":"0","showAllChildren":"1","tag_id":"","class_sfx":" nav-pills","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"itemid","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (82, 'Syndication', '', '', 6, 'position-7', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_syndicate', 1, 0, '{"display_text":1,"text":"My Blog","format":"rss","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 0, '*'); diff --git a/installation/sql/sqlazure/sample_brochure.sql b/installation/sql/sqlazure/sample_brochure.sql index b9683b2dd1368..b8f8934d7933a 100644 --- a/installation/sql/sqlazure/sample_brochure.sql +++ b/installation/sql/sqlazure/sample_brochure.sql @@ -139,7 +139,7 @@ INSERT INTO [#__modules] ( [id], [title], [note], [content], [ordering], [positi INSERT INTO [#__modules] ( [id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES ('14', 'User Status', '', '', '2', 'status', '0', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1', 'mod_status', '3', '1', '', '1', '*'); INSERT INTO [#__modules] ( [id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES ('15', 'Title', '', '', '1', 'title', '0', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1', 'mod_title', '3', '1', '', '1', '*'); INSERT INTO [#__modules] ( [id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES ('16', 'Login Form', '', '', '7', 'position-7', '0', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '0', 'mod_login', '1', '1', '{"greeting":"1","name":"0"}', '0', '*'); -INSERT INTO [#__modules] ( [id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES ('17', 'Breadcrumbs', '', '', '1', 'position-2', '0', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1', 'mod_breadcrumbs', '1', '1', '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', '0', '*'); +INSERT INTO [#__modules] ( [id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES ('17', 'Breadcrumbs', '', '', '1', 'position-2', '0', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1', 'mod_breadcrumbs', '1', '1', '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', '0', '*'); INSERT INTO [#__modules] ( [id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES ('79', 'Multilanguage status', '', '', '1', 'status', '0', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '0', 'mod_multilangstatus', '3', '1', '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', '1', '*'); INSERT INTO [#__modules] ( [id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES ('80', 'Search', '', '', '0', 'position-0', '0', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1', 'mod_search', '1', '0', '{"label":"","width":"20","text":"","button":"","button_pos":"right","imagebutton":"","button_text":"","opensearch":"1","opensearch_title":"","set_itemid":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"itemid"}', '0', '*'); INSERT INTO [#__modules] ( [id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES ('81', 'Header Image', '', '

    This is the Header module. You can edit in the the Module Manager in your Administrator.

    Put a large image here. if you make an image that is about 1050 px wide by 180 px high it will fit nicely. You could put text or a mix of images and text if you prefer.

    ', '1', 'position-15', '42', '2012-01-17 15:07:56', '1900-01-01T00:00:00.000', '1900-01-01T00:00:00.000', '1', 'mod_custom', '1', '1', '{"prepare_content":"1","backgroundimage":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', '0', '*'); diff --git a/installation/sql/sqlazure/sample_data.sql b/installation/sql/sqlazure/sample_data.sql index e73076f4124aa..bb6050f4bdd37 100644 --- a/installation/sql/sqlazure/sample_data.sql +++ b/installation/sql/sqlazure/sample_data.sql @@ -124,7 +124,7 @@ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (14, 'User Status', '', '', 2, 'status', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_status', 2, 1, '', 1, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (15, 'Title', '', '', 1, 'title', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_title', 2, 1, '', 1, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (16, 'Login Form', '', '', 7, 'position-7', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'); -INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'); +INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (19, 'User Menu', '', '', 3, 'position-7', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_menu', 2, 1, '{"menutype":"usermenu","active":"","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"_menu","cache":"1","cache_time":"900","cachemode":"itemid","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (27, 'Archived Articles', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_articles_archive', 1, 1, '{"count":"10","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (28, 'Latest Articles', '', '', 1, 'position-7', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_articles_latest', 1, 1, '{"catid":[""],"count":"8","show_featured":"","ordering":"c_dsc","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'); @@ -141,7 +141,7 @@ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (40, 'Wrapper', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_wrapper', 1, 1, '{"url":"https:\/\/www.youtube.com\/embed\/vb2eObvmvdI","add":"1","scrolling":"auto","width":"640","height":"390","height_auto":"1","target":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (41, 'Footer', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_footer', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (48, 'Image Module', '', '

    Blue Flower

    ', 1, 'position-3', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_custom', 1, 0, '{"prepare_content":"1","backgroundimage":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'); -INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (52, 'Breadcrumbs', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'); +INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (52, 'Breadcrumbs', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (56, 'Banners', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_banners', 1, 1, '{"target":"1","count":"1","cid":"1","catid":["15"],"tag_search":"0","ordering":"random","header_text":"","footer_text":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (61, 'Articles Categories', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_articles_categories', 1, 1, '{"parent":"29","show_description":"0","show_children":"0","count":"0","maxlevel":"0","layout":"_:default","item_heading":"4","moduleclass_sfx":"","owncache":"1","cache_time":"900"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (62, 'Language Switcher', '', '', 3, 'position-4', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 0, 'mod_languages', 1, 1, '{"header_text":"","footer_text":"","image":"1","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); diff --git a/installation/sql/sqlazure/sample_learn.sql b/installation/sql/sqlazure/sample_learn.sql index f250f177735d8..bb63ab1fd6750 100644 --- a/installation/sql/sqlazure/sample_learn.sql +++ b/installation/sql/sqlazure/sample_learn.sql @@ -780,7 +780,7 @@ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (14, 'User Status', '', '', 2, 'status', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_status', 3, 1, '', 1, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (15, 'Title', '', '', 1, 'title', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_title', 3, 1, '', 1, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (16, 'Login Form', '', '', 7, 'position-7', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'); -INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'); +INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (18, 'Book Store', '', '', 1, 'position-10', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_banners', 1, 0, '{"target":"1","count":"1","cid":"3","catid":[""],"tag_search":"0","ordering":"0","header_text":"","footer_text":"Books!","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (19, 'User Menu', '', '', 3, 'position-7', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_menu', 2, 1, '{"menutype":"usermenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"_menu","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (20, 'Top', '', '', 1, 'position-1', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"top","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":" nav-pills","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'); @@ -806,7 +806,7 @@ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (45, 'Menu Example', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"mainmenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (47, 'Latest Park Blogs', '', '', 6, 'position-7', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_articles_latest', 1, 1, '{"catid":["27"],"count":"5","show_featured":"","ordering":"c_dsc","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, 'en-GB'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (48, 'Custom', '', '

    This is a custom module. That means you can enter whatever content you want.

    ', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_custom', 1, 1, '{"prepare_content":"1","backgroundimage":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); -INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (52, 'Breadcrumbs', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'); +INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (52, 'Breadcrumbs', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (56, 'Banners', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_banners', 1, 1, '{"target":"1","count":"1","cid":"1","catid":["15"],"tag_search":"0","ordering":"random","header_text":"","footer_text":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (57, 'Fruit Shop', '', '', 3, 'position-5', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"fruitshop","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (58, 'Special!', '', '

    This week we have a special, half price on delicious oranges!

    Only for our special customers!
    Use the code: Joomla! when ordering

    This module can only be seen by people in the customers group or higher.

    ', 1, 'position-12', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_custom', 4, 1, '{"prepare_content":"1","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); diff --git a/installation/sql/sqlazure/sample_testing.sql b/installation/sql/sqlazure/sample_testing.sql index add0db562f850..3d0d464f2ad6e 100644 --- a/installation/sql/sqlazure/sample_testing.sql +++ b/installation/sql/sqlazure/sample_testing.sql @@ -858,7 +858,7 @@ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (14, 'User Status', '', '', 2, 'status', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_status', 3, 1, '', 1, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (15, 'Title', '', '', 1, 'title', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_title', 3, 1, '', 1, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (16, 'Login Form', '', '', 7, 'position-7', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'); -INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'); +INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (17, 'Breadcrumbs', '', '', 1, 'position-2', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (18, 'Book Store', '', '', 1, 'position-10', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_banners', 1, 0, '{"target":"1","count":"1","cid":"3","catid":[""],"tag_search":"0","ordering":"0","header_text":"","footer_text":"Books!","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (19, 'User Menu', '', '', 3, 'position-7', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_menu', 2, 1, '{"menutype":"usermenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"_menu","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (20, 'Top', '', '', 1, 'position-1', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"top","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":" nav-pills","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 0, '*'); @@ -884,7 +884,7 @@ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [ INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (45, 'Menu Example', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"mainmenu","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (47, 'Latest Park Blogs', '', '', 6, 'position-7', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_articles_latest', 1, 1, '{"catid":["27"],"count":"5","ordering":"c_dsc","user_id":"0","show_front":"1","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900"}', 0, 'en-GB'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (48, 'Custom', '', '

    This is a custom module. That means you can enter whatever content you want.

    ', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_custom', 1, 1, '{"prepare_content":"1","backgroundimage":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); -INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (52, 'Breadcrumbs', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'); +INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (52, 'Breadcrumbs', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_breadcrumbs', 1, 1, '{"showHere":"1","showHome":"1","homeText":"Home","showLast":"1","separator":"","layout":"_:default","moduleclass_sfx":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (56, 'Banners', '', '', 1, '', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_banners', 1, 1, '{"target":"1","count":"1","cid":"1","catid":["15"],"tag_search":"0","ordering":"random","header_text":"","footer_text":"","layout":"_:default","moduleclass_sfx":"","cache":"1","cache_time":"900"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (57, 'Fruit Shop', '', '', 3, 'position-5', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_menu', 1, 1, '{"menutype":"fruitshop","startLevel":"1","endLevel":"0","showAllChildren":"0","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"","cache":"0","cache_time":"900","cachemode":"itemid"}', 0, '*'); INSERT [#__modules] ([id], [title], [note], [content], [ordering], [position], [checked_out], [checked_out_time], [publish_up], [publish_down], [published], [module], [access], [showtitle], [params], [client_id], [language]) VALUES (58, 'Special!', '', '

    This week we have a special, half price on delicious oranges!

    Only for our special customers!
    Use the code: Joomla! when ordering

    This module can only be seen by people in the customers group or higher.

    ', 1, 'position-12', 0, '1900-01-01 00:00:00', '1900-01-01 00:00:00', '1900-01-01 00:00:00', 1, 'mod_custom', 4, 1, '{"prepare_content":"1","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"static"}', 0, '*'); diff --git a/modules/mod_breadcrumbs/mod_breadcrumbs.xml b/modules/mod_breadcrumbs/mod_breadcrumbs.xml index 18d5fb12afa6e..89b5534997b62 100644 --- a/modules/mod_breadcrumbs/mod_breadcrumbs.xml +++ b/modules/mod_breadcrumbs/mod_breadcrumbs.xml @@ -78,7 +78,7 @@