diff --git a/.travis.yml b/.travis.yml index 298c7c77e2b62..9c51d3429ea1b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,11 +16,11 @@ matrix: - php: 5.4 env: INSTALL_APC="yes" - php: 5.5 - env: INSTALL_APCU_STABLE="yes" + env: INSTALL_APCU="yes" - php: 5.6 - env: RUN_PHPCS="yes" INSTALL_APCU_STABLE="yes" + env: RUN_PHPCS="yes" INSTALL_APCU="yes" - php: 7.0 - env: INSTALL_APCU_BETA="yes" INSTALL_MEMCACHED="no" INSTALL_REDIS="no" + env: INSTALL_APCU_BC_BETA="no" INSTALL_MEMCACHED="no" INSTALL_REDIS="no" # Disabled apcu_bc install until https://github.com/travis-ci/travis-ci/issues/5207 is resolved services: - memcached @@ -39,8 +39,8 @@ before_script: # Enable additional PHP extensions - if [ "$INSTALL_MEMCACHED" == "yes" ]; then phpenv config-add build/travis/phpenv/memcached.ini; fi - if [ "$INSTALL_APC" == "yes" ]; then phpenv config-add build/travis/phpenv/apc-$TRAVIS_PHP_VERSION.ini; fi - - if [ "$INSTALL_APCU_STABLE" == "yes" ]; then printf "\n" | pecl install apcu; fi - - if [ "$INSTALL_APCU_BETA" == "yes" ]; then printf "\n" | pecl install apcu-beta; fi + - if [ "$INSTALL_APCU" == "yes" ]; then printf "\n" | pecl install apcu-4.0.10; fi + - if [ "$INSTALL_APCU_BC_BETA" == "yes" ]; then printf "\n" | pecl install apcu_bc-beta; fi - if [ "$INSTALL_REDIS" == "yes" ]; then phpenv config-add build/travis/phpenv/redis.ini; fi script: diff --git a/README.md b/README.md index e2ec940906c6b..2019f350cc7c2 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Joomla! CMSâ„¢ [![Analytics](https://ga-beacon.appspot.com/UA-544070-3/joomla-cm Build Status --------------------- -Travis-CI: [![Build Status](https://travis-ci.org/joomla/joomla-cms.png)](https://travis-ci.org/joomla/joomla-cms) +Travis-CI: [![Build Status](https://travis-ci.org/joomla/joomla-cms.svg?branch=staging)](https://travis-ci.org/joomla/joomla-cms) Jenkins: [![Build Status](http://build.joomla.org/job/cms/badge/icon)](http://build.joomla.org/job/cms/) What is this? diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 2762b5a6dbb36..abb9fb123e0c0 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -37,6 +37,10 @@ public function update($installer) $this->clearRadCache(); $this->updateAssets(); $this->clearStatsCache(); + + // VERY IMPORTANT! THIS METHOD SHOULD BE CALLED LAST, SINCE IT COULD + // LOGOUT ALL THE USERS + $this->flushSessions(); } /** @@ -1569,4 +1573,56 @@ public function updateAssets() return true; } + + /** + * If we migrated the session from the previous system, flush all the active sessions. + * Otherwise users will be logged in, but not able to do anything since they don't have + * a valid session + * + * @return boolean + */ + public function flushSessions() + { + /** + * The session may have not been started yet (e.g. CLI-based Joomla! update scripts). Let's make sure we do + * have a valid session. + */ + JFactory::getSession()->restart(); + + // If $_SESSION['__default'] is no longer set we do not have a migrated session, therefore we can quit. + if (!isset($_SESSION['__default'])) + { + return true; + } + + $db = JFactory::getDbo(); + + try + { + switch ($db->name) + { + // MySQL database, use TRUNCATE (faster, more resilient) + case 'pdomysql': + case 'mysql': + case 'mysqli': + $db->truncateTable($db->qn('#__sessions')); + break; + + // Non-MySQL databases, use a simple DELETE FROM query + default: + $query = $db->getQuery(true) + ->delete($db->qn('#__sessions')); + $db->setQuery($query)->execute(); + break; + } + } + catch (Exception $e) + { + echo JText::sprintf('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $e->getCode(), $e->getMessage()) . '
'; + + return false; + } + + return true; + } } diff --git a/administrator/components/com_admin/sql/updates/mysql/3.4.0-2014-09-16.sql b/administrator/components/com_admin/sql/updates/mysql/3.4.0-2014-09-16.sql index ae45c099bc09f..375684f9288d5 100644 --- a/administrator/components/com_admin/sql/updates/mysql/3.4.0-2014-09-16.sql +++ b/administrator/components/com_admin/sql/updates/mysql/3.4.0-2014-09-16.sql @@ -1,2 +1,2 @@ -ALTER TABLE `#__redirect_links` ADD header smallint(3) NOT NULL DEFAULT 301; -ALTER TABLE `#__redirect_links` MODIFY new_url varchar(255); +ALTER TABLE `#__redirect_links` ADD COLUMN `header` smallint(3) NOT NULL DEFAULT 301; +ALTER TABLE `#__redirect_links` MODIFY `new_url` varchar(255); diff --git a/administrator/components/com_categories/models/category.php b/administrator/components/com_categories/models/category.php index 3f14ba53f711c..b641bc7336837 100644 --- a/administrator/components/com_categories/models/category.php +++ b/administrator/components/com_categories/models/category.php @@ -574,9 +574,12 @@ public function save($data) // Adding self to the association $associations = $data['associations']; + // Unset any invalid associations + $associations = Joomla\Utilities\ArrayHelper::toInteger($associations); + foreach ($associations as $tag => $id) { - if (empty($id)) + if (!$id) { unset($associations[$tag]); } @@ -620,7 +623,7 @@ public function save($data) foreach ($associations as $id) { - $query->values($id . ',' . $db->quote($this->associationsContext) . ',' . $db->quote($key)); + $query->values(((int) $id) . ',' . $db->quote($this->associationsContext) . ',' . $db->quote($key)); } $db->setQuery($query); diff --git a/administrator/components/com_config/controller/application/refreshhelp.php b/administrator/components/com_config/controller/application/refreshhelp.php deleted file mode 100644 index 539d7ac483e5e..0000000000000 --- a/administrator/components/com_config/controller/application/refreshhelp.php +++ /dev/null @@ -1,57 +0,0 @@ -app->enqueueMessage(JText::_('COM_CONFIG_ERROR_HELPREFRESH_FETCH'), 'error'); - $this->app->redirect(JRoute::_('index.php?option=com_config', false)); - } - elseif (!JFile::write(JPATH_BASE . '/help/helpsites.xml', $data)) - { - $this->app->enqueueMessage(JText::_('COM_CONFIG_ERROR_HELPREFRESH_ERROR_STORE'), 'error'); - $this->app->redirect(JRoute::_('index.php?option=com_config', false)); - } - else - { - $this->app->enqueueMessage(JText::_('COM_CONFIG_HELPREFRESH_SUCCESS'), 'error'); - $this->app->redirect(JRoute::_('index.php?option=com_config', false)); - } - } -} diff --git a/administrator/components/com_config/controllers/application.php b/administrator/components/com_config/controllers/application.php index 450c2866924a1..39673a3c23cad 100644 --- a/administrator/components/com_config/controllers/application.php +++ b/administrator/components/com_config/controllers/application.php @@ -66,22 +66,6 @@ public function cancel() return $controller->execute(); } - /** - * Method to refresh the help display. - * - * @return void - * - * @deprecated 4.0 Use ConfigControllerApplicationRefreshhelp instead. - */ - public function refreshHelp() - { - JLog::add('ConfigControllerApplication is deprecated. Use ConfigControllerApplicationRefreshhelp instead.', JLog::WARNING, 'deprecated'); - - $controller = new ConfigControllerApplicationRefreshhelp; - - $controller->execute(); - } - /** * Method to remove the root property from the configuration. * diff --git a/administrator/components/com_config/model/form/application.xml b/administrator/components/com_config/model/form/application.xml index 2634d99ca3e8d..9ccd31971e44e 100644 --- a/administrator/components/com_config/model/form/application.xml +++ b/administrator/components/com_config/model/form/application.xml @@ -948,7 +948,9 @@ name="helpurl" type="helpsite" label="COM_CONFIG_FIELD_HELP_SERVER_LABEL" - description="COM_CONFIG_FIELD_HELP_SERVER_DESC" /> + description="COM_CONFIG_FIELD_HELP_SERVER_DESC" + showDefault="false" + />
JGLOBAL_TITLE_DESC - - - - - - + + + + + + + - ', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?> + - + - + - + - + - + - + - + - + diff --git a/administrator/components/com_finder/helpers/html/finder.php b/administrator/components/com_finder/helpers/html/finder.php index 6010102eee2c9..e702abfa3cba2 100644 --- a/administrator/components/com_finder/helpers/html/finder.php +++ b/administrator/components/com_finder/helpers/html/finder.php @@ -92,7 +92,7 @@ public static function mapslist() // Compile the options. $options = array(); - $options[] = JHtml::_('select.option', '1', JText::_('COM_FINDER_MAPS_BRANCHES')); + $options[] = JHtml::_('select.option', '1', JText::_('COM_FINDER_MAPS_SELECT_BRANCH')); foreach ($rows as $row) { diff --git a/administrator/components/com_finder/models/forms/filter_maps.xml b/administrator/components/com_finder/models/forms/filter_maps.xml index be3b238805e94..ec70c76b34417 100644 --- a/administrator/components/com_finder/models/forms/filter_maps.xml +++ b/administrator/components/com_finder/models/forms/filter_maps.xml @@ -1,44 +1,42 @@
-
+
- - - - - + + + + + - - - + - - - - + + + + diff --git a/administrator/components/com_finder/views/index/tmpl/default.php b/administrator/components/com_finder/views/index/tmpl/default.php index d9ced32826403..e4101a9f800ba 100644 --- a/administrator/components/com_finder/views/index/tmpl/default.php +++ b/administrator/components/com_finder/views/index/tmpl/default.php @@ -113,7 +113,7 @@ published, $i, 'index.', $canChange, 'cb'); ?> - +
+ - - + + + + + + +
+
+ + +
+
+ + +
+
+ + +
+
+ - - loadTemplate('description');?> - + +loadTemplate('description');?> +
+ method="post" name="adminForm" id="adminForm">
@@ -450,7 +451,7 @@ function clearCoords()
+ class="well" >
diff --git a/administrator/components/com_users/controllers/profile.json.php b/administrator/components/com_users/controllers/profile.json.php new file mode 100644 index 0000000000000..add6fdd7c9ffc --- /dev/null +++ b/administrator/components/com_users/controllers/profile.json.php @@ -0,0 +1,21 @@ + diff --git a/administrator/components/com_users/models/user.php b/administrator/components/com_users/models/user.php index 3ada3300eea20..b30326bbb26f3 100644 --- a/administrator/components/com_users/models/user.php +++ b/administrator/components/com_users/models/user.php @@ -877,9 +877,14 @@ public function getAssignedGroups($userId = null) if (empty($userId)) { - $result = array(); + $result = array(); + $form = $this->getForm(); + $groupIDs = array(); - $groupsIDs = $this->getForm()->getValue('groups'); + if ($form) + { + $groupsIDs = $form->getValue('groups'); + } if (!empty($groupsIDs)) { diff --git a/administrator/components/com_users/views/users/tmpl/modal.php b/administrator/components/com_users/views/users/tmpl/modal.php index 6fcdc93012498..24101382224f2 100644 --- a/administrator/components/com_users/views/users/tmpl/modal.php +++ b/administrator/components/com_users/views/users/tmpl/modal.php @@ -30,7 +30,7 @@
-
diff --git a/administrator/help/helpsites.xml b/administrator/help/helpsites.xml index 6c2cfceff93a3..70e6964388da0 100644 --- a/administrator/help/helpsites.xml +++ b/administrator/help/helpsites.xml @@ -1,11 +1,7 @@ - English (GB) - Joomla help wiki - Français (FR) - Aide de Joomla! + English (GB) - Joomla help wiki + Français (FR) - Aide de Joomla! diff --git a/administrator/language/en-GB/en-GB.com_finder.ini b/administrator/language/en-GB/en-GB.com_finder.ini index bb2f65a92dc58..0a90c09300eb0 100644 --- a/administrator/language/en-GB/en-GB.com_finder.ini +++ b/administrator/language/en-GB/en-GB.com_finder.ini @@ -171,7 +171,7 @@ COM_FINDER_MAPS_CONFIRM_DELETE_PROMPT="Are you sure you want to delete the selec COM_FINDER_MAPS_MULTILANG="Note: Language filter system plugin has been enabled, so this branch will not be used." COM_FINDER_MAPS_NO_CONTENT="No results to display. Either no content has been indexed or no content meets your filter criteria." COM_FINDER_MAPS_RETURN_TO_BRANCHES="Return to Branches" -COM_FINDER_MAPS_SELECT_BRANCHE="- Select Branch -" +COM_FINDER_MAPS_SELECT_BRANCH="- Select Branch -" COM_FINDER_MAPS_SELECT_TYPE="- Select Type of Content -" COM_FINDER_MAPS_TOOLBAR_TITLE="Smart Search: Content Maps" COM_FINDER_MESSAGE_RETURNED="The following message was returned by the server:" diff --git a/administrator/language/en-GB/en-GB.com_menus.ini b/administrator/language/en-GB/en-GB.com_menus.ini index 99e63b6aee29e..4db646b0a30ac 100644 --- a/administrator/language/en-GB/en-GB.com_menus.ini +++ b/administrator/language/en-GB/en-GB.com_menus.ini @@ -4,7 +4,7 @@ ; Note : All ini files need to be saved as UTF-8 COM_MENUS="Menus" -COM_MENUS_ADD_MENU_MODULE="Add a module for this menu type." +COM_MENUS_ADD_MENU_MODULE="Add a module for this menu." COM_MENUS_ADVANCED_FIELDSET_LABEL="Advanced" COM_MENUS_BASIC_FIELDSET_LABEL="Options" COM_MENUS_BATCH_MENU_ITEM_CANNOT_CREATE="You are not allowed to create new menu items." @@ -67,7 +67,7 @@ COM_MENUS_ITEM_FIELD_ANCHOR_CSS_LABEL="Link CSS Style" COM_MENUS_ITEM_FIELD_ANCHOR_TITLE_DESC="An optional, custom description for the title attribute of the menu hyperlink." COM_MENUS_ITEM_FIELD_ANCHOR_TITLE_LABEL="Link Title Attribute" COM_MENUS_ITEM_FIELD_ASSIGNED_DESC="Shows which menu the link will appear in." -COM_MENUS_ITEM_FIELD_ASSIGNED_LABEL=" Menu Location" +COM_MENUS_ITEM_FIELD_ASSIGNED_LABEL=" Menu" COM_MENUS_ITEM_FIELD_ASSOCIATION_NO_VALUE="- No association -" COM_MENUS_ITEM_FIELD_BROWSERNAV_DESC="Target browser window when the menu item is selected." COM_MENUS_ITEM_FIELD_BROWSERNAV_LABEL="Target Window" diff --git a/administrator/language/en-GB/en-GB.ini b/administrator/language/en-GB/en-GB.ini index 49c527a4c3005..afaac13b93288 100644 --- a/administrator/language/en-GB/en-GB.ini +++ b/administrator/language/en-GB/en-GB.ini @@ -111,7 +111,7 @@ JSHOW="Show" JSITE="Site" JSUBMIT="Submit" JTAG="Tags" -JTAG_DESC="Assign tags to content items. You may select a tag from the pre-defined list or enter your own by typing the name in the field and pressing enter." +JTAG_DESC="Assign tags to content items. You may select a tag from the pre-defined list or enter a new tag by typing the name in the field and pressing enter." JTRASH="Trash" JTRASHED="Trashed" JTRUE="True" diff --git a/administrator/language/en-GB/en-GB.lib_joomla.ini b/administrator/language/en-GB/en-GB.lib_joomla.ini index 3fa7ce40818e0..15edc4195cd62 100644 --- a/administrator/language/en-GB/en-GB.lib_joomla.ini +++ b/administrator/language/en-GB/en-GB.lib_joomla.ini @@ -625,7 +625,7 @@ JLIB_MEDIA_ERROR_WARNINVALID_IMG="Not a valid image." JLIB_MEDIA_ERROR_WARNINVALID_MIME="Illegal or invalid mime type detected." JLIB_MEDIA_ERROR_WARNNOTADMIN="Uploaded file is not an image file and you do not have permission." -JLIB_NO_EDITOR_PLUGIN_PUBLISHED="We can't show an editor because no editor plugin is published." +JLIB_NO_EDITOR_PLUGIN_PUBLISHED="Unable to display an editor because no editor plugin is published." JLIB_PLUGIN_ERROR_LOADING_PLUGINS="Error loading Plugins: %s" JLIB_REGISTRY_EXCEPTION_LOAD_FORMAT_CLASS="Unable to load format class." @@ -635,7 +635,7 @@ JLIB_RULES_ALLOWED="Allowed" JLIB_RULES_ALLOWED_ADMIN="Allowed (Super User)" JLIB_RULES_CALCULATED_SETTING="Calculated Setting 2" JLIB_RULES_CONFLICT="Conflict" -JLIB_RULES_DATABASE_FAILURE="Failure by storing the data to the database." +JLIB_RULES_DATABASE_FAILURE="Failed storing the data to the database." JLIB_RULES_DENIED="Denied" JLIB_RULES_GROUP="%s" JLIB_RULES_GROUPS="Groups" @@ -645,8 +645,8 @@ JLIB_RULES_NOT_ALLOWED="Not Allowed." JLIB_RULES_NOT_ALLOWED_ADMIN_CONFLICT="Conflict" JLIB_RULES_NOT_ALLOWED_LOCKED="Not Allowed (Locked)" JLIB_RULES_NOT_SET="Not Set" -JLIB_RULES_REQUEST_FAILURE="Failure by sending the data to server." -JLIB_RULES_SAVE_BEFORE_CHANGE_PERMISSIONS="Please save before change permissions." +JLIB_RULES_REQUEST_FAILURE="Failed sending the data to server." +JLIB_RULES_SAVE_BEFORE_CHANGE_PERMISSIONS="Please save before changing permissions." JLIB_RULES_SELECT_ALLOW_DENY_GROUP="Allow or deny %s for users in the %s group." JLIB_RULES_SELECT_SETTING="Select New Setting 1" JLIB_RULES_SETTING_NOTES="1. If you change the setting, it will apply to this and all child groups, components and content. Note that Denied will overrule any inherited setting and also the setting in any child group, component or content. In the case of a setting conflict, Deny will take precedence. Not Set is equivalent to Denied but can be changed in child groups, components and content.
2. If you select a new setting, select Save to refresh the calculated settings." diff --git a/administrator/language/en-GB/en-GB.plg_quickicon_extensionupdate.ini b/administrator/language/en-GB/en-GB.plg_quickicon_extensionupdate.ini index 1c342a792b8f2..eab09a1583763 100644 --- a/administrator/language/en-GB/en-GB.plg_quickicon_extensionupdate.ini +++ b/administrator/language/en-GB/en-GB.plg_quickicon_extensionupdate.ini @@ -11,5 +11,5 @@ PLG_QUICKICON_EXTENSIONUPDATE_GROUP_LABEL="Group" PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND="Updates are available! %s" PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND_BUTTON="View Updates" PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND_MESSAGE="%s Extension Update(s) are available:" -PLG_QUICKICON_EXTENSIONUPDATE_UPTODATE="All extensions are up-to-date." +PLG_QUICKICON_EXTENSIONUPDATE_UPTODATE="All extensions are up to date." PLG_QUICKICON_EXTENSIONUPDATE_XML_DESCRIPTION="Checks for updates of your installed third-party extensions and notifies you when you visit the Control Panel page." diff --git a/administrator/language/en-GB/en-GB.plg_quickicon_joomlaupdate.ini b/administrator/language/en-GB/en-GB.plg_quickicon_joomlaupdate.ini index d78aac6d5e2ba..6e64c85d8614d 100644 --- a/administrator/language/en-GB/en-GB.plg_quickicon_joomlaupdate.ini +++ b/administrator/language/en-GB/en-GB.plg_quickicon_joomlaupdate.ini @@ -11,5 +11,5 @@ PLG_QUICKICON_JOOMLAUPDATE_GROUP_LABEL="Group" PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND="Joomla! %s, Update now!" PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND_BUTTON="Update Now" PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND_MESSAGE="Joomla! %s is available:" -PLG_QUICKICON_JOOMLAUPDATE_UPTODATE="Joomla! is up-to-date." +PLG_QUICKICON_JOOMLAUPDATE_UPTODATE="Joomla is up to date." PLG_QUICKICON_JOOMLAUPDATE_XML_DESCRIPTION="Checks for Joomla! updates and notifies you when you visit the Control Panel page." diff --git a/administrator/language/en-GB/en-GB.tpl_isis.ini b/administrator/language/en-GB/en-GB.tpl_isis.ini index df123e1784b2c..241ec1aa6c480 100644 --- a/administrator/language/en-GB/en-GB.tpl_isis.ini +++ b/administrator/language/en-GB/en-GB.tpl_isis.ini @@ -35,4 +35,4 @@ TPL_ISIS_STATUS_TOP="Top" TPL_ISIS_STICKY_DESC="Optionally set the toolbar to a fixed (pinned) location." TPL_ISIS_STICKY_LABEL="Pinned Toolbar" TPL_ISIS_TOOLBAR="Toolbar" -TPL_ISIS_XML_DESCRIPTION="Continuing the Egyptian god/goddess theme (Khepri from 1.5 and Hathor from 1.6), Isis is the Joomla 3 administrator template based on Bootstrap from Twitter and the launch of the Joomla User Interface library (JUI)." +TPL_ISIS_XML_DESCRIPTION="Continuing the Egyptian god/goddess theme (Khepri from 1.5 and Hathor from 1.6), Isis is the Joomla 3 administrator template based on Bootstrap and the launch of the Joomla User Interface library (JUI)." diff --git a/administrator/language/en-GB/en-GB.tpl_isis.sys.ini b/administrator/language/en-GB/en-GB.tpl_isis.sys.ini index 024b811c3bd42..0905379e468d1 100644 --- a/administrator/language/en-GB/en-GB.tpl_isis.sys.ini +++ b/administrator/language/en-GB/en-GB.tpl_isis.sys.ini @@ -17,4 +17,4 @@ TPL_ISIS_POSITION_STATUS="Status" TPL_ISIS_POSITION_SUBMENU="Submenu" TPL_ISIS_POSITION_TITLE="Title" TPL_ISIS_POSITION_TOOLBAR="Toolbar" -TPL_ISIS_XML_DESCRIPTION="Continuing the Egyptian god/goddess theme (Khepri from 1.5 and Hathor from 1.6), Isis is the Joomla 3 administrator template based on Bootstrap from Twitter and the launch of the Joomla User Interface library (JUI)." +TPL_ISIS_XML_DESCRIPTION="Continuing the Egyptian god/goddess theme (Khepri from 1.5 and Hathor from 1.6), Isis is the Joomla 3 administrator template based on Bootstrap and the launch of the Joomla User Interface library (JUI)." diff --git a/administrator/manifests/files/joomla.xml b/administrator/manifests/files/joomla.xml index 5cec8646e29b7..1d1d0ff6eeb88 100644 --- a/administrator/manifests/files/joomla.xml +++ b/administrator/manifests/files/joomla.xml @@ -7,7 +7,7 @@ (C) 2005 - 2015 Open Source Matters. All rights reserved GNU General Public License version 2 or later; see LICENSE.txt 3.5.0-beta - November 2015 + December 2015 FILES_JOOMLA_XML_DESCRIPTION administrator/components/com_admin/script.php diff --git a/administrator/modules/mod_menu/tmpl/default_enabled.php b/administrator/modules/mod_menu/tmpl/default_enabled.php index e7267c19a16b6..424f0f8abed6a 100644 --- a/administrator/modules/mod_menu/tmpl/default_enabled.php +++ b/administrator/modules/mod_menu/tmpl/default_enabled.php @@ -368,7 +368,7 @@ new JMenuNode(JText::_('MOD_MENU_HELP_SECURITY'), 'https://developer.joomla.org/security-centre.html', 'class:help-security', false, '_blank') ); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_DEVELOPER'), 'https://developer.joomla.org', 'class:help-dev', false, '_blank')); - $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_XCHANGE'), 'http://joomla.stackexchange.com', 'class:help-dev', false, '_blank')); + $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_XCHANGE'), 'https://joomla.stackexchange.com', 'class:help-dev', false, '_blank')); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_SHOP'), 'http://shop.joomla.org', 'class:help-shop', false, '_blank')); $menu->getParent(); } diff --git a/administrator/templates/hathor/html/com_templates/template/default.php b/administrator/templates/hathor/html/com_templates/template/default.php index de74cd0231ce4..2b21c42368585 100644 --- a/administrator/templates/hathor/html/com_templates/template/default.php +++ b/administrator/templates/hathor/html/com_templates/template/default.php @@ -116,7 +116,7 @@ function clearCoords() if($this->type == 'font') { JFactory::getDocument()->addStyleDeclaration( - "/* Styles for font preview */ + "/* Styles for font preview */ @font-face { font-family: previewFont; @@ -141,8 +141,15 @@ function clearCoords()

fileName); ?>

@@ -427,72 +434,72 @@ function clearCoords()
1)); ?> - -
-
- - - -
- -
- type != 'home'): ?> - -
-
- - - -
- -
- - + +
- + + +
+ +
+ type != 'home'): ?> + +
+
+ + + +
+ +
+ + +
+ +
-
- -
+
+ +
-
- -
+
+ +
diff --git a/administrator/templates/hathor/html/mod_menu/default_enabled.php b/administrator/templates/hathor/html/mod_menu/default_enabled.php index f893753821707..047f17dacc259 100644 --- a/administrator/templates/hathor/html/mod_menu/default_enabled.php +++ b/administrator/templates/hathor/html/mod_menu/default_enabled.php @@ -343,7 +343,7 @@ new JMenuNode(JText::_('MOD_MENU_HELP_DEVELOPER'), 'https://developer.joomla.org', 'class:help-dev', false, '_blank') ); $menu->addChild( - new JMenuNode(JText::_('MOD_MENU_HELP_XCHANGE'), 'http://joomla.stackexchange.com', 'class:help-dev', false, '_blank') + new JMenuNode(JText::_('MOD_MENU_HELP_XCHANGE'), 'https://joomla.stackexchange.com', 'class:help-dev', false, '_blank') ); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_SHOP'), 'http://shop.joomla.org', 'class:help-shop', false, '_blank') diff --git a/administrator/templates/isis/css/template-rtl.css b/administrator/templates/isis/css/template-rtl.css index e0eab3600334b..a50d5fa4ca508 100644 --- a/administrator/templates/isis/css/template-rtl.css +++ b/administrator/templates/isis/css/template-rtl.css @@ -8562,7 +8562,14 @@ body { } .dl-horizontal dt { float: right; + text-align: left; + clear: right; +} +.dl-horizontal dd { + margin-left: 0; + margin-right: 180px; } +.dl-horizontal dt .profile> ul { margin: 9px 25px 0 0; } diff --git a/administrator/templates/isis/language/en-GB/en-GB.tpl_isis.ini b/administrator/templates/isis/language/en-GB/en-GB.tpl_isis.ini index 38c537e20286e..00cdb292beae8 100644 --- a/administrator/templates/isis/language/en-GB/en-GB.tpl_isis.ini +++ b/administrator/templates/isis/language/en-GB/en-GB.tpl_isis.ini @@ -35,4 +35,4 @@ TPL_ISIS_STATUS_TOP="Top" TPL_ISIS_STICKY_DESC="Optionally set the toolbar to a fixed (pinned) location." TPL_ISIS_STICKY_LABEL="Pinned Toolbar" TPL_ISIS_TOOLBAR="Toolbar" -TPL_ISIS_XML_DESCRIPTION="Continuing the Egyptian god/goddess theme (Khepri from 1.5 and Hathor from 1.6), Isis is the Joomla 3 administrator template based on Bootstrap from Twitter and the launch of the Joomla User Interface library (JUI)." +TPL_ISIS_XML_DESCRIPTION="Continuing the Egyptian god/goddess theme (Khepri from 1.5 and Hathor from 1.6), Isis is the Joomla 3 administrator template based on Bootstrap and the launch of the Joomla User Interface library (JUI)." diff --git a/administrator/templates/isis/language/en-GB/en-GB.tpl_isis.sys.ini b/administrator/templates/isis/language/en-GB/en-GB.tpl_isis.sys.ini index 41f25471f7997..0905379e468d1 100644 --- a/administrator/templates/isis/language/en-GB/en-GB.tpl_isis.sys.ini +++ b/administrator/templates/isis/language/en-GB/en-GB.tpl_isis.sys.ini @@ -17,4 +17,4 @@ TPL_ISIS_POSITION_STATUS="Status" TPL_ISIS_POSITION_SUBMENU="Submenu" TPL_ISIS_POSITION_TITLE="Title" TPL_ISIS_POSITION_TOOLBAR="Toolbar" -TPL_ISIS_XML_DESCRIPTION="Continuing the Egyptian god/goddess theme (Khepri from 1.5 and Hathor from 1.6), Isis is the Joomla 3 administrator template based on Bootstrap from Twitter and the launch of the Joomla User Interface library (JUI)." \ No newline at end of file +TPL_ISIS_XML_DESCRIPTION="Continuing the Egyptian god/goddess theme (Khepri from 1.5 and Hathor from 1.6), Isis is the Joomla 3 administrator template based on Bootstrap and the launch of the Joomla User Interface library (JUI)." diff --git a/components/com_contact/layouts/joomla/form/renderfield.php b/components/com_contact/layouts/joomla/form/renderfield.php new file mode 100644 index 0000000000000..a0b789ee424a3 --- /dev/null +++ b/components/com_contact/layouts/joomla/form/renderfield.php @@ -0,0 +1,41 @@ + +
> + +
+ + + + +
+ +
+
diff --git a/components/com_contact/models/forms/contact.xml b/components/com_contact/models/forms/contact.xml index 1500d002a6ab1..1ec9116477bee 100644 --- a/components/com_contact/models/forms/contact.xml +++ b/components/com_contact/models/forms/contact.xml @@ -1,55 +1,65 @@
-
- + + - - - - -
-
\ No newline at end of file + diff --git a/components/com_contact/views/categories/tmpl/default_items.php b/components/com_contact/views/categories/tmpl/default_items.php index 9d68a3ec4463f..ae2e2ca17863d 100644 --- a/components/com_contact/views/categories/tmpl/default_items.php +++ b/components/com_contact/views/categories/tmpl/default_items.php @@ -25,15 +25,17 @@
> params->get('show_subcat_desc_cat') == 1) :?> @@ -44,7 +46,7 @@ - getChildren()) > 0) :?> + getChildren()) > 0 && $this->maxLevelcat > 1) :?>
items[$item->id] = $item->getChildren(); diff --git a/components/com_contact/views/category/view.html.php b/components/com_contact/views/category/view.html.php index afdf543e760e3..18f676c81526a 100644 --- a/components/com_contact/views/category/view.html.php +++ b/components/com_contact/views/category/view.html.php @@ -9,6 +9,8 @@ defined('_JEXEC') or die; +use Joomla\Registry\Registry; + /** * HTML View class for the Contacts component * @@ -49,8 +51,8 @@ public function display($tpl = null) // Compute the contact slug. foreach ($this->items as $item) { - $item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; - $temp = new JRegistry; + $item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; + $temp = new Registry; $temp->loadString($item->params); $item->params = clone($this->params); $item->params->merge($temp); diff --git a/components/com_contact/views/contact/tmpl/default.php b/components/com_contact/views/contact/tmpl/default.php index ccc562678f939..40286ba2cde8a 100644 --- a/components/com_contact/views/contact/tmpl/default.php +++ b/components/com_contact/views/contact/tmpl/default.php @@ -13,7 +13,7 @@ jimport('joomla.html.html.bootstrap'); ?> -
+
params->get('show_page_heading')) : ?>

escape($this->params->get('page_heading')); ?> @@ -26,7 +26,7 @@ item->published == 0) : ?> - contact->name; ?> + contact->name; ?>

@@ -84,13 +84,13 @@ contact->image && $this->params->get('show_image')) : ?>
- contact->image, JText::_('COM_CONTACT_IMAGE_DETAILS'), array('align' => 'middle')); ?> + contact->image, JText::_('COM_CONTACT_IMAGE_DETAILS'), array('align' => 'middle', 'itemprop' => 'image')); ?>
contact->con_position && $this->params->get('show_position')) : ?>
-
+
contact->con_position; ?>
@@ -120,6 +120,7 @@ params->get('presentation_style') == 'tabs') : ?> + params->get('presentation_style') == 'plain'): ?> ' . JText::_('COM_CONTACT_EMAIL_FORM') . ''; ?> diff --git a/components/com_contact/views/contact/tmpl/default_form.php b/components/com_contact/views/contact/tmpl/default_form.php index 23055078ca3f8..e30e963ff73e6 100644 --- a/components/com_contact/views/contact/tmpl/default_form.php +++ b/components/com_contact/views/contact/tmpl/default_form.php @@ -12,41 +12,40 @@ JHtml::_('behavior.keepalive'); JHtml::_('behavior.formvalidator'); -if (isset($this->error)) : ?> -
- error; ?> -
- +$captchaEnabled = false; +foreach (JPluginHelper::getPlugin('captcha') as $plugin) +{ + if (JFactory::getApplication()->get('captcha', '0') === $plugin->name) + { + $captchaEnabled = true; + break; + } +} +?>
-
-
- - - form->getFieldsets() as $fieldset) : ?> - form->getFieldset($fieldset->name) as $field) : ?> - name === 'contact_email_copy' && !$this->params->get('show_email_copy')) : ?> - + + form->getFieldsets() as $fieldset): ?> + name === 'captcha' && !$captchaEnabled) : ?> + + + form->getFieldset($fieldset->name); ?> + +
+ label) && strlen($legend = trim(JText::_($fieldset->label)))) : ?> + -
- hidden) : ?> -
- input; ?> -
- -
- label; ?> - required && $field->type != 'Spacer') : ?> - - -
-
input; ?>
+ + name === 'contact_email_copy' && !$this->params->get('show_email_copy')) : ?> + -
- - - -
+ renderField(); ?> + +
+ + +
+
@@ -54,6 +53,7 @@
+
diff --git a/components/com_contact/views/contact/view.html.php b/components/com_contact/views/contact/view.html.php index 4ac6ff57309f6..b393e04757d2a 100644 --- a/components/com_contact/views/contact/view.html.php +++ b/components/com_contact/views/contact/view.html.php @@ -52,21 +52,19 @@ class ContactViewContact extends JViewLegacy protected $return_page; /** - * Method to display the view. + * Execute and display a template script. * - * @param string $tpl A template file to load. [optional] + * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * - * @return mixed Exception on failure, void on success. - * - * @since 1.5 + * @return mixed A string if successful, otherwise a Error object. */ public function display($tpl = null) { - $app = JFactory::getApplication(); - $user = JFactory::getUser(); - $state = $this->get('State'); - $item = $this->get('Item'); - $this->form = $this->get('Form'); + $app = JFactory::getApplication(); + $user = JFactory::getUser(); + $state = $this->get('State'); + $item = $this->get('Item'); + $this->form = $this->get('Form'); // Get the parameters $params = JComponentHelper::getParams('com_contact'); @@ -95,19 +93,20 @@ public function display($tpl = null) } // Check if access is not public - $groups = $user->getAuthorisedViewLevels(); + $groups = $user->getAuthorisedViewLevels(); $return = ''; if ((!in_array($item->access, $groups)) || (!in_array($item->category_access, $groups))) { - JError::raiseWarning(403, JText::_('JERROR_ALERTNOAUTHOR')); + $app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'error'); + $app->setHeader('status', 403, true); return false; } - $options['category_id'] = $item->catid; - $options['order by'] = 'a.default_con DESC, a.ordering ASC'; + $options['category_id'] = $item->catid; + $options['order by'] = 'a.default_con DESC, a.ordering ASC'; // Handle email cloaking if ($item->email_to && $params->get('show_email')) @@ -305,10 +304,10 @@ public function display($tpl = null) */ protected function _prepareDocument() { - $app = JFactory::getApplication(); - $menus = $app->getMenu(); - $pathway = $app->getPathway(); - $title = null; + $app = JFactory::getApplication(); + $menus = $app->getMenu(); + $pathway = $app->getPathway(); + $title = null; // Because the application sets a default page title, // we need to get it from the menu item itself @@ -355,15 +354,15 @@ protected function _prepareDocument() if (empty($title)) { - $title = $app->getCfg('sitename'); + $title = $app->get('sitename'); } - elseif ($app->getCfg('sitename_pagetitles', 0) == 1) + elseif ($app->get('sitename_pagetitles', 0) == 1) { - $title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $title); + $title = JText::sprintf('JPAGETITLE', $app->get('sitename'), $title); } - elseif ($app->getCfg('sitename_pagetitles', 0) == 2) + elseif ($app->get('sitename_pagetitles', 0) == 2) { - $title = JText::sprintf('JPAGETITLE', $title, $app->getCfg('sitename')); + $title = JText::sprintf('JPAGETITLE', $title, $app->get('sitename')); } if (empty($title)) @@ -377,7 +376,7 @@ protected function _prepareDocument() { $this->document->setDescription($this->item->metadesc); } - elseif (!$this->item->metadesc && $this->params->get('menu-meta_description')) + elseif ($this->params->get('menu-meta_description')) { $this->document->setDescription($this->params->get('menu-meta_description')); } @@ -386,7 +385,7 @@ protected function _prepareDocument() { $this->document->setMetadata('keywords', $this->item->metakey); } - elseif (!$this->item->metakey && $this->params->get('menu-meta_keywords')) + elseif ($this->params->get('menu-meta_keywords')) { $this->document->setMetadata('keywords', $this->params->get('menu-meta_keywords')); } diff --git a/components/com_contact/views/featured/view.html.php b/components/com_contact/views/featured/view.html.php index dfd7a366f4d74..f00a1c593509c 100644 --- a/components/com_contact/views/featured/view.html.php +++ b/components/com_contact/views/featured/view.html.php @@ -12,7 +12,7 @@ use Joomla\Registry\Registry; /** - * Frontpage View class + * Featured View class * * @since 1.6 */ @@ -63,7 +63,7 @@ class ContactViewFeatured extends JViewLegacy /** * Method to display the view. * - * @param string $tpl A template file to load. [optional] + * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed Exception on failure, void on success. * @@ -71,16 +71,16 @@ class ContactViewFeatured extends JViewLegacy */ public function display($tpl = null) { - $app = JFactory::getApplication(); - $params = $app->getParams(); + $app = JFactory::getApplication(); + $params = $app->getParams(); // Get some data from the models - $state = $this->get('State'); - $items = $this->get('Items'); - $category = $this->get('Category'); - $children = $this->get('Children'); - $parent = $this->get('Parent'); - $pagination = $this->get('Pagination'); + $state = $this->get('State'); + $items = $this->get('Items'); + $category = $this->get('Category'); + $children = $this->get('Children'); + $parent = $this->get('Parent'); + $pagination = $this->get('Pagination'); // Check for errors. if (count($errors = $this->get('Errors'))) @@ -94,9 +94,9 @@ public function display($tpl = null) // Compute the contact slug. for ($i = 0, $n = count($items); $i < $n; $i++) { - $item = &$items[$i]; - $item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; - $temp = new Registry; + $item = &$items[$i]; + $item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; + $temp = new Registry; $temp->loadString($item->params); $item->params = clone $params; @@ -140,13 +140,13 @@ public function display($tpl = null) * * @return void * - * @since 1.5 + * @since 1.6 */ protected function _prepareDocument() { - $app = JFactory::getApplication(); - $menus = $app->getMenu(); - $title = null; + $app = JFactory::getApplication(); + $menus = $app->getMenu(); + $title = null; // Because the application sets a default page title, // we need to get it from the menu item itself @@ -165,15 +165,15 @@ protected function _prepareDocument() if (empty($title)) { - $title = $app->getCfg('sitename'); + $title = $app->get('sitename'); } - elseif ($app->getCfg('sitename_pagetitles', 0) == 1) + elseif ($app->get('sitename_pagetitles', 0) == 1) { - $title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $title); + $title = JText::sprintf('JPAGETITLE', $app->get('sitename'), $title); } - elseif ($app->getCfg('sitename_pagetitles', 0) == 2) + elseif ($app->get('sitename_pagetitles', 0) == 2) { - $title = JText::sprintf('JPAGETITLE', $title, $app->getCfg('sitename')); + $title = JText::sprintf('JPAGETITLE', $title, $app->get('sitename')); } $this->document->setTitle($title); diff --git a/components/com_content/views/archive/tmpl/default_items.php b/components/com_content/views/archive/tmpl/default_items.php index a1815453cd8dc..9432b169387b3 100644 --- a/components/com_content/views/archive/tmpl/default_items.php +++ b/components/com_content/views/archive/tmpl/default_items.php @@ -123,8 +123,10 @@ get('show_intro')) : ?> + event->afterDisplayTitle; ?> + event->beforeDisplayContent; ?> get('show_intro')) :?>
introtext, $params->get('introtext_limit')); ?>
@@ -206,6 +208,7 @@
+ event->afterDisplayContent; ?>
diff --git a/components/com_content/views/article/tmpl/default.php b/components/com_content/views/article/tmpl/default.php index e07e589a2dc38..deecc00fdd8ad 100644 --- a/components/com_content/views/article/tmpl/default.php +++ b/components/com_content/views/article/tmpl/default.php @@ -83,7 +83,9 @@ item->tagLayout->render($this->item->tags->itemTags); ?> + get('show_intro')) : echo $this->item->event->afterDisplayTitle; endif; ?> + item->event->beforeDisplayContent; ?> urls_position) && ($urls->urls_position == '0')) || ($params->get('urls_position') == '0' && empty($urls->urls_position))) @@ -163,5 +165,6 @@ echo $this->item->pagination; ?> + item->event->afterDisplayContent; ?>
diff --git a/components/com_content/views/category/tmpl/blog_item.php b/components/com_content/views/category/tmpl/blog_item.php index dbfc4b228d7b3..e3afd0a115157 100644 --- a/components/com_content/views/category/tmpl/blog_item.php +++ b/components/com_content/views/category/tmpl/blog_item.php @@ -42,9 +42,13 @@ get('show_intro')) : ?> + item->event->afterDisplayTitle; ?> -item->event->beforeDisplayContent; ?> item->introtext; ?> + +item->event->beforeDisplayContent; ?> + +item->introtext; ?> $this->item, 'params' => $params, 'position' => 'below')); ?> @@ -70,4 +74,5 @@ + item->event->afterDisplayContent; ?> diff --git a/components/com_content/views/featured/tmpl/default_item.php b/components/com_content/views/featured/tmpl/default_item.php index 048ac1ab186d1..d087b22951711 100644 --- a/components/com_content/views/featured/tmpl/default_item.php +++ b/components/com_content/views/featured/tmpl/default_item.php @@ -66,9 +66,13 @@ get('show_intro')) : ?> + item->event->afterDisplayTitle; ?> -item->event->beforeDisplayContent; ?> item->introtext; ?> + +item->event->beforeDisplayContent; ?> + +item->introtext; ?> $this->item, 'params' => $params, 'position' => 'below')); ?> @@ -97,4 +101,5 @@ + item->event->afterDisplayContent; ?> diff --git a/components/com_tags/views/tag/tmpl/default_items.php b/components/com_tags/views/tag/tmpl/default_items.php index 92322c66fd381..fb9fd8261de1c 100644 --- a/components/com_tags/views/tag/tmpl/default_items.php +++ b/components/com_tags/views/tag/tmpl/default_items.php @@ -71,6 +71,7 @@ + event->afterDisplayTitle; ?> core_images);?> params->get('tag_list_show_item_image', 1) == 1 && !empty($images->image_intro)) :?> @@ -79,10 +80,12 @@ params->get('tag_list_show_item_description', 1)) : ?> + event->beforeDisplayContent; ?> core_body, $this->params->get('tag_list_item_maximum_characters')); ?> + event->afterDisplayContent; ?> diff --git a/components/com_users/controllers/profile.json.php b/components/com_users/controllers/profile.json.php index 73eeb744afbaf..72073e8bb04a3 100644 --- a/components/com_users/controllers/profile.json.php +++ b/components/com_users/controllers/profile.json.php @@ -9,41 +9,13 @@ defined('_JEXEC') or die; -require_once JPATH_COMPONENT . '/controller.php'; +require_once JPATH_SITE . '/components/com_users/controllers/profile_base_json.php'; /** * Profile controller class for Users. * * @since 1.6 */ -class UsersControllerProfile extends UsersController +class UsersControllerProfile extends UsersControllerProfile_Base_Json { - /** - * Returns the updated options for help site selector - * - * @return void - * - * @since 3.2 - * @throws Exception - */ - public function gethelpsites() - { - jimport('joomla.filesystem.file'); - - // Set FTP credentials, if given - JClientHelper::setCredentialsFromRequest('ftp'); - - if (($data = file_get_contents('http://update.joomla.org/helpsites/helpsites.xml')) === false) - { - throw new Exception(JText::_('COM_CONFIG_ERROR_HELPREFRESH_FETCH'), 500); - } - elseif (!JFile::write(JPATH_ADMINISTRATOR . '/help/helpsites.xml', $data)) - { - throw new Exception(JText::_('COM_CONFIG_ERROR_HELPREFRESH_ERROR_STORE'), 500); - } - - $options = JHelp::createSiteList(JPATH_ADMINISTRATOR . '/help/helpsites.xml'); - echo json_encode($options); - JFactory::getApplication()->close(); - } } diff --git a/components/com_users/controllers/profile_base_json.php b/components/com_users/controllers/profile_base_json.php new file mode 100644 index 0000000000000..351b6f6d5c37f --- /dev/null +++ b/components/com_users/controllers/profile_base_json.php @@ -0,0 +1,53 @@ +close(); + } +} diff --git a/components/com_users/models/reset.php b/components/com_users/models/reset.php index 349a2e94e8d68..7036e708bd6f1 100644 --- a/components/com_users/models/reset.php +++ b/components/com_users/models/reset.php @@ -299,21 +299,15 @@ public function processResetConfirm($data) return false; } - $parts = explode(':', $user->activation); - $crypt = $parts[0]; - - if (!isset($parts[1])) + if (!$user->activation) { $this->setError(JText::_('COM_USERS_USER_NOT_FOUND')); return false; } - $salt = $parts[1]; - $testcrypt = JUserHelper::getCryptedPassword($data['token'], $salt, 'md5-hex'); - // Verify the token - if (!($crypt == $testcrypt)) + if (!(JUserHelper::verifyPassword($data['token'], $user->activation))) { $this->setError(JText::_('COM_USERS_USER_NOT_FOUND')); @@ -330,7 +324,7 @@ public function processResetConfirm($data) // Push the user data into the session. $app = JFactory::getApplication(); - $app->setUserState('com_users.reset.token', $crypt . ':' . $salt); + $app->setUserState('com_users.reset.token', $user->activation); $app->setUserState('com_users.reset.user', $user->id); return true; @@ -441,8 +435,8 @@ public function processResetRequest($data) // Set the confirmation token. $token = JApplicationHelper::getHash(JUserHelper::genRandomPassword()); - $salt = JUserHelper::getSalt('crypt-md5'); - $hashedToken = md5($token . $salt) . ':' . $salt; + $hashedToken = JUserHelper::hashPassword($token); + $user->activation = $hashedToken; // Save the user to the database. diff --git a/composer.json b/composer.json index b0ba2e5eb802d..f44b03fdcd6fc 100644 --- a/composer.json +++ b/composer.json @@ -6,6 +6,9 @@ "homepage": "https://github.com/joomla/joomla-cms", "license": "GPL-2.0+", "config": { + "platform": { + "php": "5.3.10" + }, "vendor-dir": "libraries/vendor" }, "require": { diff --git a/installation/language/dz-BT/dz-BT.ini b/installation/language/dz-BT/dz-BT.ini new file mode 100644 index 0000000000000..38ff22f352cc3 --- /dev/null +++ b/installation/language/dz-BT/dz-BT.ini @@ -0,0 +1,321 @@ +; Joomla! Project +; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt +; Note : All ini files need to be saved as UTF-8 + +;Stepbar +INSTL_STEP_COMPLETE_LABEL="མཇུག་བསྡུà¼" +INSTL_STEP_DATABASE_LABEL="གནས་སྡུད་གཞི་མཛོདà¼" +INSTL_STEP_DEFAULTLANGUAGE_LABEL="སྔ་སྒྲིག་སà¾à½‘་ཡིག་འདི་གདམ་à½à¼‹à½¢à¾à¾±à½–à¼" +INSTL_STEP_FTP_LABEL="ཨེབ་ཀྲི་པི་(FTP)" +INSTL_STEP_LANGUAGES_LABEL="སà¾à½‘་ཡིག་ཚུ་བཙུགསà¼" +INSTL_STEP_SITE_LABEL="རིམ་སྒྲིག" +INSTL_STEP_SUMMARY_LABEL="སྤྱིར་བà½à½„་མà½à½¼à½„་སྣང༌à¼" + +;Language view +INSTL_SELECT_LANGUAGE_TITLE="སà¾à½‘་ཡིག་གདམ་à½à¼‹à½¢à¾à¾±à½–à¼" +INSTL_WARNJAVASCRIPT="ཉེན་བརྡ༠ཇུམ་ལ་ཚུལ་མà½à½´à½“་སྦེ་ བཙུགས་ནི་དོན་ལུ་ JavaScript འདི་འབད་ཚུགསཔ་བཟོà¼" +INSTL_WARNJSON="ཇུམ་ལ་ བཙུགས་ནི་དོན་ལུ་ à½à¾±à½¼à½‘་རའི་ PHP བཙུགས་སྒྲིག་འདི་ JSON འབད་ཚུགསཔ་བཟོ་འོང་དགོà¼" + +;Preinstall view +INSTL_PRECHECK_TITLE="ཧེ་མའི་བཙུགས་སྒྲིག་འདི་ ཞིབ་དཔྱད་འབདà¼" +INSTL_PRECHECK_DESC="རྣམ་གྲངས་འདི་ཚུའི་གྲལ་ལས་ གཅིག་ཡང་རྒྱབ་རྟེན་མེད་པ་ཅིན་ (མེན༠རྟགས་སà¾à¾±à½ºà½£à¼‹) དེ་ལས་ འཛོལ་བ་མེདཔ་སྦེ་ བཟོ་ནིའི་དོན་ལུ་ བྱ་ལེན་འབད་གནང་à¼
འོག་གི་ དགོས་མà½à½¼à¼‹à½šà½´à¼‹ མ་ཚངམ་ཚན་ཚད་ à½à¾±à½¼à½‘་གི་ ཇུམ་ལ་(Joomla!) འདི་བཙུགས་མི་ཚུགསà¼" +INSTL_PRECHECK_RECOMMENDED_SETTINGS_TITLE="རྒྱབ་སྣོན་ཡོད་པའི་ བཟོ་བཀོད་ཚུ་:" +INSTL_PRECHECK_RECOMMENDED_SETTINGS_DESC="ཇུམ་ལ་(Joomla) དང་ཅིག་à½à½¢à¼‹ ལེགས་ཤོམ་སྦེ་སྒྲིག་བà½à½´à½–་ནིའི་དོན་ལུ་ བཟོ་བཀོད་འདི་ཚུ་ རྒྱབ་སྣོན་ཡོདà¼
ཨིན་རུང་ à½à¾±à½¼à½‘་ཀྱི་བཟོ་བཀོད་ཚུ་ རྒྱབ་སྣོན་ཡོད་པའི་རིམ་སྒྲིག་དང་ཅིག་à½à½¢à¼‹ མà½à½´à½“་འགྲིགས་མེད་རུང་ ཇུམ་ལ་(Joomla!) འདི་ལཱ་འབད་བà½à½´à½–à¼" +INSTL_PRECHECK_DIRECTIVE="ལམ་སྟོནà¼" +INSTL_PRECHECK_RECOMMENDED="རྒྱབ་སྣོན་ཡོདཔà¼" +INSTL_PRECHECK_ACTUAL="ངོ་མà¼" + +; Database view +INSTL_DATABASE="གནས་སྡུད་གཞི་མཛོད་ཀྱི་རིམ་སྒྲིག" +INSTL_DATABASE_HOST_DESC="འདི་ ཨ་རྟག་བཟུམ་སྦེ་ "localhost" ཨིནà¼" +INSTL_DATABASE_HOST_LABEL="འགོ་འདྲེན་པའི་མིང་à¼" +INSTL_DATABASE_NAME_DESC="ལ་ལུ་འགོ་འདྲེན་པ་གི་ ས་à½à½¼à½„ས་རེ་རེ་ལུ་ གནས་སྡུད་གཞི་མཛོད་ཀྱི་མིང་ འཚམས་ཅིག་རà¾à¾±à½„མ་ཅིག་བཞག་བཅུག་འོང་༠འ་ནི་ ཇུམ་ལ་(Joomla) ས་à½à½¼à½„ས་སོ་སོའི་གནས་སྟངས་ཀྱི་དོན་ལུ་ རྫས་à½à½¼à½ à½²à¼‹à½¦à¾”ོན་ཚིག་ལག་ལེན་འà½à½–à¼" +INSTL_DATABASE_NAME_LABEL="གནས་སྡུད་གཞི་མཛོད་ཀྱི་མིང་à¼" +INSTL_DATABASE_NO_SCHEMA="འ་ནི་ གནས་སྡུད་གཞི་མཛོད་དབྱེ་à½à½‚་གི་དོན་ལུ་ གནས་སྡུད་གཞི་མཛོད་ཀྱི་སྔོན་འགྲོའི་འཆར་གཞི་མིན་འདུག" +INSTL_DATABASE_OLD_PROCESS_DESC="ཧེ་མའི་ཇུམ་ལ་(Joomla) བཙུགས་བཞག་ལས་ རྫས་à½à½¼à½ à½²à¼‹à½¢à¾’ྱབ་སྣོན་ག་ཡོད་མི་འདི་ཚུ་ གསརཔ་བཙུགས་འོང་à¼" +INSTL_DATABASE_OLD_PROCESS_LABEL="གནས་སྡུད་གཞི་མཛོད་རྙིངམ་གྱི་ བྱ་རིམà¼" +INSTL_DATABASE_PASSWORD_DESC="ས་à½à½¼à½„ས་ཉེན་སྲུང་གི་དོན་ལུ་ གནས་སྡུད་གཞི་མཛོད་ཀྱི་རྩིས་à½à¾²à¼‹à½£à½´à¼‹ གསང་ཡིག་ ངེས་པར་དུ་ལག་ལེན་འà½à½–་་དགོཔ་ཨིནà¼" +INSTL_DATABASE_PASSWORD_LABEL="གསང་ཡིག" +INSTL_DATABASE_PREFIX_DESC="རྫས་à½à½¼à½ à½²à¼‹à½¦à¾”ོན་ཚིག་འདི་འདམ་à½à¼‹à½¢à¾à¾±à½–་ ཡང་ན་ རིམ་བྲལ་ལས་སྤེལ་མི་འདི་ལག་ལེན་འà½à½–༠འོས་འབབ་ལྡན་à½à½¼à½‚་à½à½¼à¼‹à½ à½‘ི་ à½à¾±à½‘་ཆོས་རིངམོ་ གསུམ་དང་བཞི་ དེ་ཡང་ ཨལ་ཕ་ནུ་མི་རིཊ(alphanumeric)ཀྱི་à½à¾±à½¼à½‘་ཆོས་རà¾à¾±à½„མ་ཅིག་འོང་ནི་དང་ མཇུག་འདི་འོག་à½à½²à½‚་གི་འབད་མཇུག་བསྡུ་དགོ༠སྔོན་ཚིག་འདི་ རྫས་à½à½¼à¼‹à½‚ཞན་གྱི་ ལག་ལེན་མ་འà½à½–་མི་ཅིག་ གདམ་à½à¼‹à½‚à½à½“་འà½à½ºà½£à¼‹à½–ཟོà¼." +INSTL_DATABASE_PREFIX_LABEL="རྫས་à½à½¼à½ à½²à¼‹à½¦à¾”ོན་ཚིག" +INSTL_DATABASE_PREFIX_MSG="རྫས་à½à½¼à½ à½²à¼‹à½¦à¾”ོན་ཚིག་འདི་ འགོ་ཡི་གུ་གི་འགོ་བཙུགས་ནི་ འདི་རྟིང་བདའ་སྟེ་ གདམ་à½à¼‹à½…ན་གྱི་ ཨལ་ཕ་ནུ་མི་རིཊ(alphanumeric)à½à¾±à½¼à½‘་ཆོས་བཙུགས་ནི་ དེ་ལས་ མཇུག་འདི་འོག་à½à½²à½‚་གི་འབད་མཇུག་བསྡུ་དགོà¼" +INSTL_DATABASE_TYPE_DESC="འདི་ གཅིག་འབདན་ "MySQLi" འོང་à¼" +INSTL_DATABASE_TYPE_LABEL="གནས་སྡུད་གཞི་མཛོད་ཀྱི་དབྱེ་à½à½‚" +INSTL_DATABASE_USER_DESC="གང་རུང༌ "root" ཡང་ན་ ལག་ལེན་པའི་མིང་འདི་ འགོ་འདྲེན་པ་གི་བྱིན་འོང་à¼" +INSTL_DATABASE_USER_LABEL="ལག་ལེན་པའི་མིང་à¼" + +;FTP view +INSTL_AUTOFIND_FTP_PATH=" ངམ་ངམ་ཤུགས་ཀྱིས་འà½à½¼à½–་ནིའི་ FTP འབྲེལ་ལམà¼" +INSTL_FTP="FTP རིམ་སྒྲིག" +INSTL_FTP_DESC="

ལ་ལུ་ སར་བར་(server)ལུ་ བཙུགས་བཞག་མཇུག་བསྡུ་ནི་དོན་ལུ་ FTP à½à¾±à½‘་ཚང༌ཚུ་ བྱིན་དགོ༠à½à¾±à½¼à½‘་ར་ འདི་à½à¾±à½‘་ཚང་མེད་པར་ བཙུགས་བཞག་འབད་ནིའི་དཀའ་ངལ་མà½à½¼à½“་པ་ཅིན་ གལ་སྲིད་ ངེས་པར་དགོཔ་ཨིན་པ་ཅིན་ à½à½“་à½à½“་བཟོ་ནི་དོན་ལུ་ à½à¾±à½¼à½‘་རའི་འགོ་འདྲེན་པ་དང་ཅིག་à½à½¢à¼‹ ཞིབ་དཔྱད་འབདà¼

ཉེན་སྲུང་གི་དོན་ལུ་ ཡོངས་འབྲེལ་འཆར་སྒོའི་སར་བར་(server) ག་ར་གི་དོན་ལུ་མེན་པར་ ཇུམ་ལ་(Joomla!) བཙུགས་བཞག་རà¾à¾±à½„མ་ཅིག་ ལྷོད་ལམ་གྱི་དོན་ལུ་ FTP ལག་ལེན་པའི་རྩིས་à½à¾²à¼‹à½¦à½¼à¼‹à½¦à½¼à¼‹à½–ཟོ་ནི་འདི་ གལ་ཆེ༠à½à¾±à½¼à½‘་རའི་འགོ་འདྲེན་པ་གི་ à½à¾±à½¼à½‘་ལུ་ཆ་རོགས་འབད་ཚུགà¼

བརྗེད་à½à½¼à¼: གལ་སྲིད་ Windows ལག་ལེན་རིམ་ལུགས་འདི་ བཙུགས་བཞག་འབད་བ་ཅིན་ FTP རིམ་པ་འདི་ མེད་ དགོà¼

" +INSTL_FTP_ENABLE_LABEL="FTP རིམ་པ་ ལཱ་འབད་ཚུགསཔ་བཟོà¼" +INSTL_FTP_HOST_LABEL="FTP གི་འགོ་འདྲེན་པà¼" +INSTL_FTP_PASSWORD_LABEL="FTP གསང་ཡིགà¼" +INSTL_FTP_PORT_LABEL="FTP དོང་à¼" +INSTL_FTP_ROOT_LABEL="FTP རྩ་བའི་འབྲེལ་ལམà¼" +INSTL_FTP_SAVE_LABEL="FTP གསང་ཡིག་བསག་བཞག་འབདà¼" +INSTL_FTP_TITLE="FTP རིམ་སྒྲིག་ (གདམ་à½à¼‹à½…ནà¼- ལག་ལེན་པ་མང་ཤོས་ཅིག་གི་ར་ འདི་རིམ་པ་བཀོ་བཞག་འོང་༠- བཀོ་བཞག་ནི་དོན་ལུ་ ཤུལ་མམ་ལུ་ཨེབà¼)" +INSTL_FTP_USER_LABEL="FTP ལག་ལེན་པའི་མིང་à¼" +INSTL_VERIFY_FTP_SETTINGS="FTP བཟོ་བཀོད་ཚུ་ བདེན་དཔྱད་འབདà¼" +INSTL_FTP_SETTINGS_CORRECT="བཟོ་བཀོད་ཚུ་ཀྲིག་ཀྲི་འདུག" +INSTL_FTP_USER_DESC="ཉེན་བརྡ༠འ་ནི་འདི་ ས་སྟོང་བཞག་སྟེ་ à½à¾±à½¼à½‘་རའི་ ཡིག་སྣོད་སྤོ་སོར་འབད་བའི་སà¾à½–ས་ FTP ལག་ལེན་པའི་མིང་བཙུགས་ནི་ལུ་ རྒྱབ་སྣོན་ཡོདà¼" +INSTL_FTP_PASSWORD_DESC="ཉེན་བརྡ༠འ་ནི་འདི་ ས་སྟོང་བཞག་སྟེ་ à½à¾±à½¼à½‘་རའི་ ཡིག་སྣོད་སྤོ་སོར་འབད་བའི་སà¾à½–ས་ FTP ལག་ལེན་པའི་མིང་བཙུགས་ནི་ལུ་ རྒྱབ་སྣོན་ཡོདà¼" + +;Site View +INSTL_SITE="རིམ་སྒྲིག་ངོ་མà¼" +INSTL_ADMIN_EMAIL_LABEL="བདག་སà¾à¾±à½¼à½„༌པའི་གློག་འཕྲིནà¼" +INSTL_ADMIN_EMAIL_DESC="གློག་འཕྲིན་à½à¼‹à½–ྱང་བཙུགས༠འ་ནི་འདི་ ཡོངས་འབྲེལ་འཆར་སྒོའི་རྩ་ལག་ལག་ལེན་པ་གྱི་ གློག་འཕྲིན་à½à¼‹à½–ྱང་ཨིནà¼" +INSTL_ADMIN_PASSWORD_LABEL="བདག་སà¾à¾±à½¼à½„་པའི་གསང་ཡིག" +INSTL_ADMIN_PASSWORD_DESC="རྩ་ལག་ལག་ལེན་པའི་རྩིས་à½à¾²à¼‹à½‚ི་དོན་ལུ་ གསང་ཡིག་བཟོ་སྟེ་ འོག་གི་ས་à½à½¼à½„ས་ཚུ་ གà½à½“་འà½à½ºà½£à¼‹à½–ཟོà¼" +INSTL_ADMIN_PASSWORD2_LABEL="བདག་སà¾à¾±à½¼à½„་པའི་གསང་ཡིག་ གà½à½“་འà½à½ºà½£à¼‹à½–ཟོà¼" +INSTL_ADMIN_USER_LABEL="བདག་སà¾à¾±à½¼à½„་ ལག་ལེན་པའི་མིང་à¼" +INSTL_ADMIN_USER_DESC="à½à¾±à½¼à½‘་རའི་ རྩ་ལག་ལག་ལེན་པའི་རྩིས་à½à¾²à¼‹à½‚ི་དོན་ལུ་ ལག་ལེན་པའི་མིང་བཟོà¼" +INSTL_SITE_NAME_LABEL="ས་à½à½¼à½„ས་མིང་à¼" +INSTL_SITE_NAME_DESC="à½à¾±à½¼à½‘་རའི་ ཇོམ་ལ་(Joomla) ས་à½à½¼à½„ས་ཀྱི་མིང་བཙུགསà¼" +INSTL_SITE_METADESC_LABEL="བཤད་པà¼" +INSTL_SITE_METADESC_TITLE_LABEL="འཚོལ་ཞིབ་འཕྲུལ་ཨམ་གི་ལག་ལེན་འà½à½–་ནི་དོན་ལུ་ ཡོངས་འབྲེལ་འཆར་སྒོའི་སྤྱིར་བà½à½„་གི་བཤད་པ་བཙུགས༠སྤྱིར་བà½à½„་ལུ་ མིང་ཚིག་ ༢༠ ལས་ མ་མངམ་ཅིག་བཙུགསà¼" +INSTL_SITE_OFFLINE_LABEL="ཡོངས་འབྲེལ་འབྲེལ་མེད་ཀྱི་ས་à½à½¼à½„སà¼" +INSTL_SITE_OFFLINE_TITLE_LABEL="བཙུགས་བཞག་འབད་བཞིནམ་ལས་ གདོང་ཤོག་གི་ས་à½à½¼à½„ས་ ཡོངས་འབྲེལ་འབྲེལ་མེད་བཟོ༠རྒྱལ་སྤྱིའི་རིམ་སྒྲིག་à½à½¼à½‚་ལས་ ཤུལ་ལས་ ས་à½à½¼à½„ས་འདི་ ཡོངས་འབྲེལ་ འབྲེལ་ཡོད་བཟོ་བà½à½´à½–à¼" +INSTL_SITE_INSTALL_SAMPLE_LABEL="གནས་སྡུད་དཔེ་ཚད་བཙུགསà¼" +INSTL_SITE_INSTALL_SAMPLE_DESC="འགོ་བཙུགས་མི་ཚུ་གི་དོན་ལུ་ གནས་སྡུད་དཔེ་ཚད་བཙུགས་ནི་འདི་ རྒྱབ་སྣོན་སྦོམ་ཡོདà¼
འ་ནི་གི་ ཇུམ་ལ་ (Joomla) བཙུགས་བཞག་གི་ཡོངས་འà½à½´à½¦à¼‹à½“ང་ལུ་ཡོད་མི་ བརྗོད་དོན་དཔེ་ཚད་འདི་བཙུགས་འོང་à¼" +INSTL_SITE_INSTALL_SAMPLE_NONE="ག་ཡང་མེནམ༠(སà¾à¾±à½ºà½¦à¼‹à½£à½´à½„་གི་སà¾à½‘་སྣ་ལྡན་པའི་ས་à½à½¼à½„ས་ གསར་བཙུགས་འབད་ནི་དོན་ལུ་དགོà¼)" +INSTL_SAMPLE_BLOG_SET="དབྱིན་སà¾à½‘་(GB) བྲི་སྒོའི་ གནས་སྡུད་ཀྱི་དཔེ་ཚདà¼" +INSTL_SAMPLE_BROCHURE_SET="དབྱིན་སà¾à½‘་(GB) གནས་ཤོགའི་ གནས་སྡུད་ཀྱི་དཔེ་ཚདà¼" +INSTL_SAMPLE_DATA_SET="དབྱིན་སà¾à½‘་(GB) སྔ་སྒྲིགའི་ གནས་སྡུད་ཀྱི་དཔེ་ཚདà¼" +INSTL_SAMPLE_LEARN_SET="དབྱིན་སà¾à½‘་(GB) ཇུམ་ལ་གི་ གནས་སྡུད་ཀྱི་དཔེ་ཚད་འདི་ལྷབà¼" +INSTL_SAMPLE_TESTING_SET="དབྱིན་སà¾à½‘་(GB)གི་ གནས་སྡུད་ཀྱི་དཔེ་ཚད་བརྟག་དཔྱད་འབདà¼" +INSTL_SITE_INSTALL_SAMPLE_NONE_DESC="ཇུམ་ལ་(Joomla) འདི་ བརྗོད་དོན་ག་ནི་ཡང་མེད་པར་ གློག་རིམ་དཀར་ཆག་དང་ ནང་སà¾à¾±à½¼à½‘་བཀང་ཤོག་རà¾à¾±à½„མ་ཅིག་སྦེ་ བཙུགས་བཞག་འབདà¼" +INSTL_SAMPLE_BLOG_SET_DESC="ཇུམ་ལ་(Joomla) འདི་ རྩོམ་བྲིས་དག་པ་ཅིག་ དེ་ལས་བྲི་སྒོ་དང་འབྲེལ་བ་ཡོད་པའི་རིམ་ཚན་ (དཔྱེ་འབད་བ་ཅིན་ གསལ་བསྒྲགས་རྙིངམ༠བྲི་སྒོ་མིང་à½à½¼à¼ གསལ་བསྒྲགས་མངམ་ལྷག་མི་ཚུà¼) ཚུ་དང་ཅིག་à½à½¢à¼‹ བཙུགས་བཞག་འབདà¼" +INSTL_SAMPLE_BROCHURE_SET_DESC="ཇུམ་ལ་(Joomla) འདི་ཤོག་ལེབ་དག་པ་ཅིག་ (གློག་རིམ་དཀར་ཆག་འདི་ གདོང་ཤོག་ཤོག་ལེབ༠ང་བཅས་སà¾à½¼à½¢à¼‹à½£à½¦à¼ གནས་ཚུལ༠འབྲེལ་བ་འà½à½–་སà¼) དང་ རིམ་ཚན་(དཔྱེ་འབད་བ་ཅིན་ འཚོལ་ཞིབ༠གོམས་འདྲིས་ ནང་སà¾à¾±à½¼à½‘་འབྲི་ཤོག) ཚུ་དང་ཅིག་à½à½¢à¼‹ བཙུགས་བཞག་འབད༠" +INSTL_SAMPLE_DATA_SET_DESC="ཇུམ་ལ་(Joomla) འདི་ཤོག་ལེབ་ཅིག་ (འབྲེལ་ལམ་ཡོད་པའི་གློག་རིམ་དཀར་ཆག) དང་ གློག་རིག་གི་རིམ་ཚན་ (དཔྱེ་འབད་བ་ཅིན་ རྩོམ་བྲིས་གསརཔ༠ནང་སà¾à¾±à½¼à½‘་འབྲི་ཤོག) ཚུ་དང་ཅིག་à½à½¢à¼‹ བཙུགས་བཞག་འབདà¼" +INSTL_SAMPLE_LEARN_SET_DESC="ཇུམ་ལ་(Joomla)འདི་ ཇུམ་ལ་ག་དེ་སྦེ་ ལཱ་འབདà½à¼‹à½¨à½²à½“་ན་གི་སà¾à½¼à½¢à¼‹à½£à½¦à¼‹ འགྲེལ་བཤད་རà¾à¾±à½–་ཡོད་མི་རྩོམ་བྲིས་དང་ཅིག་à½à½¢à¼‹ བཙུགས་བཞག་འབདà¼" +INSTL_SAMPLE_TESTING_SET_DESC="ཇུམ་ལ་(Joomla) བརྟག་ཞིབ་ལེགས་ཤོམ་འབད་ནིའི་དོན་ལུ་ རྣམ་གྲངས་དཀར་ཆག་ག་ར་ཡོད་མི་དང་ཅིག་à½à½¢à¼‹ ཇུམ་ལ་བཙུགས་བཞག་འབདà¼" + +;Summary view +INSTL_FINALISATION="མཇུག་བསྡུ་ནིà¼" +INSTL_SUMMARY_INSTALL="བཙུགསà¼" +INSTL_SUMMARY_EMAIL_LABEL="གློག་འཕྲིན་རིམ་སྒྲིག" +INSTL_SUMMARY_EMAIL_DESC="བཙུགས་བཞག་འབད་བཞིནམ་ལས་ གློག་འཕྲིན་à½à½¼à½‚་ལས་ རིམ་སྒྲིག་བཟོ་བཀོད་འབད་ནི་དོན་ལུ་ %s ལུ་བསà¾à¾±à½£à¼" +INSTL_SUMMARY_EMAIL_PASSWORDS_LABEL="གློག་ཕྲིན་ནང་ལུ་ གསང་ཡིག་བཙུགསà¼" +INSTL_SUMMARY_EMAIL_PASSWORDS_DESC="ཉེན་བརྡ༠à½à¾±à½¼à½‘་རའི་ གློག་ཕྲིན་ནང་ལུ་ གསང་ཡིག་བསà¾à¾±à½£à¼‹à½“ི་དང་ གསང་ཡིག་གློག་ཕྲིན་ནང་ལུ་བཙུགས་ནི་ལུ་ རྒྱབ་སྣོན་མེདà¼" + +;Installing view +INSTL_INSTALLING="བཙུགས་བཞག་འབད་དོ་་་་་་་" +INSTL_INSTALLING_DATABASE_BACKUP="གནས་སྡུད་གཞི་མཛོད་ཀྱི་རྫས་à½à½¼à¼‹à½¢à¾™à½²à½„མ་ཚུ་ རྒྱབ་སྣོན་བཟོ་དོà¼" +INSTL_INSTALLING_DATABASE_REMOVE="གནས་སྡུད་གཞི་མཛོད་ཀྱི་རྫས་à½à½¼à¼‹à½¢à¾™à½²à½„མ་ཚུ་ བà½à½¼à½“་གà½à½„་དོà¼" +INSTL_INSTALLING_DATABASE="གནས་སྡུད་གཞི་མཛོད་ཀྱི་རྫས་à½à½¼à¼‹à½šà½´à¼‹ གསརཔ་བཟོ་དོà¼" +INSTL_INSTALLING_SAMPLE="གནས་སྡུད་ཀྱི་དཔེ་ཚད་ བཙུགས་བཞག་འབད་དོà¼" +INSTL_INSTALLING_CONFIG="ཡིག་སྣོད་རིམ་སྒྲིག་ གསརཔ་བཟོ་དོà¼" +INSTL_INSTALLING_EMAIL="གློག་ཕྲིན་ %s ལུ་བསà¾à¾±à½£à¼‹à½‘ོà¼" + +;Email +INSTL_EMAIL_SUBJECT="རིམ་སྒྲིག་à½à¼‹à½‚སལ: %s" +INSTL_EMAIL_HEADING="ཇུམ་ལ་(Joomla)འི་ཡོངས་འབྲེལ་འཆར་སྒོ་ གསརཔ་གསལ་བཙུགས་འབད་མི་དོན་ལུ་ རིམ་སྒྲིག་བཟོ་བཀོད་ཚུ་འོག་ལུ་à½à½¼à½–་ཚུགསà¼" +INSTL_EMAIL_NOT_SENT="གློག་ཕྲིན་འདི་བསà¾à¾±à½£à¼‹à½˜à¼‹à½šà½´à½‚སà¼" + +;Complete view +INSTL_COMPLETE_ADMINISTRATION_LOGIN_DETAILS="བདག་སà¾à¾±à½¼à½„༌ནང་སà¾à¾±à½¼à½‘་ཀྱི་à½à¼‹à½‚སལà¼" +; The word 'installation' should not be translated as it is a physical folder. +INSTL_COMPLETE_ERROR_FOLDER_ALREADY_REMOVED="བཙུགས་བཞག་གི་ཡིག་སྣོད་འདི་ ཧེ་མ་ལས་བà½à½¼à½“་གà½à½„་ནུག" +; The word 'installation' should not be translated as it is a physical folder. +INSTL_COMPLETE_ERROR_FOLDER_DELETE="བཙུགས་བཞག་གི་ཡིག་སྣོད་འདི་ བà½à½¼à½“་གà½à½„་མི་ཚུགས་པས༠ཡིག་སྣོད་འདི་ལག་à½à½¼à½‚་ལས་བà½à½¼à½“་གà½à½„་གནང་à¼" +; The word 'installation' should not be translated as it is a physical folder. +INSTL_COMPLETE_FOLDER_REMOVED="བཙུགས་བཞག་གི་ཡིག་སྣོད་འདི་ ལེགས་ཤོམ་སྦེ་་བà½à½¼à½“་གà½à½„་ཡིà¼" +INSTL_COMPLETE_LANGUAGE_1="à½à¾±à½¼à½‘་རའི་སà¾à½‘་ཡིག་དང་ སà¾à½‘་སྣ་ལྡན་པའི་ནང་ལུ་ ཇུམ་ལ་(Joomla)གི་ས་à½à½¼à½„ས་ གསར་བཙུགསà¼" +; The word 'installation' should not be translated as it is a physical folder. +INSTL_COMPLETE_LANGUAGE_DESC="བཙུགས་བཞག་གི་ཡིག་སྣོད་འདི་ བà½à½¼à½“་མ་གà½à½„་བའི་ཧེ་མ་ སà¾à½‘་ཡིག་à½à¼‹à½¦à¾à½¼à½„་བཙུགས་བà½à½´à½–༠à½à¾±à½¼à½‘་ར་ ཇུམ་ལའི་(Joomla) ལག་ལེན་ནང་ལུ་ སà¾à½‘་ཡིག་à½à¼‹à½¦à¾à½¼à½„་བཀལ་ནི་ཨིན་པ་ཅིན་ འོག་གི་འཕྲུལ་རྟ་འདི་ གདམ་à½à¼‹à½¢à¾à¾±à½–à¼" +INSTL_COMPLETE_LANGUAGE_DESC2="བརྗེད་à½à½¼à¼: à½à¾±à½¼à½‘་ར་ ཇུམ་ལ་(Joomla) གནས་སྡུད་སྤོ་ནི་དང་ སà¾à½‘་ཡིག་གསརཔ་ཚུ་བཙུགས་ནི་དོན་ལུ་ གློག་རིག་ཡོངས་འབྲེལ་གྱི་ལྷོད་ལམ་དགོà¼
སར་བར་(server) རིམ་སྒྲིག་ལ་ལུ་ཅིག་གི་ ཇུམ་ལ་(Joomla)ལུ་ སà¾à½‘་ཡིག་ཚུ་བཙུགས་ནི་ལུ་ བཀག་ཆ་འབད་འོང་༠à½à¾±à½¼à½‘་ར་ འ་ནི་བཟུམ་གྱི་གནས་སྟངས་འབྱུང་སྲིད་པ་ཅིན་ ཚ་གྱང་མ་ལང་ ཤུལ་ལས་ ཇུམ་ལ་(Joomla) གི་བདག་སà¾à¾±à½¼à½„་པ་ལག་ལེན་འà½à½–་à½à½ºà¼‹ བཙུགས་བཞག་འབད་ཚུགསà¼" +; The word 'installation' should not be translated as it is a physical folder. +INSTL_COMPLETE_REMOVE_FOLDER="བཙུགས་བཞག་གི་ཡིག་སྣོད་འདི་ བà½à½¼à½“་གà½à½„à¼" +; The word 'installation' should not be translated as it is a physical folder. +INSTL_COMPLETE_REMOVE_INSTALLATION="བཙུགས་བཞག་གི་ཡིག་སྣོད་འདི་ ཆ་ཚང་སྦེ་བà½à½¼à½“་གà½à½„་ནི་ སེམས་à½à½¢à¼‹à½–ཞག་གནངà¼
བཙུགས་བཞག་གི་ཡིག་སྣོད་འདི་ བà½à½¼à½“་མ་གà½à½„་ཚུན་ཚད་ འདི་ལས་གལ་à½à½ºà¼‹ འཕྲོ་མà½à½´à½‘་འགྱོ་མི་ཚུགས༠འ་ནི་འདི་ ཇུམ་ལ་(Joomla)གི་ ཉེན་སྲུང་རྣམ་པ་ཨིནà¼" +INSTL_COMPLETE_TITLE="བཀྲིས་བདེ་ལེགས༠ཇུམ་ལ་(Joomla)འདི་ ད་ལྟོ་བཙུགས་བཞག་འབད་ཡོདཔà¼" +INSTL_COMPLETE_INSTALL_LANGUAGES="གོ་རིམ་ལྷན་à½à½–ས༠: སà¾à½‘་ཡིག་ཚུ་བཙུགས་བཞག་འབདà¼" + +;Languages view +INSTL_LANGUAGES="སà¾à½‘་ཡིག་ཆ་ཚང་བཙུགསà¼" +INSTL_LANGUAGES_COLUMN_HEADER_LANGUAGE="སà¾à½‘་ཡིག" +INSTL_LANGUAGES_COLUMN_HEADER_VERSION="à½à½¼à½“་རིམà¼" +INSTL_LANGUAGES_DESC="ཇུམ་ལ་(Joomla)ངོ་བྱང་འདི་ སà¾à½‘་ཡིག་ལེ་ཤ་ཅིག་ནང་ལུ་à½à½¼à½–་ཚུགས༠à½à¾±à½¼à½‘་ར་ གདམ་à½à¼‹à½…ན་གྱི་སà¾à½‘་ཡིག་འདི་ གདམ་འཛིན་ནང་ལས་གདམ་à½à¼‹à½¢à¾à¾±à½–་བཞིནམ་ལས་ ཤུལ་མམ་གྱི་འཕྲུལ་རྟ་འདི་ གདམ་à½à¼‹à½¢à¾à¾±à½–་à½à½ºà¼‹à½–ཙུགས་བཞག་འབདà¼
བརྗེད་à½à½¼à¼: འ་ནི་གློག་རིག་ལས་སྤྱོད་ཀྱི་ སà¾à½‘་ཡིག་གནས་སྡུད་སྤོ་ནི་དང་བཙུགས་ནི་དོན་ལུ་ སà¾à½¢à¼‹à½†à¼‹ ༡༠ དེ་ཅིག་འགོར་འོང་༠འདི་ དུས་ཚད་མ་ལང་པའི་དཀའ་ངལ་ལས་འཛེམ་ནི་དོན་ལུ་ སà¾à½‘་ཡིག་བཙུགས་ནི་ ༣ ལས་མངམ་ གདམ་à½à¼‹à½˜à¼‹à½¢à¾à¾±à½–༠" +INSTL_LANGUAGES_MESSAGE_PLEASE_WAIT="འ་ནི་གློག་རིག་ལས་སྤྱོད་ཀྱི་ སà¾à½‘་ཡིག་ཅིག་བཟོ་ནིའི་དོན་ལུ་ སà¾à½¢à¼‹à½†à¼‹ ༡༠ ཚུན་ཚད་འགོར་འོང་à¼
སà¾à½‘་ཡིག་ཚུ་ གནས་སྡུད་སྤོ་བའི་སà¾à½–ས་དང་ བཙུགས་བཞག་འབད་བའི་སà¾à½–ས་ལུ་ སྒུག་གནངà¼" +INSTL_LANGUAGES_MORE_LANGUAGES="à½à¾±à½¼à½‘་ར་ སà¾à½‘་ཡིག་ལེ་ཤ་བཙུགས་ནི་ཨིན་པ་ཅིན་ སྔོན་མའི་འཕྲུལ་རྟ་འདི་ ཨེབ་གནངà¼" +INSTL_LANGUAGES_NO_LANGUAGE_SELECTED="བཙུགས་བཞག་འབད་ནིའི་དོན་ལུ་ སà¾à½‘་ཡིག་གདམ་à½à¼‹à½˜à¼‹à½¢à¾à¾±à½–་ནུག à½à¾±à½¼à½‘་ར་ སà¾à½‘་ཡིག་ལེ་ཤ་བཙུགས་ནི་ཨིན་པ་ཅིན་ སྔོན་མའི་འཕྲུལ་རྟ་འདི་ ཨེབ་à½à½ºà¼‹ à½à½¼à¼‹à½¡à½²à½‚་ནང་ལས་ གདམ་à½à¼‹à½…ན་གྱི་སà¾à½‘་ཡིག་འདི་གདམ་à½à¼‹à½¢à¾à¾±à½–à¼" +INSTL_LANGUAGES_WARNING_NO_INTERNET="ཇུམ་ལ་(Joomla)འདི་ སà¾à½‘་ཡིག་གི་སར་བར་(server)ལུ་ འབྲེལ་མà½à½´à½‘་མ་ཚུགས༠བཙུགས་བཞག་གི་བྱ་རིམ་ རྫོགས་གནངà¼" +INSTL_LANGUAGES_WARNING_NO_INTERNET2="བརྗེད་à½à½¼à¼: ཤུལ་ལས་ à½à¾±à½¼à½‘་ར་ ཇུམ་ལ་(Joomla)གི་བདག་སà¾à¾±à½¼à½„་པ་ལག་ལེན་འà½à½–་à½à½ºà¼‹ སà¾à½‘་ཡིག་ཚུ་བཙུགས་བཞག་འབད་ཚུགསà¼" +INSTL_LANGUAGES_WARNING_BACK_BUTTON="བཙུགས་བཞག་གི་བྱ་རིམ་མཇུག་ལུ་ ལོག་འགྱོà¼" + +;Default language view +INSTL_DEFAULTLANGUAGE_ACTIVATE_MULTILANGUAGE="སà¾à½‘་སྣ་ལྡན་པའི་ངོ་བྱང་འདི་ ལག་ལེན་འà½à½–་བà½à½´à½–་བཟོà¼" +INSTL_DEFAULTLANGUAGE_ACTIVATE_MULTILANGUAGE_DESC="འདི་ལག་ལེན་འà½à½–་བà½à½´à½–་བཟོ་ཡོད་པ་ཅིན་ à½à¾±à½¼à½‘་ཀྱི་ ཇུམ་ལ་(Joomla)ས་à½à½¼à½„ས་འདི་ སà¾à½‘་ཡིག་བཙུགས་ཡོད་མི་རེ་རེ་ལུ་ གློག་རིམ་དཀར་ཆག་ས་གནས་ནང་མà½à½¼à½‘་དང་ཅིག་à½à½¢à¼‹ སà¾à½‘་སྣ་ལྡན་པའི་ངོ་བྱང་འབད་བà½à½´à½–་བཟོ་དེ་འོངà¼" +INSTL_DEFAULTLANGUAGE_ACTIVATE_LANGUAGE_CODE_PLUGIN="སà¾à½‘་ཡིག་གསང་རྟགས་ཀྱི་པླག་ཨིན་(plugin)འདི་ འབད་ཚུགསཔ་བཟོà¼" +INSTL_DEFAULTLANGUAGE_ACTIVATE_LANGUAGE_CODE_PLUGIN_DESC="འདི་འབད་ཚུགསཔ་བཟོ་ཡོད་པ་ཅིན་ SEO ཡར་དྲག་བཟོ་ནིའི་དོན་ལུ་ HTML ཡིག་ཆ་བཟོ་ཡོད་མི་ནང་ལུ་ སà¾à½‘་ཡིག་གསང་རྟགས་ཀྱི་པླག་ཨིན་(plugin)འདི་གི་ སà¾à½‘་ཡིག་གསང་རྟགས་སོར་ནི་ལུ་ ལྕོགས་གྲུབ་ཧེང་སà¾à½£à¼‹à½–ཀལ་འོང་à¼" +INSTL_DEFAULTLANGUAGE_ADMINISTRATOR="བདག་སà¾à¾±à½¼à½„་པ་གི་ སྔོན་སྒྲིག་སà¾à½‘་ཡིག" +INSTL_DEFAULTLANGUAGE_ADMIN_COULDNT_SET_DEFAULT="ཇུམ་ལ་(Joomla)འདི་ལུ་ སྔོན་སྒྲིག་གི་སà¾à½‘་ཡིག་བཙུགས་མ་བà½à½´à½–༠རྒྱབ་གནས་ཀྱི་བདག་སà¾à¾±à½¼à½„་པའི་དོན་ལུ་ དབྱིན་སà¾à½‘་ཀྱི་སà¾à½‘་ཡིག་འདི་ སྔོན་སྒྲིག་འབད་ ལག་ལེན་འà½à½–་འོངà¼" +INSTL_DEFAULTLANGUAGE_ADMIN_SET_DEFAULT="ཇུམ་ལ་(Joomla)དེ་གི་ སà¾à½‘་ཡིག་ %s འདི་བདག་སà¾à¾±à½¼à½„་གི་སྔོན་སྒྲིག་སà¾à½‘་ཡིག་འབད་བཙུགས་ཅིག" +INSTL_DEFAULTLANGUAGE_COLUMN_HEADER_SELECT="གདམ་à½à¼‹à½¢à¾à¾±à½–à¼" +INSTL_DEFAULTLANGUAGE_COLUMN_HEADER_LANGUAGE="སà¾à½‘་ཡིག" +INSTL_DEFAULTLANGUAGE_COLUMN_HEADER_TAG="མིང་རྟགསà¼" +INSTL_DEFAULTLANGUAGE_COULD_NOT_CREATE_CONTENT_LANGUAGE="ཇུམ་ལ་(Joomla)དེ་གི་ བརྗོད་དོན་སà¾à½‘་ཡིག་ %s འདི་ངམ་ངམ་ཤུགས་ཀྱིས་འབད་ གསརཔ་བཟོ་མ་ཚུགསà¼" +INSTL_DEFAULTLANGUAGE_COULD_NOT_CREATE_MENU="ཇུམ་ལ་(Joomla)དེ་གི་ གློག་རིམ་དཀར་ཆག་ %s འདི་ངམ་ངམ་ཤུགས་ཀྱིས་འབད་ གསརཔ་བཟོ་མ་ཚུགསà¼" +INSTL_DEFAULTLANGUAGE_COULD_NOT_CREATE_MENU_ITEM="ཇུམ་ལ་(Joomla)དེ་གི་ གདོང་ཤོག་གི་རྣམ་གྲངས་དཀར་ཆག་ %s འདི་ངམ་ངམ་ཤུགས་ཀྱིས་འབད་ གསརཔ་བཟོ་མ་ཚུགསà¼" +INSTL_DEFAULTLANGUAGE_COULD_NOT_CREATE_MENU_MODULE="ཇུམ་ལ་(Joomla)དེ་གི་ གློག་རིམ་དཀར་ཆག་གི་རིམ་ཚན་ %s འདི་ངམ་ངམ་ཤུགས་ཀྱིས་འབད་ གསརཔ་བཟོ་མ་ཚུགསà¼" +INSTL_DEFAULTLANGUAGE_COULD_NOT_CREATE_CATEGORY="ཇུམ་ལ་(Joomla)དེ་གི་ བརྗོད་དོན་དབྱེ་བ་ %s འདི་ངམ་ངམ་ཤུགས་ཀྱིས་འབད་ གསརཔ་བཟོ་མ་ཚུགསà¼" +INSTL_DEFAULTLANGUAGE_COULD_NOT_CREATE_ARTICLE="ཇུམ་ལ་(Joomla)དེ་གི་ ས་གནས་ནང་འà½à½¼à½‘་ཀྱི་རྩོམ་བྲིས་ %s འདི་ངམ་ངམ་ཤུགས་ཀྱིས་འབད་ གསརཔ་བཟོ་མ་ཚུགསà¼" +INSTL_DEFAULTLANGUAGE_COULD_NOT_ENABLE_MODULESWHITCHER_LANGUAGECODE="ཇུམ་ལ་(Joomla)དེ་གི་ སà¾à½‘་ཡིག་བརྗེ་སོར་གྱི་རིམ་ཚན་འདི ་ངམ་ངམ་ཤུགས་ཀྱིས་འབད་ དཔེ་སà¾à¾²à½´à½“་འབད་མ་ཚུགསà¼" +INSTL_DEFAULTLANGUAGE_COULD_NOT_ENABLE_PLG_LANGUAGECODE="ཇུམ་ལ་(Joomla)དེ་གི་ སà¾à½‘་ཡིག་གསང་རྟགས་ཀྱི་པླག་ཨིན་(plugin)འདི ་ངམ་ངམ་ཤུགས་ཀྱིས་འབད་ འབད་ཚུགསཔ་བཟོ་མ་ཚུགསà¼" +INSTL_DEFAULTLANGUAGE_COULD_NOT_ENABLE_PLG_LANGUAGEFILTER="ཇུམ་ལ་(Joomla)དེ་གི་ སà¾à½‘་ཡིག་སེལ་ཚགས་ཀྱི་པླག་ཨིན་(plugin)འདི ་ངམ་ངམ་ཤུགས་ཀྱིས་འབད་ འབད་ཚུགསཔ་བཟོ་མ་ཚུགསà¼" +INSTL_DEFAULTLANGUAGE_COULD_NOT_INSTALL_LANGUAGE="ཇུམ་ལ་(Joomla)ལུ་ སà¾à½‘་ཡིག་ %s བཙུགས་བཞག་འབད་མ་ཚུགསà¼" +INSTL_DEFAULTLANGUAGE_COULD_NOT_PUBLISH_MOD_MULTILANGSTATUS="ཇུམ་ལ་(Joomla)དེ་གི་ སà¾à½‘་ཡིག་གནས་རིམ་གྱི་རིམ་ཚན་འདི་ ངམ་ངམ་ཤུགས་ཀྱིས་འབད་ དཔེ་སà¾à¾²à½´à½“་འབད་མ་ཚུགསà¼" +INSTL_DEFAULTLANGUAGE_COULD_NOT_UNPUBLISH_MOD_DEFAULTMENU="ཇུམ་ལ་(Joomla)དེ་གི་ སྔོན་སྒྲིག་གི་གློག་རིམ་དཀར་ཆག་རིམ་ཚན་འདི་ ངམ་ངམ་ཤུགས་ཀྱིས་འབད་ དཔེ་སà¾à¾²à½´à½“་མ་འབདà½à¼‹ བཟོ་མ་ཚུགསà¼" +INSTL_DEFAULTLANGUAGE_DESC="ཇུམ་ལ་(Joomla)ལུ་ འོག་གི་སà¾à½‘་ཡིག་འདི་ཚུ་ བཙུགས་བཞག་འབད་ནུག༠ཇུམ་ལའིབདག་སà¾à¾±à½¼à½„་གི་དོན་ལུ་ གདམ་à½à¼‹à½…ན་གྱི་སà¾à½‘་ཡིག་འདི་གདམ་à½à¼‹à½¢à¾à¾±à½–་གནངà¼" +INSTL_DEFAULTLANGUAGE_DESC_FRONTEND="ཇུམ་ལ་(Joomla)ལུ་ འོག་གི་སà¾à½‘་ཡིག་འདི་ཚུ་ བཙུགས་བཞག་འབད་ནུག༠ཇུམ་ལའི་གདོང་ཤོག་་གི་དོན་ལུ་ གདམ་à½à¼‹à½…ན་གྱི་སà¾à½‘་ཡིག་འདི་གདམ་à½à¼‹à½¢à¾à¾±à½–་གནངà¼" +INSTL_DEFAULTLANGUAGE_FRONTEND="ས་à½à½¼à½„ས་ཀྱི་སྔོན་སྒྲིག་སà¾à½‘་ཡིག" +INSTL_DEFAULTLANGUAGE_FRONTEND_COULDNT_SET_DEFAULT="ཇུམ་ལ་(Joomla)འདི་ལུ་ སྔོན་སྒྲིག་གི་སà¾à½‘་ཡིག་བཙུགས་མ་བà½à½´à½–༠གདོང་ཤོག་གི་ས་à½à½¼à½„ས་དོན་ལུ་ དབྱིན་སà¾à½‘་ཀྱི་སà¾à½‘་ཡིག་འདི་ སྔོན་སྒྲིག་འབད་ ལག་ལེན་འà½à½–་འོངà¼" +INSTL_DEFAULTLANGUAGE_FRONTEND_SET_DEFAULT="ཇུམ་ལ་(Joomla)དེ་གི་ སà¾à½‘་ཡིག་ %s འདི་ས་à½à½¼à½„ས་ཀྱི་སྔོན་སྒྲིག་སà¾à½‘་ཡིག་འབད་བཙུགས་ཅིག" +INSTL_DEFAULTLANGUAGE_INSTALL_LOCALISED_CONTENT="ས་གནས་ནང་འà½à½¼à½‘་ཀྱི་བརྗོད་དོན་འདི་བཙུགསà¼" +INSTL_DEFAULTLANGUAGE_INSTALL_LOCALISED_CONTENT_DESC="འདི་ལག་ལེན་འà½à½–་བà½à½´à½–་བཟོ་ཡོད་པ་ཅིན་ སà¾à½‘་ཡིག་བཙུགས་ཡོད་མི་རེ་རེ་ལུ་ བརྗོད་དོན་གྱི་དབྱེ་à½à½‚་གསརཔ་ ངམ་ངམ་ཤུགས་ཀྱི་བཟོ་འོང༠འདི་ཅིག་à½à½¢à¼‹ དབྱེ་à½à½‚་རེ་རེ་ལུ་ རྩོམ་བྲིས་ངོ་བྱང་ཡོད་མི་ གཞི་དཔེ་གི་བརྗོད་དོན་འདི་ གསརཔ་བཟོ་འོངà¼" +INSTL_DEFAULTLANGUAGE_MULTILANGUAGE_TITLE="སà¾à½‘་སྣà¼" +INSTL_DEFAULTLANGUAGE_MULTILANGUAGE_DESC="འ་ནི་ཚ་ཚན་འདི་གི་ ཇུམ་ལ་(Joomla)སà¾à½‘་སྣའི་ངོ་བྱང་ ངམ་ངམ་ཤུགས་ཀྱི་ལག་ལེན་འà½à½–་བà½à½´à½–་བཟོ་ནི་ལུ་ འབད་བཅུག་འོངà¼" +INSTL_DEFAULTLANGUAGE_TRY_LATER="ཤུལ་ལས་ à½à¾±à½¼à½‘་ར་ཇུམ་ལ་(Joomla)གི་བདག་སà¾à¾±à½¼à½„་པ་ལག་ལེན་འà½à½–་à½à½ºà¼‹ བཙུགས་བཞག་འབད་ཚུགསà¼" + +; IMPORTANT NOTE FOR TRANSLATORS: Do not literally translate this line, instead add the localised name of the language. For example Spanish will be Español +INSTL_DEFAULTLANGUAGE_NATIVE_LANGUAGE_NAME="རྫོང་à½à¼‹ (BT)" + +;Database Model +INSTL_DATABASE_COULD_NOT_CONNECT="གནས་སྡུད་གཞི་མཛོད་ལུ་ མà½à½´à½‘་མ་ཚུགས༠འབྲེལ་མà½à½´à½‘་ལོག་མི་གྱངས་à½à¼‹ : %s" +INSTL_DATABASE_COULD_NOT_CREATE_DATABASE="བཙུགས་བཞག་འབད་མི་ གསལ་བཀོད་ཅན་གྱི་གནས་སྡུད་གཞི་མཛོད་ལུ་ མà½à½´à½‘་མ་ཚུགསཔ་མ་ཚད་ གནས་སྡུད་གཞི་མཛོད་གསརཔ་ཡང་བཟོ་མ་ཚུགས༠à½à¾±à½¼à½‘་རའི་ བཟོ་བཀོད་འདི་བདེན་དཔྱད་འབད་ དེ་ལས་ གནས་སྡུད་གཞི་མཛོད་ངེས་པར་དུ་དགོཔ་ཡོད་པ་ཅིན་ གསརཔ་བཟོ་གནངà¼" +INSTL_DATABASE_COULD_NOT_REFRESH_MANIFEST_CACHE="ཡིག་སྣོད་བརྡ་ཡིག་དོན་ལུ་ གསལ་སྟོན་གྱི་དྲན་མཛོད་འདི་ à½à¼‹à½‚སོ་མ་ཚུགས་ : %s" +INSTL_DATABASE_EMPTY_NAME="" +INSTL_DATABASE_ERROR_BACKINGUP="གནས་སྡུད་གཞི་མཛོད་ཀྱི་རྒྱབ་སྣོན་འབད་བའི་སà¾à½–ས་ འཛོལ་བ་དག་པ་ཅིག་མà½à½¼à½“་ཡིà¼" +INSTL_DATABASE_ERROR_CREATE="གནས་སྡུད་གཞི་མཛོད་ %s བཟོ་ནི་འབད་བའི་སà¾à½–ས་ འཛོལ་བ་མà½à½¼à½“་ཡོདà¼
ལག་ལེན་པ་འདི་ གནས་སྡུད་གཞི་མཛོད་གསརཔ་བཟོ་ནིའི་དོན་ལུ་ à½à½ºà¼‹à½‘བང་མེད་བཟུམ་འདུག༠ཇུམ་ལ་(Joomla) བཙུགས་བཞག་མ་འབད་བའི་ཧེ་མ་ དགོས་མà½à½¼à¼‹à½…ན་གྱི་གནས་སྡུད་གཞི་མཛོད་འདི་ གསརཔ་སོ་སོ་སྦེ་བཟོ་དགོཔ་འོངà¼" +INSTL_DATABASE_ERROR_DELETE="འཛོལ་བ་ལ་ལུ་ གནས་སྡུད་གཞི་མཛོད་བà½à½¼à½“་གà½à½„་བའི་སà¾à½–ས་འབྱུང་ནུག" +INSTL_DATABASE_FIELD_VALUE_REMOVE="བà½à½¼à½“་གà½à½„à¼" +INSTL_DATABASE_FIELD_VALUE_BACKUP="རྒྱབ་སྣོནà¼" +INSTL_DATABASE_FIX_TOO_LONG="མའི་ཨེས་ཀིà½à¼‹à½¨à½ºà½£à¼‹(MySQL) རྫས་à½à½¼à½ à½²à¼‹à½¦à¾”ོན་ཚིག་འདི་ à½à¾±à½‘་ཆོས་མà½à½¼à¼‹à½¤à½¼à½¦à¼‹ ༡༥ དགོà¼" +INSTL_DATABASE_INVALID_DB_DETAILS="གནས་སྡུད་གཞི་མཛོད་ཀྱི་à½à¼‹à½‚སལ་བཀལ་ཡོད་མི་འདི་ འཛོལ་བ་ ཡང་ན་ སྟོངམ་འདུག" +INSTL_DATABASE_INVALID_MYSQL_VERSION="à½à¾±à½¼à½‘་ར་ བཙུགས་བཞག་འཕྲོ་མà½à½´à½‘་འབད་ནིའི་དོན་ལུ་ མའི་ཨེས་ཀིà½à¼‹à½¨à½ºà½£à¼‹(MySQL) ༥.༠.༤ ཡང་ན་ འདི་ལས་མà½à½¼à¼‹à½¤à½¼à½¦à¼‹à½‘གོ༠à½à¾±à½¼à½‘་ཀྱི་ à½à½¼à½“་རིམ་འདི་ %s" +INSTL_DATABASE_INVALID_MYSQLI_VERSION="à½à¾±à½¼à½‘་ར་ བཙུགས་བཞག་འཕྲོ་མà½à½´à½‘་འབད་ནིའི་དོན་ལུ་ མའི་ཨེས་ཀིà½à¼‹à½¨à½ºà½£à¼‹(MySQL) ༥.༠.༤ ཡང་ན་ འདི་ལས་མà½à½¼à¼‹à½¤à½¼à½¦à¼‹à½‘གོ༠à½à¾±à½¼à½‘་ཀྱི་ à½à½¼à½“་རིམ་འདི་ %s" +INSTL_DATABASE_INVALID_PDOMYSQL_VERSION="à½à¾±à½¼à½‘་ར་ བཙུགས་བཞག་འཕྲོ་མà½à½´à½‘་འབད་ནིའི་དོན་ལུ་ མའི་ཨེས་ཀིà½à¼‹à½¨à½ºà½£à¼‹(MySQL) ༥.༠.༤ ཡང་ན་ འདི་ལས་མà½à½¼à¼‹à½¤à½¼à½¦à¼‹à½‘གོ༠à½à¾±à½¼à½‘་ཀྱི་ à½à½¼à½“་རིམ་འདི་ %s" +INSTL_DATABASE_INVALID_POSTGRESQL_VERSION="à½à¾±à½¼à½‘་ར་ བཙུགས་བཞག་འཕྲོ་མà½à½´à½‘་འབད་ནིའི་དོན་ལུ་ PostgreSQL ༨.༣.༡༨ ཡང་ན་ འདི་ལས་མà½à½¼à¼‹à½¤à½¼à½¦à¼‹à½‘གོ༠à½à¾±à½¼à½‘་ཀྱི་ à½à½¼à½“་རིམ་འདི་ %s" +INSTL_DATABASE_INVALID_SQLSRV_VERSION="à½à¾±à½¼à½‘་ར་ བཙུགས་བཞག་འཕྲོ་མà½à½´à½‘་འབད་ནིའི་དོན་ལུ་ ཨེས་ཀིà½à¼‹à½¨à½ºà½£à¼‹à½¦à½¢à¼‹à½–ར་(SQL Server) ༢༠༠༨ R2 (10.50.1600.1) ཡང་ན་ འདི་ལས་མà½à½¼à¼‹à½¤à½¼à½¦à¼‹à½‘གོ༠à½à¾±à½¼à½‘་ཀྱི་ à½à½¼à½“་རིམ་འདི་ %s" +INSTL_DATABASE_INVALID_SQLZURE_VERSION="à½à¾±à½¼à½‘་ར་ བཙུགས་བཞག་འཕྲོ་མà½à½´à½‘་འབད་ནིའི་དོན་ལུ་ ཨེས་ཀིà½à¼‹à½¨à½ºà½£à¼‹à½¦à½¢à¼‹à½–ར་(SQL Server) ༢༠༠༨ R2 (10.50.1600.1) ཡང་ན་ འདི་ལས་མà½à½¼à¼‹à½¤à½¼à½¦à¼‹à½‘གོ༠à½à¾±à½¼à½‘་ཀྱི་ à½à½¼à½“་རིམ་འདི་ %s" +INSTL_DATABASE_INVALID_TYPE="གནས་སྡུད་གཞི་མཛོད་ཀྱི་དབྱེ་à½à½‚་ གདམ་à½à¼‹à½¢à¾à¾±à½–་གནངà¼" +INSTL_DATABASE_NAME_TOO_LONG="མའི་ཨེས་ཀིà½à¼‹à½¨à½ºà½£à¼‹(MySQL) གནས་སྡུད་གཞི་མཛོད་ཀྱི་མིང་འདི་ à½à¾±à½¼à½‘་ཆོས་ མà½à½¼à¼‹à½¤à½¼à½¦à¼‹à½¢à¼‹ ༦༤ དགོà¼" +INSTL_DATABASE_INVALID_NAME="མའི་ཨེས་ཀིà½à¼‹à½¨à½ºà½£à¼‹(MySQL)གི་à½à½¼à½“་རིམ་ ༥.༡.༦ གི་ཧེ་མམ་ཚུ་གི་ མིང་ནང་ལུ་ à½à½´à½“་ཚད་ཀྱི་à½à¾±à½¼à½‘་ཆོས་ ཡང་ན་ "རྩ་ཅན་" གྱི་à½à¾±à½¼à½‘་ཆོས་ཚུ་ མེད་འོང་ནི་བཟུམ་ཅིག་ཨིན༠à½à¾±à½¼à½‘་ཀྱི་à½à½¼à½“་རིམ་འདི་ %s" +INSTL_DATABASE_NAME_INVALID_SPACES="མའི་ཨེས་ཀིà½à¼‹à½¨à½ºà½£à¼‹(MySQL) གནས་སྡུད་གཞི་མཛོད་ཀྱི་མིང་དང་ རྫས་à½à½¼à½ à½²à¼‹à½˜à½²à½„་ཚུ་ འགོ་དང་མཇུག་ལུ་ས་སྟོང༌བཞག་མ་ཆོགཔ་བཟུམ་ཨིནà¼" +INSTL_DATABASE_NAME_INVALID_CHAR="མའི་ཨེས་ཀིà½à¼‹à½¨à½ºà½£à¼‹(MySQL) ངོ་སྟོན་འདི་ཚུ་ནང་ལུ་ སྟོང་པ(NULL ASCII(0x00)) འོང་ནི་མི་འོངà¼" +INSTL_DATABASE_FILE_DOES_NOT_EXIST="ཡིག་སྣོད་ %s འདི་མིན་འདུག" + +;controllers +INSTL_COOKIES_NOT_ENABLED="à½à¾±à½¼à½‘་ཀྱི་ཡོངས་འབྲེལ་འཚོལ་སྒོའི་ལས་མགྲོན་ནང་ལུ་ ཀུ་ཀིས་(Cookies) འབད་ཚུགསཔ་བཟོ་ཡོདཔ་མེད་མà½à½¼à½“་པས༠ངོ་བྱང་འབད་མ་ཚུགསཔ་བཟོ་ཡོདཔ་ལས་སྟེན་ à½à¾±à½¼à½‘་ཀྱི་འཇུག་à½à½„ས་འདི་ བཙུགས་བཞག་འབད་མི་ཚུགས་པས༠གཞན་སོ་སོ་ཡང་ བར་སར་(server)གྱི་འབྲེལ་མà½à½´à½‘་ session.save_path ལུ་ཡང་དཀའ་ངལ་ཡོདཔ་འོང༠དེ་སྦེ་ཨིན་པའི་à½à½¢à¼‹ à½à¾±à½¼à½‘་ར་གི་ ཉམས་བཅོས་འབད་མ་ཚུགས་པ་ཅིན་ ཡོངས་འབྲེལ་བྱིན་མི་འགོ་འདྲེན་པ་དང་ཅིག་à½à½¢à¼‹ འབྲེལ་བ་འà½à½–་གནངà¼" +INSTL_HEADER_ERROR="འཛོལ་བà¼" + +;Helpers +INSTL_PAGE_TITLE="ཇུམ་ལ་(Joomla!) ཡོངས་འབྲེལ་འཆར་སྒོ་བཙུགས་མིà¼" + +;Configuration model +INSTL_ERROR_CONNECT_DB="གནས་སྡུད་གཞི་མཛོད་ལུ་ མà½à½´à½‘་མ་ཚུགས༠འབྲེལ་མà½à½´à½‘་ལོག་མི་གྱངས་à½à¼‹ : %s" +INSTL_STD_OFFLINE_MSG="ས་à½à½¼à½„ས་ཉམས་བཅོས་ཀྱི་དོན་ལུ་ ལག་ལེན་འà½à½–་མ་བà½à½´à½–་བཟོ་ཡོདà¼
མགྱོགས་པར་ར་ ལོག་སྟེ་ཞིབ་དཔྱད་འབད་གནངà¼" + +;FTP model +INSTL_FTP_INVALIDROOT="གསལ་བཀོད་འབད་ཡོད་པའི་ ཨེབ་ཀྲི་པི་(FTP)གི་ཡིག་སྣོད་འདི་ ཇུམ་ལ་(Joomla)བཙུགས་བཞག་འབད་ནིའི་ཡིག་སྣོད་མེན་འབདà¼" +INSTL_FTP_NOCONNECT="ཨེབ་ཀྲི་པི་སར་བར་(FTP Server) ལུ་མà½à½´à½‘་མི་ཚུགས་པསà¼" +INSTL_FTP_NODELE="ལས་རིམ་ "DELE" འདི་ མà½à½¢à¼‹à½ à½à¾±à½¼à½£à¼‹à½˜à¼‹à½šà½´à½‚སà¼" +INSTL_FTP_NODIRECTORYLISTING="ཨེབ་ཀྲི་པི་སར་བར་(FTP Server) ལས་à½à½¼à¼‹à½–ཀོད་འབད་ནི་ཡིག་སྣོད་འདི་ སླར་གསོ་འབད་མ་ཚུགསà¼" +INSTL_FTP_NOLIST="ལས་རིམ་ "LIST" འདི་ མà½à½¢à¼‹à½ à½à¾±à½¼à½£à¼‹à½˜à¼‹à½šà½´à½‚སà¼" +INSTL_FTP_NOLOGIN="ཨེབ་ཀྲི་པི་སར་བར་(FTP Server) ནང་ལུ་ནང་སà¾à¾±à½¼à½‘་འབད་མ་ཚུགས་པསà¼" +INSTL_FTP_NOMKD="ལས་རིམ་ "MKD" འདི་ མà½à½¢à¼‹à½ à½à¾±à½¼à½£à¼‹à½˜à¼‹à½šà½´à½‚སà¼" +INSTL_FTP_NONLST="ལས་རིམ་ "NLST" འདི་ མà½à½¢à¼‹à½ à½à¾±à½¼à½£à¼‹à½˜à¼‹à½šà½´à½‚སà¼" +INSTL_FTP_NOPWD="ལས་རིམ་ "PWD" འདི་ མà½à½¢à¼‹à½ à½à¾±à½¼à½£à¼‹à½˜à¼‹à½šà½´à½‚སà¼" +INSTL_FTP_NORETR="ལས་རིམ་ "RETR" འདི་ མà½à½¢à¼‹à½ à½à¾±à½¼à½£à¼‹à½˜à¼‹à½šà½´à½‚སà¼" +INSTL_FTP_NORMD="ལས་རིམ་ "RMD" འདི་ མà½à½¢à¼‹à½ à½à¾±à½¼à½£à¼‹à½˜à¼‹à½šà½´à½‚སà¼" +INSTL_FTP_NOROOT="གསལ་བཀོད་འབད་ཡོད་པའི་ ཨེབ་ཀྲི་པི་(FTP)གི་ཡིག་སྣོད་འདི་ ལག་ལེན་འà½à½–་མ་ཚུགས་པསà¼" +INSTL_FTP_NOSTOR="ལས་རིམ་ "STOR" འདི་ མà½à½¢à¼‹à½ à½à¾±à½¼à½£à¼‹à½˜à¼‹à½šà½´à½‚སà¼" +INSTL_FTP_NOSYST="ལས་རིམ་ "SYST" འདི་ མà½à½¢à¼‹à½ à½à¾±à½¼à½£à¼‹à½˜à¼‹à½šà½´à½‚སà¼" +INSTL_FTP_UNABLE_DETECT_ROOT_FOLDER="ཨེབ་ཀྲི་པི་(FTP)གི་རྩ་ལག་ཡིག་སྣོད་འདི་ ངམ་ཤུགས་ཀྱིས་མà½à½¼à½„་ནི་བཟོ་མི་ཚུགསà¼" + +;others +INSTL_CONFPROBLEM="à½à¾±à½¼à½‘་ཀྱི་ རིམ་སྒྲིག་གི་ཡིག་སྣོད་འདི་ བྲི་བà½à½´à½–་མི་མེན་པས་ ཡང་ན་ རིམ་སྒྲིག་གི་ཡིག་སྣོད་བཟོ་བའི་སà¾à½–ས་ དཀའ་ངལ་སྡོད་ནུག༠འོག་གི་གསང་ཡིག་འདི་ཚུ་ à½à¾±à½¼à½‘་ར་ ལགཔ་གི་བཙུགས་དགོ༠ཚིག་ཡིག་ས་à½à½¼à½„ས་ནང་ལས་ གསང་ཡིག་འདི་གདམ་à½à¼‹à½¢à¾à¾±à½–་à½à½ºà¼‹ གཙོ་རྟགས་བཀལ་ དེ་ལས་ ཡིག་སྣོད་གསརཔ་ནང་ལུ་བཙུགས༠ཡིག་སྣོད་ཀྱི་མིང་ 'configuration.php' བཟོ་སྟེ་ ས་à½à½¼à½„ས་རྩ་ལག་གི་ཡིག་སྣོད་ནང་ལུ་བཙུགསà¼" +INSTL_DATABASE_SUPPORT="གནས་སྡུད་གཞི་མཛོད་ཀྱི་རྒྱབ་རྟེནà¼:" +INSTL_DISPLAY_ERRORS="འཛོལ་བ་ཚུ་གསལ་སྟོན་འབདà¼" +INSTL_ERROR_DB="འཛོལ་བ་ལ་ལུ་ གནས་སྡུད་གཞི་མཛོད་གསརཔ་བཟོ་བའི་སà¾à½–ས་འབྱུང་༠: %s" +INSTL_ERROR_INITIALISE_SCHEMA="གནས་སྡུད་གཞི་མཛོད་དབྱེ་à½à½‚་ལུ་ གསརཔ་བཙུགས་མི་ཚུགས་པསà¼" +INSTL_FILE_UPLOADS="ཡིག་སྣོད་ཚུ་བཙུགས་ནིà¼" +INSTL_GNU_GPL_LICENSE="GNU སྤྱིར་བà½à½„་མི་སེར་གྱི་ཆོག་à½à½˜à¼" +INSTL_JSON_SUPPORT_AVAILABLE="JSON རྒྱབ་རྟེནà¼" +INSTL_MAGIC_QUOTES_GPC="སྒྱུ་མའི་དཔེ་བཀོད་ GPC འདི་ངོས་ལེན་མེདཔà¼" +INSTL_MAGIC_QUOTES_RUNTIME="སྒྱུ་མའི་དཔེ་བཀོད་རྒྱུ་ལམ་གྱི་དུསà¼" +INSTL_MB_LANGUAGE_IS_DEFAULT="སà¾à½‘་ཡིག་ MB འདི་སྔོན་སྒྲིག་ཨིནà¼" +INSTL_MB_STRING_OVERLOAD_OFF="རྗོད་ཚིག་ MB གི་མང་དྲགས་འདི་ ངོས་ལེན་མེདཔà¼" +INSTL_NOTICEMBLANGNOTDEFAULT="སà¾à½‘་ཡིག་ PHP mbstring འདི་བར་གནས་ལུ་མ་བཟོ་ནུག༠འ་ནི་འདི་ .htaccess གི་ཡིག་སྣོད་ནང་ལུ་ ས་གནས་ལས་ php_value mbstring.language བར་གནས་ འདི་བཙུགས་ཚུགསà¼" +INSTL_NOTICEMBSTRINGOVERLOAD="PHP mbstring ལས་རིམ་ལུ་ མང་དྲགས་འདི་བཟོ་ནུག༠འ་ནི་འདི་ .htaccess གི་ཡིག་སྣོད་ནང་ལུ་ ས་གནས་ལས་ php_value mbstring.language བར་གནས་ འདི་ངོས་ལེན་མེདཔ་བཟོ་ཚུགསà¼" +INSTL_NOTICEYOUCANSTILLINSTALL="
རིམ་སྒྲིག་བཟོ་བཀོད་འདི་མཇུག་ལུ་གསལ་སྟོན་འབད་ནི་ཨིནམ་ལས་ à½à¾±à½¼à½‘་ར་ བཙུགས་བཞག་འདི་ད་ལྟོ་ཡང༌འཕྲོ་མà½à½´à½‘་འབད་ཚུགས༠à½à¾±à½¼à½‘་ར་ གསང་ཚིག་འདི་ལགཔ་གི་འབད་ བཙུགས་དགོ༠ཚིག་ཡིག་ས་à½à½¼à½„ས་ནང་ལས་ གསང་ཡིག་འདི་གདམ་à½à¼‹à½¢à¾à¾±à½–་à½à½ºà¼‹ གཙོ་རྟགས་བཀལ་ དེ་ལས་ ཡིག་སྣོད་གསརཔ་ནང་ལུ་བཙུགས༠ཡིག་སྣོད་ཀྱི་མིང་ 'configuration.php' བཟོ་སྟེ་ ས་à½à½¼à½„ས་རྩ་ལག་གི་ཡིག་སྣོད་ནང་ལུ་བཙུགསà¼" +INSTL_OUTPUT_BUFFERING="གྲུབ་འབྲསའི་བར་ཤུགས་བཟེད་མིà¼" +INSTL_PARSE_INI_FILE_AVAILABLE="INI པར་སར་(Parser) རྒྱབ་རྟེནà¼" +INSTL_PHP_VERSION="PHP à½à½¼à½“་རིམà¼" +INSTL_PHP_VERSION_NEWER="PHP à½à½¼à½“་རིམ༠>= %s" +INSTL_REGISTER_GLOBALS="རྒྱལ་སྤྱིའི་à½à½¼à¼‹à½–ཀོད་ཚུ་ ངོས་ལེན་མེདཔ་བཟོà¼" +INSTL_SAFE_MODE="ཉེན་སྲུང་ཅན་གྱི་ལམ་ལུགསà¼" +INSTL_SESSION_AUTO_START="ནམ་དུས་ ངམ་ཤུགས་ཀྱི་འགོ་བཙུགསà¼" +INSTL_WRITABLE="%s འདི་བྲི་བà½à½´à½–་མིà¼" +INSTL_XML_SUPPORT="XML རྒྱབ་རྟེནà¼" +INSTL_ZIP_SUPPORT_AVAILABLE="བྱུང་བའི་ ZIP གི་རྒྱབ་རྟེནà¼" +INSTL_ZLIB_COMPRESSION_SUPPORT="Zlib སྨན་རས་ཀྱི་རྒྱབ་རྟེནà¼" +INSTL_PROCESS_BUSY="བྱ་རིམ་འདི་ཡར་རྒྱས་འགྱོ་དེ་་༠ཨ་ཙི་ཅིག་སྒུག་གནངà¼" + +;Global strings +JADMINISTRATOR="བདག་སà¾à¾±à½¼à½„་པà¼" +JCHECK_AGAIN="ལོག་སྟེན་ཞིབ་དཔྱད་འབདà¼" +JERROR="འཛོལ་བà¼" +JEMAIL="གློག་འཕྲིནà¼" +JGLOBAL_ISFREESOFTWARE="གློག་རིག་མཉེན་ཆས་ %s འདི་ %s གི་འོག་ལུ་གསར་བà½à½¼à½“་འབད་ཡོདཔà¼" +JGLOBAL_LANGUAGE_VERSION_NOT_PLATFORM="སà¾à½‘་ཡིག་ཆ་ཚང༌འདི་ འ་ནི་ཇུམ་ལ་(Joomla)གི་à½à½¼à½“་རིམ་དང་ཅིག་à½à½¢à¼‹ མà½à½´à½“་འགྲིགས་མིན་འདུག༠རྗོད་ཚིག་ལ་ལུ་འདི་མ་ཚངམ་འོངà¼" +JGLOBAL_SELECT_AN_OPTION="གདམ་à½à¼‹à½“ང་ལས་གདམ་à½à¼‹à½¢à¾à¾±à½–à¼" +JGLOBAL_SELECT_NO_RESULTS_MATCH="གྲུབ་འབྲས་གཅིག་ཡང་ མི་མà½à½´à½“་པས༠" +JGLOBAL_SELECT_SOME_OPTIONS="གདམ་à½à¼‹à½šà½´à¼‹à½£à½¦à¼‹à½£à¼‹à½£à½´à¼‹à½‚དམ་à½à¼‹à½¢à¾à¾±à½–à¼" +JINVALID_TOKEN="འཕྲལ་གྱི་ཞུ་བ་ནང་ལུ་ ཆ་གནས་མེད་པའི་ཉེན་སྲུང༌གི་བརྡ་མཚོན་ཡོདཔ་ལས་ à½à½¦à¼‹à½£à½ºà½“་མེད་འབད༠ཤོག་ལེབ་འདི་à½à¼‹à½‚སོ་བཞིནམ་ལས་ ལོག་སྟེ་དཔའ་བཅམà¼" +JNEXT="ཤུལ་མམà¼" +JNO="མེནà¼" +JNOTICE="གསལ་བསྒྲགས༠" +JOFF="ངོས་ལེན་འབད་མ་ཚུགསཔ་བཟོà¼" +JON="ངོས་ལེན་འབད་ཚུགསཔ་བཟོà¼" +JPREVIOUS="ཧེ་མà¼" +JSITE="ས་à½à½¼à½„སà¼" +JUSERNAME="ལག་ལེན་པའི་མིངà¼" +JYES="ཨིནà¼" + +; Framework strings necessary when no lang pack is available +JLIB_DATABASE_ERROR_CONNECT_MYSQL="མའི་ཨེས་ཀིà½à¼‹à½¨à½ºà½£à¼‹(MySQL) ལུ་མà½à½´à½‘་མ་ཚུགསà¼" +JLIB_DATABASE_ERROR_DATABASE="གནས་སྡུད་གཞི་མཛོད་ལུ་འཛོལ་བ་འབྱུང་ཡིà¼" +JLIB_DATABASE_ERROR_LOAD_DATABASE_DRIVER="གནས་སྡུད་གཞི་མཛོད་ཀྱི་ ལྷག་འཛིནམ་འདི་བཙུགས་མ་ཚུགས༠: %s" +JLIB_ENVIRONMENT_SESSION_EXPIRED="དུས་ཡུན་འདི་ཛོགས་སོ་ནུག་ ཤོག་ལེབ་འདི་ལོག་སྟེ་བà½à½¼à½“་གནངà¼" +JLIB_FILESYSTEM_ERROR_COPY_FAILED="འདྲ་བཤུས་རà¾à¾±à½–་མ་ཚུགསà¼" +JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER_FILES="JFolder: :ཡིག་སྣོད་ཚུ་ : འབྲེལ་ལམ་འདི་ཡིག་སྣོད་མེན་པས༠འབྲེལ་ལམ་ : %s" +JLIB_FORM_FIELD_INVALID="ཆ་གནས་མེད་པའི་སà½à½¼à½„ས་ : " +JLIB_FORM_VALIDATE_FIELD_INVALID="ཆ་གནས་མེད་པའི་སà½à½¼à½„ས་ : %s" +JLIB_FORM_VALIDATE_FIELD_REQUIRED="ས་à½à½¼à½„ས་དགོཔ་ : %s" +JLIB_INSTALLER_ERROR_FAIL_COPY_FILE="JInstaller: :བཙུགས་བཞག་འབད་ : ཡིག་སྣོད་ %1$s ལས་ %2$s ལུ་ འདྲ་བཤུས་རà¾à¾±à½–་ནི་མà½à½¢à¼‹à½ à½à¾±à½¼à½£à¼‹à½˜à¼‹à½šà½´à½‚སà¼" +JLIB_INSTALLER_NOT_ERROR="འཛོལ་བ་འདི་ TinyMCE སà¾à½‘་ཡིག་གི་ཡིག་སྣོད་ཚུ་ བཙུགས་བཞག་འབད་སà¾à½–ས་ཀྱི་ཨིན་པ་ཅིན་ སà¾à½‘་ཡིག་བཙུགས་ནི་ལུ་ བྱེམ་མི་འབྱུང་༠སà¾à½‘་ཡིག་གི་ཆ་ཚང་བཟོ་བའི་སà¾à½–ས་ ཇུམ་ལ་(Joomla) ༣.༢.༠ དང་ཅིག་à½à½¢à¼‹à½¦à¾”་གོང་སྟེ་བཟོ་ཡོདཔ་ལས་ TinyMCE སà¾à½‘་ཡིག་གི་ཡིག་སྣོད་ཚུ་སོ་སོ་འབད་ བཙུགས་བཞག་འབད༠ད་འདི་ ནང་སྙིང་ནང་ལུ་བཙུགས་ཡོདཔ་ལས་ བཙུགས་བཞག་འབད་མེད་དགོà¼" +JLIB_UTIL_ERROR_CONNECT_DATABASE="JDatabase: :getInstance: གནས་སྡུད་གཞི་མཛོད་ལུ་མà½à½´à½‘་མ་ཚུགསà¼
joomla.library: %1$s - %2$s" + +; Strings for the language debugger +JDEBUG_LANGUAGE_FILES_IN_ERROR="སà¾à½‘་ཡིག་ཡིག་སྣོད་བཟོ་ནི་ལུ་ འཛོལ་བ་འབྱུང་ཡིà¼" +JDEBUG_LANGUAGE_UNTRANSLATED_STRING="སà¾à½‘་སྒྱུར་མ་རà¾à¾±à½–་ཡོད་མི་རྗོད་ཚིག་ཚུà¼" +JNONE="ག་ཡང་མེནམà¼" + +; Necessary for errors +ADMIN_EMAIL="བདག་སà¾à¾±à½¼à½„་པའི་གློག་འཕྲིནà¼" +ADMIN_PASSWORD="བདག་སà¾à¾±à½¼à½„་པའི་གསང་ཡིགà¼" +ADMIN_PASSWORD2="བདག་སà¾à¾±à½¼à½„་པའི་གསང་ཡིག་à½à½“་à½à½“་བཟོà¼" +SITE_NAME="ས་à½à½¼à½„ས་ཀྱི་མིངà¼" + +; Database types (allows for a more descriptive label than the internal name) +MYSQL="MySQL" +MYSQLI="MySQLi" +ORACLE="Oracle" +PDOMYSQL="MySQL (PDO)" +POSTGRESQL="PostgreSQL" +SQLAZURE="Microsoft SQL Azure" +SQLITE="SQLite" +SQLSRV="Microsoft SQL Server" \ No newline at end of file diff --git a/installation/language/dz-BT/dz-BT.xml b/installation/language/dz-BT/dz-BT.xml new file mode 100644 index 0000000000000..e543c31504b23 --- /dev/null +++ b/installation/language/dz-BT/dz-BT.xml @@ -0,0 +1,21 @@ + + + Dzongkha (Bhutan) + 3.5.0 + November 2015 + Dzongkha Translation Team + Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. + GNU General Public License version 2 or later; see LICENSE.txt + + + dz-BT.ini + + + Dzongkha (Bhutan) + dz-BT + 0 + + + diff --git a/installation/language/nb-NO/nb-NO.ini b/installation/language/nb-NO/nb-NO.ini index 5944a4e9de87a..f6964b39c0548 100644 --- a/installation/language/nb-NO/nb-NO.ini +++ b/installation/language/nb-NO/nb-NO.ini @@ -87,7 +87,7 @@ INSTL_SAMPLE_LEARN_SET="Engelsk eksempeldata - Lær Joomla!" INSTL_SAMPLE_TESTING_SET="Engelsk eksempeldata - Test" INSTL_SITE_INSTALL_SAMPLE_NONE_DESC="Installer Joomla med bare en meny og et innloggingsskjema, uten noe innhold." INSTL_SAMPLE_BLOG_SET_DESC="Installer Joomla med noen fÃ¥ artikler og blogg-relaterte moduler som 'Eldre innlegg', 'Bloggrull' og 'Mest lest'." -INSTL_SAMPLE_BROCHURE_SET_DESC="Installer Joomla med noen fÃ¥ sider (en meny med sidene 'Hjem', 'Om oss', 'Nyheter' og 'Kontakt oss'), samt moduler som 'Søk', 'Egendfinert HTML' og 'Innlogging'." +INSTL_SAMPLE_BROCHURE_SET_DESC="Installer Joomla med noen fÃ¥ sider (en meny med sidene 'Hjem', 'Om oss', 'Nyheter' og 'Kontakt oss'), samt moduler som 'Søk', 'Egendefinert' og 'Innlogging'." INSTL_SAMPLE_DATA_SET_DESC="Installer Joomla med en side (en meny med en lenke), samt moduler som 'Siste nyheter' og 'Innlogging'." INSTL_SAMPLE_LEARN_SET_DESC="Installer Joomla med eksempelartikler som forklarer hvordan systemet fungerer." INSTL_SAMPLE_TESTING_SET_DESC="Installer Joomla med alle mulige menytyper, for rask og enkel hjelp til testing av hele systemet." @@ -116,19 +116,19 @@ INSTL_EMAIL_NOT_SENT="E-post kunne ikke sendes." ;Complete view INSTL_COMPLETE_ADMINISTRATION_LOGIN_DETAILS="Innloggingsdetaljer for administrasjonspanelet" -; The word 'installation' should not be translated as it is a physical folder. Wtf do you know ... +; The word 'installation' should not be translated as it is a physical folder. INSTL_COMPLETE_ERROR_FOLDER_ALREADY_REMOVED="Installasjonsmappen er allerede slettet." -; The word 'installation' should not be translated as it is a physical folder. Wtf do you know ... +; The word 'installation' should not be translated as it is a physical folder. INSTL_COMPLETE_ERROR_FOLDER_DELETE="Installasjonsmappen kunne ikke slettes, du mÃ¥ slette denne manuelt." -; The word 'installation' should not be translated as it is a physical folder. Wtf do you know ... +; The word 'installation' should not be translated as it is a physical folder. INSTL_COMPLETE_FOLDER_REMOVED="Installasjonsmappen ble slettet" INSTL_COMPLETE_LANGUAGE_1="Joomla! i ditt eget sprÃ¥k?" -; The word 'installation' should not be translated as it is a physical folder. Wtf do you know ... +; The word 'installation' should not be translated as it is a physical folder. INSTL_COMPLETE_LANGUAGE_DESC="Før du sletter installasjonsmappen kan du installere ekstra sprÃ¥k. Klikk følgende knapp dersom du ønsker Ã¥ legge til ekstra sprÃ¥k for Joomla-installasjonen." INSTL_COMPLETE_LANGUAGE_DESC2="Merk: Installasjonsskriptet vil behøve tilgang til Internett for Ã¥ kunne laste ned og installere flere sprÃ¥k.
Noen serverkonfigurasjoner sperrer dessverre for dette. Dersom dette er tilfellet for deg er det ingen fare, du vil kunne installere flere språk senere via administrasjonspanelet." -; The word 'installation' should not be translated as it is a physical folder. Wtf do you know ... +; The word 'installation' should not be translated as it is a physical folder. INSTL_COMPLETE_REMOVE_FOLDER="Slett installasjonsmappen" -; The word 'installation' should not be translated as it is a physical folder. Wtf do you know ... +; The word 'installation' should not be translated as it is a physical folder. INSTL_COMPLETE_REMOVE_INSTALLATION="HUSK Å SLETTE INSTALLASJONSMAPPEN
Du vil ikke kunne bruke nettstedet før installasjonsmappen er slettet. Dette er en sikkerhetsfunksjon for Joomla!." INSTL_COMPLETE_TITLE="Gratulerer! Joomla! er nå installert." INSTL_COMPLETE_INSTALL_LANGUAGES="Ekstra steg: Installer språk" @@ -319,3 +319,4 @@ POSTGRESQL="PostgreSQL" SQLAZURE="Microsoft SQL Azure" SQLITE="SQLite" SQLSRV="Microsoft SQL Server" + diff --git a/installation/language/nb-NO/nb-NO.xml b/installation/language/nb-NO/nb-NO.xml index 92a41c91a724e..98e482c1235c9 100644 --- a/installation/language/nb-NO/nb-NO.xml +++ b/installation/language/nb-NO/nb-NO.xml @@ -1,9 +1,9 @@ Norwegian bokmål (nb-NO) - 3.4.4 + 3.5.0 August 2015 Norsk Joomla! Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. diff --git a/installation/language/nn-NO/nn-NO.ini b/installation/language/nn-NO/nn-NO.ini index 70f22b9f99fdb..49cf24e36fc22 100644 --- a/installation/language/nn-NO/nn-NO.ini +++ b/installation/language/nn-NO/nn-NO.ini @@ -87,7 +87,7 @@ INSTL_SAMPLE_LEARN_SET="Engelsk dømedata - Lær Joomla!" INSTL_SAMPLE_TESTING_SET="Engelsk dømedata - Test" INSTL_SITE_INSTALL_SAMPLE_NONE_DESC="Installer Joomla med berre ein meny og et innloggingsskjema, utan noko innhald." INSTL_SAMPLE_BLOG_SET_DESC="Installer Joomla med nokre få artiklar og blogg-relaterte modular som 'Eldre innlegg', 'Bloggrull' og 'Mest lest'." -INSTL_SAMPLE_BROCHURE_SET_DESC="Installer Joomla med nokre få sider (ein meny med sidene 'Heim', 'Om oss', 'Nyhende' og 'Kontakt oss'), og dessutan modular som 'Søk', 'Egendfinert HTML' og 'Innlogging'." +INSTL_SAMPLE_BROCHURE_SET_DESC="Installer Joomla med nokre få sider (ein meny med sidene 'Heim', 'Om oss', 'Nyhende' og 'Kontakt oss'), og dessutan modular som 'Søk', 'Egendefinert' og 'Innlogging'." INSTL_SAMPLE_DATA_SET_DESC="Installer Joomla med ei side (ein meny med ei lenkje), og dessutan modular som 'Siste nyhende' og 'Innlogging'." INSTL_SAMPLE_LEARN_SET_DESC="Installer Joomla med dømeartiklar som forklarer korleis systemet fungerer." INSTL_SAMPLE_TESTING_SET_DESC="Installer Joomla med alle moglege menytypar, for rask og enkel hjelp til testing av heile systemet." @@ -116,13 +116,19 @@ INSTL_EMAIL_NOT_SENT="E-post kunne ikkje sendast." ;Complete view INSTL_COMPLETE_ADMINISTRATION_LOGIN_DETAILS="Innloggingsdetaljer for administrasjonspanelet" +; The word 'installation' should not be translated as it is a physical folder. INSTL_COMPLETE_ERROR_FOLDER_ALREADY_REMOVED="Installasjonsmappa er allereie slettet." +; The word 'installation' should not be translated as it is a physical folder. INSTL_COMPLETE_ERROR_FOLDER_DELETE="Installasjonsmappa kunne ikkje slettes, du må sletta denne manuelt." +; The word 'installation' should not be translated as it is a physical folder. INSTL_COMPLETE_FOLDER_REMOVED="Installasjonsmappa vart slettet" INSTL_COMPLETE_LANGUAGE_1="Joomla! i ditt eige språk?" +; The word 'installation' should not be translated as it is a physical folder. INSTL_COMPLETE_LANGUAGE_DESC="Før du slettar installasjonsmappa kan du installera ekstra språk. Klikkar følgjande knapp dersom du ynskjer å leggja til ekstra språk for Joomla-installasjonen." INSTL_COMPLETE_LANGUAGE_DESC2="Merk: Installasjonsskriptet vil trenga tilgjenge til Internett for å kunne lasta ned og installera fleire språk.
Nokre serverkonfigurasjoner sperrar di verre for dette. Dersom dette er tilfellet for deg er det ingen fare, du vil kunna installera fleire språk seinare via administrasjonspanelet." +; The word 'installation' should not be translated as it is a physical folder. INSTL_COMPLETE_REMOVE_FOLDER="Slett installasjonsmappa" +; The word 'installation' should not be translated as it is a physical folder. INSTL_COMPLETE_REMOVE_INSTALLATION="HUGS Å SLETTA INSTALLASJONSMAPPA
Du vil ikkje kunna bruka nettstaden før installasjonsmappa er slettet. Dette er ein tryggleiksfunksjon for Joomla!." INSTL_COMPLETE_TITLE="Gratulerer! Joomla! er no installert." INSTL_COMPLETE_INSTALL_LANGUAGES="Ekstra steg: Installer sprÃ¥k" @@ -312,4 +318,4 @@ PDOMYSQL="MySQL (PDO)" POSTGRESQL="PostgreSQL" SQLAZURE="Microsoft SQL Azure" SQLITE="SQLite" -SQLSRV="Microsoft SQL Servar" \ No newline at end of file +SQLSRV="Microsoft SQL Servar" diff --git a/installation/language/nn-NO/nn-NO.xml b/installation/language/nn-NO/nn-NO.xml index 1e2f34b0b23fc..cd8c364fcdc70 100644 --- a/installation/language/nn-NO/nn-NO.xml +++ b/installation/language/nn-NO/nn-NO.xml @@ -1,9 +1,9 @@ Norwegian Nynorsk (nn-NO) - 3.4.2 + 3.5.0 2015-04-14 Norsk Joomla and Skolelinux Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. diff --git a/installation/language/zh-CN/zh-CN.ini b/installation/language/zh-CN/zh-CN.ini index e63578953faee..0f8ee184ccc6d 100644 --- a/installation/language/zh-CN/zh-CN.ini +++ b/installation/language/zh-CN/zh-CN.ini @@ -36,7 +36,7 @@ INSTL_DATABASE_NO_SCHEMA="没有该数æ®åº“类型的数æ®åº“模å¼ï¼ˆdatabase INSTL_DATABASE_OLD_PROCESS_DESC="以å‰å®‰è£…çš„joomla!在安装过程中将会被备份" INSTL_DATABASE_OLD_PROCESS_LABEL="旧数æ®çš„处ç†" INSTL_DATABASE_PASSWORD_DESC="为网站安全起è§ï¼Œè¯·ä¸ºmysql用户设置密ç " -INSTL_DATABASE_PASSWORD_LABEL="密ç " +INSTL_DATABASE_PASSWORD_LABEL="æ•°æ®åº“密ç " INSTL_DATABASE_PREFIX_DESC="为数æ®è¡¨é€‰æ‹©ä¸€ä¸ªå‰ç¼€æˆ–者使用éšæœºäº§ç”Ÿçš„å‰ç¼€ã€‚ç†æƒ³çš„å‰ç¼€æ˜¯ï¼šä¸‰å››ä¸ªå­—符长度,仅包å«å­—æ¯å¹¶ä¸”以下划线结æŸã€‚请确ä¿æ•°æ®åº“里的其它数æ®è¡¨æ²¡æœ‰ä½¿ç”¨è¯¥å‰ç¼€ã€‚一般也ä¸è¦ä½¿ç”¨ "bak_" ,因该å‰ç¼€å¸¸ç”¨äºŽå¤‡ä»½æ•°æ®è¡¨ã€‚" INSTL_DATABASE_PREFIX_LABEL="æ•°æ®è¡¨å‰ç¼€" INSTL_DATABASE_PREFIX_MSG="æ•°æ®è¡¨å‰ç¼€å¿…须以字æ¯å¼€å§‹ï¼Œä¸­é—´æ˜¯æ•°å­—或字æ¯ï¼Œæœ€åŽä»¥ä¸‹åˆ’线结æŸã€‚" @@ -74,7 +74,7 @@ INSTL_ADMIN_USER_DESC="设置您网站超级管ç†å‘˜çš„用户å" INSTL_SITE_NAME_LABEL="网站å称" INSTL_SITE_NAME_DESC="请填写您的网站的å称。" INSTL_SITE_METADESC_LABEL="网站æè¿°" -INSTL_SITE_METADESC_TITLE_LABEL="请填写æ供给æœç´¢å¼•æ“Žçš„网站的æ述。一般最好是20个字。" +INSTL_SITE_METADESC_TITLE_LABEL="请填写æ供给æœç´¢å¼•æ“Žçš„网站的æ述。一般针对谷歌最好是20个字。" INSTL_SITE_OFFLINE_LABEL="网站关闭" INSTL_SITE_OFFLINE_TITLE_LABEL="设置为完æˆå®‰è£…åŽå…³é—­ç½‘ç«™å‰å°ã€‚æ­¤åŽæ‚¨å¯ä»¥éšæ—¶é€šè¿‡å…¨å±€é…置开放网站。" INSTL_SITE_INSTALL_SAMPLE_LABEL="安装示范数æ®" @@ -87,7 +87,7 @@ INSTL_SAMPLE_LEARN_SET="学习型Joomla示范数æ®ï¼ˆè‹±æ–‡ï¼‰" INSTL_SAMPLE_TESTING_SET="帮助测试示范数æ®ï¼ˆè‹±æ–‡ï¼‰" INSTL_SITE_INSTALL_SAMPLE_NONE_DESC="安装åŽåªæœ‰ä¸€ä¸ªèœå•å’Œä¸€ä¸ªç™»å½•è¡¨å•ï¼Œä¸å®‰è£…任何示范内容。" INSTL_SAMPLE_BLOG_SET_DESC="安装åŽç½‘站里将有类似åšå®¢çš„包å«çƒ­é—¨æ–‡ç« ç­‰ç­‰çš„基础排版。" -INSTL_SAMPLE_BROCHURE_SET_DESC="安装åŽç½‘站内容为手册风格。èœå•æœ‰â€œé¦–页â€ã€â€œå…³äºŽæˆ‘们â€ã€â€œæ–°é—»â€ã€â€œè”系我们â€ã€‚模å—有æœç´¢ã€è‡ªå®šä¹‰HTML和登录框。" +INSTL_SAMPLE_BROCHURE_SET_DESC="安装åŽç½‘站内容为手册风格。èœå•æœ‰â€œé¦–页â€ã€â€œå…³äºŽæˆ‘们â€ã€â€œæ–°é—»â€ã€â€œè”系我们â€ã€‚模å—有æœç´¢ã€è‡ªå®šä¹‰å’Œç™»å½•æ¡†ã€‚" INSTL_SAMPLE_DATA_SET_DESC="安装åŽç½‘站将åªæœ‰ä¸€ä¸ªé¡µé¢ï¼ˆä¸€ä¸ªèœå•é¡¹ï¼‰å’Œæœ€æ–°æ–‡ç« ã€ç™»å½•æ¡†ç­‰æ¨¡å—。" INSTL_SAMPLE_LEARN_SET_DESC="安装åŽç½‘站里将有一些文章介ç»Joomla的基础概念。" INSTL_SAMPLE_TESTING_SET_DESC="安装所有的示范内容,便于全é¢æµ‹è¯•Joomla。" @@ -101,7 +101,7 @@ INSTL_SUMMARY_EMAIL_PASSWORDS_LABEL="在Email中包å«å¯†ç ã€‚" INSTL_SUMMARY_EMAIL_PASSWORDS_DESC="警示:强烈建议您ä¸è¦é€šè¿‡Emailå‘é€æˆ–ä¿å­˜å¯†ç ã€‚" ;Installing view -INSTL_INSTALLING="安装中..." +INSTL_INSTALLING="安装中……" INSTL_INSTALLING_DATABASE_BACKUP="旧数æ®è¡¨å¤‡ä»½ä¸­" INSTL_INSTALLING_DATABASE_REMOVE="旧数æ®è¡¨åˆ é™¤ä¸­" INSTL_INSTALLING_DATABASE="æ•°æ®è¡¨åˆ›å»ºä¸­" @@ -116,14 +116,20 @@ INSTL_EMAIL_NOT_SENT="无法å‘é€Email。" ;Complete view INSTL_COMPLETE_ADMINISTRATION_LOGIN_DETAILS="管ç†å‘˜ç™»é™†ç”¨çš„资料" -INSTL_COMPLETE_ERROR_FOLDER_ALREADY_REMOVED="已删除安装目录。" -INSTL_COMPLETE_ERROR_FOLDER_DELETE="安装目录无法删除,请手动删除。" -INSTL_COMPLETE_FOLDER_REMOVED="安装目录æˆåŠŸç§»é™¤ã€‚" +; The word 'installation' should not be translated as it is a physical folder. +INSTL_COMPLETE_ERROR_FOLDER_ALREADY_REMOVED="已删除目录installation。" +; The word 'installation' should not be translated as it is a physical folder. +INSTL_COMPLETE_ERROR_FOLDER_DELETE="目录installation无法删除,请手动删除。" +; The word 'installation' should not be translated as it is a physical folder. +INSTL_COMPLETE_FOLDER_REMOVED="æˆåŠŸåˆ é™¤ç›®å½•installation。" INSTL_COMPLETE_LANGUAGE_1="创建使用您æ¯è¯­çš„网站åŠï¼ˆæˆ–)自动创建多语言网站" -INSTL_COMPLETE_LANGUAGE_DESC="删除安装文件夹å‰å¯ä¸ºæœ¬ç«™å®‰è£…指定语言或多语言。请点击以下按钮:" +; The word 'installation' should not be translated as it is a physical folder. +INSTL_COMPLETE_LANGUAGE_DESC="删除目录iinstallationå‰å¯ä¸ºæœ¬ç«™å®‰è£…指定语言或多语言。请点击以下按钮:" INSTL_COMPLETE_LANGUAGE_DESC2="æ示:您将需è¦è®¿é—®æƒé™æ¥å…许Joomla下载和安装新的语言。
有的æœåŠ¡å™¨çš„é…ç½®ä¸å…许Joomla这样安装语言。如您é‡åˆ°çš„正是这ç§æƒ…况,ä¸ç”¨æ‹…心,您还能ç¨åŽé€šè¿‡ç™»å½•Joomla管ç†åŽå°æ¥å®‰è£…语言。" -INSTL_COMPLETE_REMOVE_FOLDER="删除安装目录" -INSTL_COMPLETE_REMOVE_INSTALLATION="请记ä½è¦å½»åº•åˆ é™¤å®‰è£…目录(installation)
在目录 "installation" 被删除之å‰ï¼Œæ‚¨æ— æ³•è¿›è¡Œä¸‹ä¸€æ­¥æ“作。这是Joomla!的一项安全功能。" +; The word 'installation' should not be translated as it is a physical folder. +INSTL_COMPLETE_REMOVE_FOLDER="删除目录installation" +; The word 'installation' should not be translated as it is a physical folder. +INSTL_COMPLETE_REMOVE_INSTALLATION="请记ä½è¦å½»åº•åˆ é™¤ç›®å½•installation
在目录 "installation" 被删除之å‰ï¼Œæ‚¨æ— æ³•è¿›è¡Œä¸‹ä¸€æ­¥æ“作。这是Joomla!的一项安全功能。" INSTL_COMPLETE_TITLE="æ­å–œï¼å·²ç»æˆåŠŸå®‰è£…您的Joomla网站ï¼" INSTL_COMPLETE_INSTALL_LANGUAGES="特别推è:安装语言" @@ -299,11 +305,11 @@ JNONE="æ— " ;Necessary for errors ADMIN_EMAIL="您的邮箱" -ADMIN_PASSWORD="系统管ç†å‘˜å¯†ç " -ADMIN_PASSWORD2="确认系统管ç†å‘˜å¯†ç " +ADMIN_PASSWORD="管ç†å‘˜å¯†ç " +ADMIN_PASSWORD2="确认管ç†å‘˜å¯†ç " SITE_NAME="网站å称" -; æ•°æ®åº“类型 (å…许一个比内部å称å…许更具æ述性的标签) +; æ•°æ®åº“类型 (å…许比内部å称å…许更具æ述性的标签) MYSQL="MySQL" MYSQLI="MySQLi" ORACLE="Oracle" diff --git a/installation/language/zh-CN/zh-CN.xml b/installation/language/zh-CN/zh-CN.xml index da36deb9d3eda..7d9a43c6a42bb 100644 --- a/installation/language/zh-CN/zh-CN.xml +++ b/installation/language/zh-CN/zh-CN.xml @@ -1,9 +1,9 @@ Chinese Simplified 简体中文 - 3.4.0 + 3.5.0 2015.3.15 Joomla! Project admin@joomla.org diff --git a/language/en-GB/en-GB.com_contact.ini b/language/en-GB/en-GB.com_contact.ini index 826042703ec10..59878e062bbaf 100644 --- a/language/en-GB/en-GB.com_contact.ini +++ b/language/en-GB/en-GB.com_contact.ini @@ -3,19 +3,20 @@ ; 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 - COM_CONTACT_ADDRESS="Address" COM_CONTACT_ARTICLES_HEADING="Contact's articles" COM_CONTACT_CAPTCHA_LABEL="Captcha" COM_CONTACT_CAPTCHA_DESC="Type in the textbox what you see in the image." COM_CONTACT_CAT_NUM="# of Contacts :" +COM_CONTACT_CONTACT_DEFAULT_LABEL="Send an Email" COM_CONTACT_CONTACT_EMAIL_A_COPY_DESC="Sends a copy of the message to the address you have supplied." -COM_CONTACT_CONTACT_EMAIL_A_COPY_LABEL="Send Copy to Yourself" +COM_CONTACT_CONTACT_EMAIL_A_COPY_LABEL="Send copy to yourself" COM_CONTACT_CONTACT_EMAIL_NAME_DESC="Your name." COM_CONTACT_CONTACT_EMAIL_NAME_LABEL="Name" COM_CONTACT_CONTACT_ENTER_MESSAGE_DESC="Enter your message here." COM_CONTACT_CONTACT_ENTER_MESSAGE_LABEL="Message" COM_CONTACT_CONTACT_ENTER_VALID_EMAIL="Please enter a valid email address." +COM_CONTACT_CONTACT_REQUIRED="* Required field" COM_CONTACT_CONTENT_TYPE_CONTACT="Contact" COM_CONTACT_CONTENT_TYPE_CATEGORY="Contact Category" COM_CONTACT_FILTER_LABEL="Filter Field" diff --git a/language/en-GB/en-GB.ini b/language/en-GB/en-GB.ini index 5cd00733f1dc6..5df1b9609e67b 100644 --- a/language/en-GB/en-GB.ini +++ b/language/en-GB/en-GB.ini @@ -87,7 +87,7 @@ JSITE="Site" JSTATUS="Status" JSUBMIT="Submit" JTAG="Tags" -JTAG_DESC="Add and delete tags to an item." +JTAG_DESC="Assign tags to content items. You may select a tag from the pre-defined list or enter a new tag by typing the name in the field and pressing enter." JTOOLBAR_VERSIONS="Versions" JTRASH="Trash" JTRASHED="Trashed" diff --git a/language/en-GB/en-GB.lib_joomla.ini b/language/en-GB/en-GB.lib_joomla.ini index 3fa7ce40818e0..15edc4195cd62 100644 --- a/language/en-GB/en-GB.lib_joomla.ini +++ b/language/en-GB/en-GB.lib_joomla.ini @@ -625,7 +625,7 @@ JLIB_MEDIA_ERROR_WARNINVALID_IMG="Not a valid image." JLIB_MEDIA_ERROR_WARNINVALID_MIME="Illegal or invalid mime type detected." JLIB_MEDIA_ERROR_WARNNOTADMIN="Uploaded file is not an image file and you do not have permission." -JLIB_NO_EDITOR_PLUGIN_PUBLISHED="We can't show an editor because no editor plugin is published." +JLIB_NO_EDITOR_PLUGIN_PUBLISHED="Unable to display an editor because no editor plugin is published." JLIB_PLUGIN_ERROR_LOADING_PLUGINS="Error loading Plugins: %s" JLIB_REGISTRY_EXCEPTION_LOAD_FORMAT_CLASS="Unable to load format class." @@ -635,7 +635,7 @@ JLIB_RULES_ALLOWED="Allowed" JLIB_RULES_ALLOWED_ADMIN="Allowed (Super User)" JLIB_RULES_CALCULATED_SETTING="Calculated Setting 2" JLIB_RULES_CONFLICT="Conflict" -JLIB_RULES_DATABASE_FAILURE="Failure by storing the data to the database." +JLIB_RULES_DATABASE_FAILURE="Failed storing the data to the database." JLIB_RULES_DENIED="Denied" JLIB_RULES_GROUP="%s" JLIB_RULES_GROUPS="Groups" @@ -645,8 +645,8 @@ JLIB_RULES_NOT_ALLOWED="Not Allowed." JLIB_RULES_NOT_ALLOWED_ADMIN_CONFLICT="Conflict" JLIB_RULES_NOT_ALLOWED_LOCKED="Not Allowed (Locked)" JLIB_RULES_NOT_SET="Not Set" -JLIB_RULES_REQUEST_FAILURE="Failure by sending the data to server." -JLIB_RULES_SAVE_BEFORE_CHANGE_PERMISSIONS="Please save before change permissions." +JLIB_RULES_REQUEST_FAILURE="Failed sending the data to server." +JLIB_RULES_SAVE_BEFORE_CHANGE_PERMISSIONS="Please save before changing permissions." JLIB_RULES_SELECT_ALLOW_DENY_GROUP="Allow or deny %s for users in the %s group." JLIB_RULES_SELECT_SETTING="Select New Setting 1" JLIB_RULES_SETTING_NOTES="1. If you change the setting, it will apply to this and all child groups, components and content. Note that Denied will overrule any inherited setting and also the setting in any child group, component or content. In the case of a setting conflict, Deny will take precedence. Not Set is equivalent to Denied but can be changed in child groups, components and content.
2. If you select a new setting, select Save to refresh the calculated settings." diff --git a/language/en-GB/en-GB.tpl_protostar.ini b/language/en-GB/en-GB.tpl_protostar.ini index 92ec745f14b2d..4e570e9bb4dcb 100644 --- a/language/en-GB/en-GB.tpl_protostar.ini +++ b/language/en-GB/en-GB.tpl_protostar.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 -TPL_PROTOSTAR_XML_DESCRIPTION="Continuing the space theme (Solarflare from 1.0 and Milkyway from 1.5), Protostar is the Joomla 3 site template based on Bootstrap from Twitter and the launch of the Joomla User Interface library (JUI)." +TPL_PROTOSTAR_XML_DESCRIPTION="Continuing the space theme (Solarflare from 1.0 and Milkyway from 1.5), Protostar is the Joomla 3 site template based on Bootstrap and the launch of the Joomla User Interface library (JUI)." TPL_PROTOSTAR_BACKGROUND_COLOR_DESC="Choose a background colour for static layouts. If left blank the Default (#f4f6f7) is used." TPL_PROTOSTAR_BACKGROUND_COLOR_LABEL="Background Colour" diff --git a/language/en-GB/en-GB.tpl_protostar.sys.ini b/language/en-GB/en-GB.tpl_protostar.sys.ini index 18ff60c7c05f6..f90e7f8e2c2e9 100644 --- a/language/en-GB/en-GB.tpl_protostar.sys.ini +++ b/language/en-GB/en-GB.tpl_protostar.sys.ini @@ -22,4 +22,4 @@ TPL_PROTOSTAR_POSITION_POSITION-7="Right" TPL_PROTOSTAR_POSITION_POSITION-8="Left" TPL_PROTOSTAR_POSITION_POSITION-9="Unused" TPL_PROTOSTAR_POSITION_FOOTER="Footer" -TPL_PROTOSTAR_XML_DESCRIPTION="Continuing the space theme (Solarflare from 1.0 and Milkyway from 1.5), Protostar is the Joomla 3 site template based on Bootstrap from Twitter and the launch of the Joomla User Interface library (JUI)." +TPL_PROTOSTAR_XML_DESCRIPTION="Continuing the space theme (Solarflare from 1.0 and Milkyway from 1.5), Protostar is the Joomla 3 site template based on Bootstrap and the launch of the Joomla User Interface library (JUI)." diff --git a/layouts/joomla/form/field/radio.php b/layouts/joomla/form/field/radio.php index 6962914a5b2b8..904a029332198 100644 --- a/layouts/joomla/form/field/radio.php +++ b/layouts/joomla/form/field/radio.php @@ -52,10 +52,8 @@ * %4 = any other attributes */ $format = ''; - -$alt = preg_replace('/[^a-zA-Z0-9_\-]/', '_', $name); +$alt = preg_replace('/[^a-zA-Z0-9_\-]/', '_', $name); ?> -
diff --git a/layouts/joomla/form/renderfield.php b/layouts/joomla/form/renderfield.php index 9632d8fc27ca7..6fa028f10e54d 100644 --- a/layouts/joomla/form/renderfield.php +++ b/layouts/joomla/form/renderfield.php @@ -9,6 +9,8 @@ defined('JPATH_BASE') or die; +extract($displayData); + /** * Layout variables * --------------------- @@ -17,19 +19,18 @@ * $input : (string) The input field html code */ -if (!empty($displayData['options']['showonEnabled'])) +if (!empty($options['showonEnabled'])) { JHtml::_('jquery.framework'); JHtml::_('script', 'jui/cms.js', false, true); } -$class = empty($displayData['options']['class']) ? "" : " " . $displayData['options']['class']; -$rel = empty($displayData['options']['rel']) ? "" : " " . $displayData['options']['rel']; +$class = empty($options['class']) ? '' : ' ' . $options['class']; +$rel = empty($options['rel']) ? '' : ' ' . $options['rel']; ?> -
> - -
+ +
-
+
diff --git a/layouts/joomla/form/renderlabel.php b/layouts/joomla/form/renderlabel.php index 443f1268711f1..0022ff9046750 100644 --- a/layouts/joomla/form/renderlabel.php +++ b/layouts/joomla/form/renderlabel.php @@ -9,6 +9,8 @@ defined('JPATH_BASE') or die; +extract($displayData); + /** * Layout variables * --------------------- @@ -20,31 +22,24 @@ * $position : (string) The tooltip position. Bottom for alias */ -$text = $displayData['text']; -$desc = $displayData['description']; -$for = $displayData['for']; -$req = $displayData['required']; -$classes = array_filter((array) $displayData['classes']); -$position = $displayData['position']; +$classes = array_filter((array) $classes); $id = $for . '-lbl'; $title = ''; -// If a description is specified, use it to build a tooltip. -if (!empty($desc)) +if (!empty($description)) { JHtml::_('bootstrap.tooltip'); $classes[] = 'hasTooltip'; - $title = ' title="' . JHtml::tooltipText(trim($text, ':'), $desc, 0) . '"'; + $title = ' title="' . JHtml::tooltipText(trim($text, ':'), $description, 0) . '"'; } -// If required, there's a class for that. -if ($req) +if ($required) { $classes[] = 'required'; } ?> \ No newline at end of file +  * + diff --git a/libraries/cms/form/field/helpsite.php b/libraries/cms/form/field/helpsite.php index 57adf77f2bdef..0ccca015dc547 100644 --- a/libraries/cms/form/field/helpsite.php +++ b/libraries/cms/form/field/helpsite.php @@ -52,9 +52,8 @@ protected function getOptions() protected function getInput() { JHtml::script('system/helpsite.js', false, true); - JFactory::getDocument()->addScriptDeclaration( - 'var helpsite_base = "' . addslashes(JUri::root()) . '";' - ); + + $showDefault = $this->getAttribute('showDefault') === 'false' ? 'false' : 'true'; $html = parent::getInput(); $button = ''; diff --git a/libraries/cms/html/behavior.php b/libraries/cms/html/behavior.php index 5decb0ff102bc..d4bbf50e2904c 100644 --- a/libraries/cms/html/behavior.php +++ b/libraries/cms/html/behavior.php @@ -759,8 +759,18 @@ public static function noframes() // Include jQuery JHtml::_('jquery.framework'); - $js = "jQuery(function () {if (top == self) {document.documentElement.style.display = 'block'; }" . - " else {top.location = self.location; }});"; + $js = 'jQuery(function () { + if (top == self) { + document.documentElement.style.display = "block"; + } + else + { + top.location = self.location; + } + + // Firefox fix + jQuery("input[autofocus]").focus(); + })'; $document = JFactory::getDocument(); $document->addStyleDeclaration('html { display:none }'); $document->addScriptDeclaration($js); diff --git a/libraries/cms/installer/installer.php b/libraries/cms/installer/installer.php index 627a6d9aab20b..d86464884b2bf 100644 --- a/libraries/cms/installer/installer.php +++ b/libraries/cms/installer/installer.php @@ -2223,6 +2223,7 @@ public static function parseXMLInstallFile($path) /** * Fetches an adapter and adds it to the internal storage if an instance is not set + * while also ensuring its a valid adapter name * * @param string $name Name of adapter to return * @param array $options Adapter options @@ -2235,17 +2236,14 @@ public static function parseXMLInstallFile($path) */ public function getAdapter($name, $options = array()) { - $adapter = $this->loadAdapter($name, $options); + $this->getAdapters($options); - if (!array_key_exists($name, $this->_adapters)) + if (!$this->setAdapter($name, $this->_adapters[$name])) { - if (!$this->setAdapter($name, $adapter)) - { - return false; - } + return false; } - return $adapter; + return $this->_adapters[$name]; } /** diff --git a/libraries/cms/ucm/base.php b/libraries/cms/ucm/base.php index 10cf48c7d0c06..f4091a76fa59d 100644 --- a/libraries/cms/ucm/base.php +++ b/libraries/cms/ucm/base.php @@ -106,7 +106,12 @@ protected function store($data, JTableInterface $table = null, $primaryKey = nul */ public function getType() { - return new JUcmType($this->alias); + if (!$this->type) + { + $this->type = new JUcmType($this->alias); + } + + return $this->type; } /** diff --git a/libraries/cms/ucm/content.php b/libraries/cms/ucm/content.php index 9536b52425222..72e02cc9a8239 100644 --- a/libraries/cms/ucm/content.php +++ b/libraries/cms/ucm/content.php @@ -43,11 +43,7 @@ class JUcmContent extends JUcmBase */ public function __construct(JTableInterface $table = null, $alias = null, JUcmType $type = null) { - // Setup dependencies. - $input = JFactory::getApplication()->input; - $this->alias = isset($alias) ? $alias : $input->get('option') . '.' . $input->get('view'); - - $this->type = isset($type) ? $type : $this->getType(); + parent::__construct($alias, $type); if ($table) { diff --git a/libraries/cms/version/version.php b/libraries/cms/version/version.php index e924d3a35866d..3ad9244829819 100644 --- a/libraries/cms/version/version.php +++ b/libraries/cms/version/version.php @@ -70,7 +70,7 @@ final class JVersion * @var string * @since 3.5 */ - const RELDATE = '06-November-2015'; + const RELDATE = '21-December-2015'; /** * Release time. @@ -78,7 +78,7 @@ final class JVersion * @var string * @since 3.5 */ - const RELTIME = '24:00'; + const RELTIME = '16:00'; /** * Release timezone. diff --git a/libraries/joomla/database/driver/mysql.php b/libraries/joomla/database/driver/mysql.php index 95dfe322a4a95..82ebca81eab4e 100644 --- a/libraries/joomla/database/driver/mysql.php +++ b/libraries/joomla/database/driver/mysql.php @@ -190,7 +190,7 @@ public function connected() } /** - * Get the number of affected rows for the previous executed SQL statement. + * Get the number of affected rows by the last INSERT, UPDATE, REPLACE or DELETE for the previous executed SQL statement. * * @return integer The number of affected rows. * @@ -205,6 +205,8 @@ public function getAffectedRows() /** * Get the number of returned rows for the previous executed SQL statement. + * This command is only valid for statements like SELECT or SHOW that return an actual result set. + * To retrieve the number of rows affected by a INSERT, UPDATE, REPLACE or DELETE query, use getAffectedRows(). * * @param resource $cursor An optional database cursor resource to extract the row count from. * diff --git a/libraries/joomla/database/driver/mysqli.php b/libraries/joomla/database/driver/mysqli.php index 22d3a6ace0acf..d08b9875ed52d 100644 --- a/libraries/joomla/database/driver/mysqli.php +++ b/libraries/joomla/database/driver/mysqli.php @@ -216,7 +216,7 @@ public function connect() public function disconnect() { // Close the connection. - if ($this->connection) + if ($this->connection instanceof mysqli && $this->connection->stat() !== false) { foreach ($this->disconnectHandlers as $h) { @@ -307,7 +307,7 @@ public function dropTable($tableName, $ifExists = true) } /** - * Get the number of affected rows for the previous executed SQL statement. + * Get the number of affected rows by the last INSERT, UPDATE, REPLACE or DELETE for the previous executed SQL statement. * * @return integer The number of affected rows. * @@ -372,6 +372,8 @@ public function getConnectionCollation() /** * Get the number of returned rows for the previous executed SQL statement. + * This command is only valid for statements like SELECT or SHOW that return an actual result set. + * To retrieve the number of rows affected by a INSERT, UPDATE, REPLACE or DELETE query, use getAffectedRows(). * * @param resource $cursor An optional database cursor resource to extract the row count from. * diff --git a/libraries/joomla/database/driver/pdo.php b/libraries/joomla/database/driver/pdo.php index 8ae77c713b17f..9a54af2bc8dde 100644 --- a/libraries/joomla/database/driver/pdo.php +++ b/libraries/joomla/database/driver/pdo.php @@ -629,6 +629,7 @@ public function getAffectedRows() /** * Get the number of returned rows for the previous executed SQL statement. + * Only applicable for DELETE, INSERT, or UPDATE statements. * * @param resource $cursor An optional database cursor resource to extract the row count from. * diff --git a/libraries/joomla/database/driver/postgresql.php b/libraries/joomla/database/driver/postgresql.php index f1e9c5d334751..e77f0c8a9f167 100644 --- a/libraries/joomla/database/driver/postgresql.php +++ b/libraries/joomla/database/driver/postgresql.php @@ -242,7 +242,7 @@ public function dropTable($tableName, $ifExists = true) } /** - * Get the number of affected rows for the previous executed SQL statement. + * Get the number of affected rows by the last INSERT, UPDATE, REPLACE or DELETE for the previous executed SQL statement. * * @return integer The number of affected rows in the previous operation * @@ -286,6 +286,8 @@ public function getConnectionCollation() /** * Get the number of returned rows for the previous executed SQL statement. + * This command is only valid for statements like SELECT or SHOW that return an actual result set. + * To retrieve the number of rows affected by a INSERT, UPDATE, REPLACE or DELETE query, use getAffectedRows(). * * @param resource $cur An optional database cursor resource to extract the row count from. * diff --git a/libraries/joomla/database/importer/mysqli.php b/libraries/joomla/database/importer/mysqli.php index f51614d2f54ec..94cb072d5dc66 100644 --- a/libraries/joomla/database/importer/mysqli.php +++ b/libraries/joomla/database/importer/mysqli.php @@ -41,6 +41,49 @@ public function check() return $this; } + /** + * Get the SQL syntax to add a table. + * + * @param SimpleXMLElement $table The table information. + * + * @return string + * + * @since 11.1 + * @throws RuntimeException + */ + protected function xmlToCreate(SimpleXMLElement $table) + { + $existingTables = $this->db->getTableList(); + $tableName = (string) $table['name']; + + if (in_array($tableName, $existingTables)) + { + throw new RuntimeException('The table you are trying to create already exists'); + } + + $createTableStatement = 'CREATE TABLE ' . $this->db->quoteName($tableName) . ' ('; + + foreach ($table->xpath('field') as $field) + { + $createTableStatement .= $this->getColumnSQL($field) . ', '; + } + + $newLookup = $this->getKeyLookup($table->xpath('key')); + + // Loop through each key in the new structure. + foreach ($newLookup as $key) + { + $createTableStatement .= $this->getKeySQL($key) . ', '; + } + + // Remove the comma after the last key + $createTableStatement = rtrim($createTableStatement, ', '); + + $createTableStatement .= ')'; + + return $createTableStatement; + } + /** * Get the SQL syntax to add a column. * diff --git a/libraries/joomla/form/field.php b/libraries/joomla/form/field.php index 6fa2b8754a08a..f1223bc0c6943 100644 --- a/libraries/joomla/form/field.php +++ b/libraries/joomla/form/field.php @@ -923,9 +923,9 @@ public function renderField($options = array()) $options['hiddenLabel'] = true; } - if ($showon = $this->getAttribute('showon')) + if (($showon = $this->getAttribute('showon'))) { - $showon = explode(':', $showon, 2); + $showon = explode(':', $showon, 2); $options['class'] .= ' showon_' . implode(' showon_', explode(',', $showon[1])); $id = $this->getName($showon[0]); $id = $this->multiple ? str_replace('[]', '', $id) : $id; diff --git a/libraries/joomla/log/log.php b/libraries/joomla/log/log.php index b7e11e64c7b87..6237108d78bc2 100644 --- a/libraries/joomla/log/log.php +++ b/libraries/joomla/log/log.php @@ -199,10 +199,18 @@ protected function addLoggerInternal(array $options, $priorities = self::ALL, $c // Special case - if a Closure object is sent as the callback (in case of JLogLoggerCallback) // Closure objects are not serializable so swap it out for a unique id first then back again later - if (isset($options['callback']) && is_a($options['callback'], 'closure')) + if (isset($options['callback'])) { - $callback = $options['callback']; - $options['callback'] = spl_object_hash($options['callback']); + if (is_a($options['callback'], 'closure')) + { + $callback = $options['callback']; + $options['callback'] = spl_object_hash($options['callback']); + } + elseif (is_array($options['callback']) && count($options['callback']) == 2 && is_object($options['callback'][0])) + { + $callback = $options['callback']; + $options['callback'] = spl_object_hash($options['callback'][0]) . '::' . $options['callback'][1]; + } } // Generate a unique signature for the JLog instance based on its options. diff --git a/libraries/joomla/microdata/microdata.php b/libraries/joomla/microdata/microdata.php index a42ab369694c5..7252265d8e794 100644 --- a/libraries/joomla/microdata/microdata.php +++ b/libraries/joomla/microdata/microdata.php @@ -17,7 +17,7 @@ class JMicrodata { /** - * Array with all available Types and Properties + * Array with all available Types and Properties from the http://schema.org vocabulary * * @var array * @since 3.2 @@ -25,7 +25,7 @@ class JMicrodata protected static $types = null; /** - * The Schema.org Type + * The Type * * @var string * @since 3.2 @@ -41,7 +41,7 @@ class JMicrodata protected $property = null; /** - * The Human value or Machine value + * The Human content * * @var string * @since 3.2 @@ -49,7 +49,7 @@ class JMicrodata protected $content = null; /** - * The Machine value + * The Machine content * * @var string * @since 3.2 @@ -57,7 +57,7 @@ class JMicrodata protected $machineContent = null; /** - * Fallback Type + * The Fallback Type * * @var string * @since 3.2 @@ -65,7 +65,7 @@ class JMicrodata protected $fallbackType = null; /** - * Fallback Property + * The Fallback Property * * @var string * @since 3.2 @@ -73,15 +73,7 @@ class JMicrodata protected $fallbackProperty = null; /** - * Used to check if a Fallback must be used - * - * @var string - * @since 3.2 - */ - protected $fallback = false; - - /** - * Used to check if the Microdata semantics output are enabled or disabled + * Used for checking if the library output is enabled or disabled * * @var boolean * @since 3.2 @@ -89,10 +81,10 @@ class JMicrodata protected $enabled = true; /** - * Initialize the class and setup the default Type + * Initialize the class and setup the default $Type * - * @param string $type Optional, Fallback to Thing Type - * @param boolean $flag Enable or disable microdata output + * @param string $type Optional, fallback to 'Thing' Type + * @param boolean $flag Enable or disable the library output * * @since 3.2 */ @@ -100,7 +92,7 @@ public function __construct($type = '', $flag = true) { if ($this->enabled = (boolean) $flag) { - // Fallback to Thing Type + // Fallback to 'Thing' Type if (!$type) { $type = 'Thing'; @@ -111,7 +103,7 @@ public function __construct($type = '', $flag = true) } /** - * Load all Types and Properties from the types.json file + * Load all available Types and Properties from the http://schema.org vocabulary contained in the types.json file * * @return void * @@ -141,13 +133,12 @@ protected function resetParams() $this->property = null; $this->fallbackProperty = null; $this->fallbackType = null; - $this->fallback = false; } /** - * Enable or Disable Microdata semantics output + * Enable or Disable the library output * - * @param boolean $flag Enable or disable microdata output + * @param boolean $flag Enable or disable the library output * * @return JMicrodata Instance of $this * @@ -161,7 +152,7 @@ public function enable($flag = true) } /** - * Return true if Microdata semantics output are enabled + * Return 'true' if the library output is enabled * * @return boolean * @@ -173,9 +164,9 @@ public function isEnabled() } /** - * Set a new Schema.org Type + * Set a new http://schema.org Type * - * @param string $type The Type to be setup + * @param string $type The $Type to be setup * * @return JMicrodata Instance of $this * @@ -191,7 +182,7 @@ public function setType($type) // Sanitize the Type $this->type = static::sanitizeType($type); - // If the given Type isn't available, fallback to Thing + // If the given $Type isn't available, fallback to 'Thing' Type if (!static::isTypeAvailable($this->type)) { $this->type = 'Thing'; @@ -201,7 +192,7 @@ public function setType($type) } /** - * Return the current Type name + * Return the current $Type name * * @return string * @@ -213,7 +204,7 @@ public function getType() } /** - * Setup a Property + * Setup a $Property * * @param string $property The Property * @@ -228,24 +219,20 @@ public function property($property) return $this; } - // Sanitize the Property + // Sanitize the $Property $property = static::sanitizeProperty($property); - // Control if the Property exist in the given Type and setup it, if not leave NULL + // Control if the $Property exists in the given $Type and setup it, otherwise leave it 'NULL' if (static::isPropertyInType($this->type, $property)) { $this->property = $property; } - else - { - $this->fallback = true; - } return $this; } /** - * Return the property variable + * Return the current $Property name * * @return string * @@ -257,25 +244,25 @@ public function getProperty() } /** - * Setup a Text value or Content value for the Microdata + * Setup a Human content or content for the Machines * - * @param string $value The human value or marchine value to be used - * @param string $machineValue The machine value + * @param string $content The human content or machine content to be used + * @param string $machineContent The machine content * * @return JMicrodata Instance of $this * * @since 3.2 */ - public function content($value, $machineValue = null) + public function content($content, $machineContent = null) { - $this->content = $value; - $this->machineContent = $machineValue; + $this->content = $content; + $this->machineContent = $machineContent; return $this; } /** - * Return the content variable + * Return the current $content * * @return string * @@ -286,6 +273,18 @@ public function getContent() return $this->content; } + /** + * Return the current $machineContent + * + * @return string + * + * @since 3.3 + */ + public function getMachineContent() + { + return $this->machineContent; + } + /** * Setup a Fallback Type and Property * @@ -303,16 +302,16 @@ public function fallback($type, $property) return $this; } - // Sanitize the Type + // Sanitize the $Type $this->fallbackType = static::sanitizeType($type); - // If the given Type isn't available, fallback to Thing + // If the given $Type isn't available, fallback to 'Thing' Type if (!static::isTypeAvailable($this->fallbackType)) { $this->fallbackType = 'Thing'; } - // Control if the Property exist in the given Type and setup it, if not leave NULL + // Control if the $Property exist in the given $Type and setup it, otherwise leave it 'NULL' if (static::isPropertyInType($this->fallbackType, $property)) { $this->fallbackProperty = $property; @@ -326,7 +325,7 @@ public function fallback($type, $property) } /** - * Return the fallbackType variable + * Return the current $fallbackType * * @return string * @@ -338,7 +337,7 @@ public function getFallbackType() } /** - * Return the fallbackProperty variable + * Return the current $fallbackProperty * * @return string * @@ -350,13 +349,12 @@ public function getFallbackProperty() } /** - * This function handle the logic of a Microdata intelligent display. - * Check if the Type, Property are available, if not check for a Fallback, - * then reset all params for the next use and - * return the Microdata HTML + * This function handles the display logic. + * It checks if the Type, Property are available, if not check for a Fallback, + * then reset all params for the next use and return the HTML. * - * @param string $displayType Optional, 'inline', available ['inline'|'span'|'div'|meta] - * @param boolean $emptyOutput Return an empty string if the microdata output is disabled and there is a $content value + * @param string $displayType Optional, 'inline', available options ['inline'|'span'|'div'|meta] + * @param boolean $emptyOutput Return an empty string if the library output is disabled and there is a $content value * * @return string * @@ -365,19 +363,19 @@ public function getFallbackProperty() public function display($displayType = '', $emptyOutput = false) { // Initialize the HTML to output - $html = ($this->content !== null) ? $this->content : ''; + $html = ($this->content !== null && !$emptyOutput) ? $this->content : ''; - // Control if the Microdata output is enabled, otherwise return the content or empty string + // Control if the library output is enabled, otherwise return the $content or an empty string if (!$this->enabled) { // Reset params $this->resetParams(); - return ($emptyOutput) ? '' : $html; + return $html; } - // If the property is wrong for the current Type check if Fallback available, otherwise return empty HTML - if ($this->property && !$this->fallback) + // If the $property is wrong for the current $Type check if a Fallback is available, otherwise return an empty HTML + if ($this->property) { // Process and return the HTML the way the user expects to if ($displayType) @@ -407,13 +405,13 @@ public function display($displayType = '', $emptyOutput = false) { /* * Process and return the HTML in an automatic way, - * with the Property expected Types and display the Microdata in the right way, - * check if the Property is normal, nested or must be rendered in a metadata tag + * with the $Property expected Types and display everything in the right way, + * check if the $Property is 'normal', 'nested' or must be rendered in a metadata tag */ switch (static::getExpectedDisplayType($this->type, $this->property)) { case 'nested': - // Retrive the expected nested Type of the Property + // Retrieve the expected 'nested' Type of the $Property $nestedType = static::getExpectedTypes($this->type, $this->property); $nestedProperty = ''; @@ -432,7 +430,7 @@ public function display($displayType = '', $emptyOutput = false) $nestedType = $nestedType[0]; } - // Check if a Content is available, otherwise Fallback to an 'inline' display type + // Check if a $content is available, otherwise fallback to an 'inline' display type if ($this->content !== null) { if ($nestedProperty) @@ -463,7 +461,7 @@ public function display($displayType = '', $emptyOutput = false) break; case 'meta': - // Check if the Content value is available, otherwise Fallback to an 'inline' display Type + // Check if a $content is available, otherwise fallback to an 'inline' display type if ($this->content !== null) { $html = ($this->machineContent !== null) ? $this->machineContent : $this->content; @@ -479,8 +477,8 @@ public function display($displayType = '', $emptyOutput = false) default: /* * Default expected display type = 'normal' - * Check if the Content value is available, - * otherwise Fallback to an 'inline' display Type + * Check if a $content is available, + * otherwise fallback to an 'inline' display type */ if ($this->content !== null) { @@ -517,7 +515,7 @@ public function display($displayType = '', $emptyOutput = false) default: // Default $displayType = 'inline' - $html = static::htmlScope($type::scope()) . ' ' . static::htmlProperty($this->fallbackProperty); + $html = static::htmlScope($this->fallbackType) . ' ' . static::htmlProperty($this->fallbackProperty); break; } } @@ -525,13 +523,13 @@ public function display($displayType = '', $emptyOutput = false) { /* * Process and return the HTML in an automatic way, - * with the Property expected Types an display the Microdata in the right way, - * check if the Property is nested or must be rendered in a metadata tag + * with the $Property expected Types an display everything in the right way, + * check if the Property is 'nested' or must be rendered in a metadata tag */ switch (static::getExpectedDisplayType($this->fallbackType, $this->fallbackProperty)) { case 'meta': - // Check if the Content value is available, otherwise Fallback to an 'inline' display Type + // Check if a $content is available, otherwise fallback to an 'inline' display Type if ($this->content !== null) { $html = ($this->machineContent !== null) ? $this->machineContent : $this->content; @@ -547,8 +545,8 @@ public function display($displayType = '', $emptyOutput = false) default: /* * Default expected display type = 'normal' - * Check if the Content value is available, - * otherwise Fallback to an 'inline' display Type + * Check if a $content is available, + * otherwise fallback to an 'inline' display Type */ if ($this->content !== null) { @@ -584,7 +582,7 @@ public function display($displayType = '', $emptyOutput = false) */ public function displayScope() { - // Control if the Microdata output is enabled, otherwise return the content or empty string + // Control if the library output is enabled, otherwise return the $content or empty string if (!$this->enabled) { return ''; @@ -594,7 +592,7 @@ public function displayScope() } /** - * Return the sanitized Type + * Return the sanitized $Type * * @param string $type The Type to sanitize * @@ -608,7 +606,7 @@ public static function sanitizeType($type) } /** - * Return the sanitized Property + * Return the sanitized $Property * * @param string $property The Property to sanitize * @@ -622,7 +620,7 @@ public static function sanitizeProperty($property) } /** - * Return an array with all Types and Properties + * Return an array with all available Types and Properties from the http://schema.org vocabulary * * @return array * @@ -636,7 +634,7 @@ public static function getTypes() } /** - * Return an array with all available Types + * Return an array with all available Types from the http://schema.org vocabulary * * @return array * @@ -650,7 +648,7 @@ public static function getAvailableTypes() } /** - * Return the expected types of the Property + * Return the expected Types of the given Property * * @param string $type The Type to process * @param string $property The Property to process @@ -665,13 +663,13 @@ public static function getExpectedTypes($type, $property) $tmp = static::$types[$type]['properties']; - // Check if the Property is in the Type + // Check if the $Property is in the $Type if (isset($tmp[$property])) { return $tmp[$property]['expectedTypes']; } - // Check if the Property is inherit + // Check if the $Property is inherit $extendedType = static::$types[$type]['extends']; // Recursive @@ -684,8 +682,8 @@ public static function getExpectedTypes($type, $property) } /** - * Return the expected display type of the [normal|nested|meta] - * In wich way to display the Property: + * Return the expected display type: [normal|nested|meta] + * In which way to display the Property: * normal -> itemprop="name" * nested -> itemprop="director" itemscope itemtype="https://schema.org/Person" * meta -> @@ -704,19 +702,19 @@ protected static function getExpectedDisplayType($type, $property) // Retrieve the first expected type $type = $expectedTypes[0]; - // Check if it's a meta display + // Check if it's a 'meta' display if ($type === 'Date' || $type === 'DateTime' || $property === 'interactionCount') { return 'meta'; } - // Check if it's a normal display + // Check if it's a 'normal' display if ($type === 'Text' || $type === 'URL' || $type === 'Boolean' || $type === 'Number') { return 'normal'; } - // Otherwise it's a nested display + // Otherwise it's a 'nested' display return 'nested'; } @@ -737,13 +735,13 @@ public static function isPropertyInType($type, $property) return false; } - // Control if the Property exists, and return true + // Control if the $Property exists, and return 'true' if (array_key_exists($property, static::$types[$type]['properties'])) { return true; } - // Recursive: Check if the Property is inherit + // Recursive: Check if the $Property is inherit $extendedType = static::$types[$type]['extends']; if (!empty($extendedType)) @@ -771,113 +769,85 @@ public static function isTypeAvailable($type) } /** - * Return the microdata in a tag with content for machines. + * Return Microdata semantics in a tag with content for machines. * * @param string $content The machine content to display * @param string $property The Property * @param string $scope Optional, the Type scope to display - * @param boolean $inverse Optional, default = false, inverse the $scope with the $property + * @param boolean $invert Optional, default = false, invert the $scope with the $property * * @return string * - * @since 3.2 + * @since 3.2 */ - public static function htmlMeta($content, $property, $scope = '', $inverse = false) + public static function htmlMeta($content, $property, $scope = '', $invert = false) { - // Control if the Property has allready the itemprop - if (stripos($property, 'itemprop') !== 0) - { - $property = static::htmlProperty($property); - } - - // Control if the Scope have allready the itemtype - if (!empty($scope) && stripos($scope, 'itemscope') !== 0) - { - $scope = static::htmlScope($scope); - } - - if ($inverse) - { - $tmp = join(' ', array($property, $scope)); - } - else - { - $tmp = join(' ', array($scope, $property)); - } - - $tmp = trim($tmp); - - return ""; + return static::htmlTag('meta', $content, $property, $scope, $invert); } /** - * Return the microdata in a tag. + * Return Microdata semantics in a tag. * - * @param string $content The human value - * @param string $property Optional, the human value to display + * @param string $content The human content + * @param string $property Optional, the human content to display * @param string $scope Optional, the Type scope to display - * @param boolean $inverse Optional, default = false, inverse the $scope with the $property + * @param boolean $invert Optional, default = false, invert the $scope with the $property * * @return string * - * @since 3.2 + * @since 3.2 */ - public static function htmlSpan($content, $property = '', $scope = '', $inverse = false) + public static function htmlSpan($content, $property = '', $scope = '', $invert = false) { - // Control if the Property has allready the itemprop - if (!empty($property) && stripos($property, 'itemprop') !== 0) - { - $property = static::htmlProperty($property); - } - - // Control if the Scope have allready the itemtype - if (!empty($scope) && stripos($scope, 'itemscope') !== 0) - { - $scope = static::htmlScope($scope); - } - - if ($inverse) - { - $tmp = join(' ', array($property, $scope)); - } - else - { - $tmp = join(' ', array($scope, $property)); - } - - $tmp = trim($tmp); - $tmp = ($tmp) ? ' ' . $tmp : ''; + return static::htmlTag('span', $content, $property, $scope, $invert); + } - return "$content"; + /** + * Return Microdata semantics in a
tag. + * + * @param string $content The human content + * @param string $property Optional, the human content to display + * @param string $scope Optional, the Type scope to display + * @param boolean $invert Optional, default = false, invert the $scope with the $property + * + * @return string + * + * @since 3.2 + */ + public static function htmlDiv($content, $property = '', $scope = '', $invert = false) + { + return static::htmlTag('div', $content, $property, $scope, $invert); } /** - * Return the microdata in an
tag. + * Return Microdata semantics in a specified tag. * - * @param string $content The human value - * @param string $property Optional, the human value to display + * @param string $tag The HTML tag + * @param string $content The human content + * @param string $property Optional, the human content to display * @param string $scope Optional, the Type scope to display - * @param boolean $inverse Optional, default = false, inverse the $scope with the $property + * @param boolean $invert Optional, default = false, invert the $scope with the $property * * @return string * - * @since 3.2 + * @since 3.3 */ - public static function htmlDiv($content, $property = '', $scope = '', $inverse = false) + public static function htmlTag($tag, $content, $property = '', $scope = '', $invert = false) { - // Control if the Property has allready the itemprop + // Control if the $Property has already the 'itemprop' prefix if (!empty($property) && stripos($property, 'itemprop') !== 0) { $property = static::htmlProperty($property); } - // Control if the Scope have allready the itemtype + // Control if the $Scope have already the 'itemscope' prefix if (!empty($scope) && stripos($scope, 'itemscope') !== 0) { $scope = static::htmlScope($scope); } - if ($inverse) + // Depending on the case, the $scope must precede the $property, or otherwise + if ($invert) { $tmp = join(' ', array($property, $scope)); } @@ -889,7 +859,13 @@ public static function htmlDiv($content, $property = '', $scope = '', $inverse = $tmp = trim($tmp); $tmp = ($tmp) ? ' ' . $tmp : ''; - return "$content
"; + // Control if it is an empty element without a closing tag + if ($tag === 'meta') + { + return ""; + } + + return "<" . $tag . $tmp . ">" . $content . ""; } /** @@ -903,12 +879,7 @@ public static function htmlDiv($content, $property = '', $scope = '', $inverse = */ public static function htmlScope($scope) { - if (stripos($scope, 'http') !== 0) - { - $scope = 'https://schema.org/' . ucfirst($scope); - } - - return "itemscope itemtype='$scope'"; + return "itemscope itemtype='https://schema.org/" . static::sanitizeType($scope) . "'"; } /** diff --git a/libraries/joomla/microdata/types.json b/libraries/joomla/microdata/types.json index 836d4af7b582c..03e74a5a20e9a 100644 --- a/libraries/joomla/microdata/types.json +++ b/libraries/joomla/microdata/types.json @@ -1 +1 @@ -{"DataType":{"extends":"","properties":[]},"Boolean":{"extends":"DataType","properties":[]},"Date":{"extends":"DataType","properties":[]},"DateTime":{"extends":"DataType","properties":[]},"Number":{"extends":"DataType","properties":[]},"Float":{"extends":"Number","properties":[]},"Integer":{"extends":"Number","properties":[]},"Text":{"extends":"DataType","properties":[]},"URL":{"extends":"Text","properties":[]},"Time":{"extends":"DataType","properties":[]},"Thing":{"extends":"","properties":{"additionalType":{"expectedTypes":["URL"]},"alternateName":{"expectedTypes":["Text"]},"description":{"expectedTypes":["Text"]},"image":{"expectedTypes":["URL"]},"name":{"expectedTypes":["Text"]},"sameAs":{"expectedTypes":["URL"]},"url":{"expectedTypes":["URL"]}}},"Action":{"extends":"Thing","properties":{"agent":{"expectedTypes":["Organization","Person"]},"endTime":{"expectedTypes":["DateTime"]},"instrument":{"expectedTypes":["Thing"]},"location":{"expectedTypes":["Place","PostalAddress"]},"object":{"expectedTypes":["Thing"]},"participant":{"expectedTypes":["Organization","Person"]},"result":{"expectedTypes":["Thing"]},"startTime":{"expectedTypes":["DateTime"]}}},"AchieveAction":{"extends":"Action","properties":[]},"LoseAction":{"extends":"AchieveAction","properties":{"winner":{"expectedTypes":["Person"]}}},"TieAction":{"extends":"AchieveAction","properties":[]},"WinAction":{"extends":"AchieveAction","properties":{"loser":{"expectedTypes":["Person"]}}},"AssessAction":{"extends":"Action","properties":[]},"ChooseAction":{"extends":"AssessAction","properties":{"option":{"expectedTypes":["Text","Thing"]}}},"VoteAction":{"extends":"ChooseAction","properties":{"candidate":{"expectedTypes":["Person"]}}},"IgnoreAction":{"extends":"AssessAction","properties":[]},"ReactAction":{"extends":"AssessAction","properties":[]},"AgreeAction":{"extends":"ReactAction","properties":[]},"DisagreeAction":{"extends":"ReactAction","properties":[]},"DislikeAction":{"extends":"ReactAction","properties":[]},"EndorseAction":{"extends":"ReactAction","properties":{"endorsee":{"expectedTypes":["Organization","Person"]}}},"LikeAction":{"extends":"ReactAction","properties":[]},"WantAction":{"extends":"ReactAction","properties":[]},"ReviewAction":{"extends":"AssessAction","properties":{"resultReview":{"expectedTypes":["Review"]}}},"ConsumeAction":{"extends":"Action","properties":[]},"DrinkAction":{"extends":"ConsumeAction","properties":[]},"EatAction":{"extends":"ConsumeAction","properties":[]},"InstallAction":{"extends":"ConsumeAction","properties":[]},"ListenAction":{"extends":"ConsumeAction","properties":[]},"ReadAction":{"extends":"ConsumeAction","properties":[]},"UseAction":{"extends":"ConsumeAction","properties":[]},"WearAction":{"extends":"UseAction","properties":[]},"ViewAction":{"extends":"ConsumeAction","properties":[]},"WatchAction":{"extends":"ConsumeAction","properties":[]},"CreateAction":{"extends":"Action","properties":[]},"CookAction":{"extends":"CreateAction","properties":{"foodEstablishment":{"expectedTypes":["FoodEstablishment","Place"]},"foodEvent":{"expectedTypes":["FoodEvent"]},"recipe":{"expectedTypes":["Recipe"]}}},"DrawAction":{"extends":"CreateAction","properties":[]},"FilmAction":{"extends":"CreateAction","properties":[]},"PaintAction":{"extends":"CreateAction","properties":[]},"PhotographAction":{"extends":"CreateAction","properties":[]},"WriteAction":{"extends":"CreateAction","properties":{"language":{"expectedTypes":["Language"]}}},"FindAction":{"extends":"Action","properties":[]},"CheckAction":{"extends":"FindAction","properties":[]},"DiscoverAction":{"extends":"FindAction","properties":[]},"TrackAction":{"extends":"FindAction","properties":{"deliveryMethod":{"expectedTypes":["DeliveryMethod"]}}},"InteractAction":{"extends":"Action","properties":[]},"BefriendAction":{"extends":"InteractAction","properties":[]},"CommunicateAction":{"extends":"InteractAction","properties":{"about":{"expectedTypes":["Thing"]},"language":{"expectedTypes":["Language"]},"recipient":{"expectedTypes":["Audience","Organization","Person"]}}},"AskAction":{"extends":"CommunicateAction","properties":{"question":{"expectedTypes":["Text"]}}},"CheckInAction":{"extends":"CommunicateAction","properties":[]},"CheckOutAction":{"extends":"CommunicateAction","properties":[]},"CommentAction":{"extends":"CommunicateAction","properties":[]},"InformAction":{"extends":"CommunicateAction","properties":{"event":{"expectedTypes":["Event"]}}},"ConfirmAction":{"extends":"InformAction","properties":[]},"RsvpAction":{"extends":"InformAction","properties":[]},"InviteAction":{"extends":"CommunicateAction","properties":{"event":{"expectedTypes":["Event"]}}},"ReplyAction":{"extends":"CommunicateAction","properties":[]},"ShareAction":{"extends":"CommunicateAction","properties":[]},"FollowAction":{"extends":"InteractAction","properties":{"followee":{"expectedTypes":["Organization","Person"]}}},"JoinAction":{"extends":"InteractAction","properties":{"event":{"expectedTypes":["Event"]}}},"LeaveAction":{"extends":"InteractAction","properties":{"event":{"expectedTypes":["Event"]}}},"MarryAction":{"extends":"InteractAction","properties":[]},"RegisterAction":{"extends":"InteractAction","properties":[]},"SubscribeAction":{"extends":"InteractAction","properties":[]},"UnRegisterAction":{"extends":"InteractAction","properties":[]},"MoveAction":{"extends":"Action","properties":{"fromLocation":{"expectedTypes":["Number","Place"]},"toLocation":{"expectedTypes":["Number","Place"]}}},"ArriveAction":{"extends":"MoveAction","properties":[]},"DepartAction":{"extends":"MoveAction","properties":[]},"TravelAction":{"extends":"MoveAction","properties":{"distance":{"expectedTypes":["Distance"]}}},"OrganizeAction":{"extends":"Action","properties":[]},"AllocateAction":{"extends":"OrganizeAction","properties":{"purpose":{"expectedTypes":["MedicalDevicePurpose","Thing"]}}},"AcceptAction":{"extends":"AllocateAction","properties":[]},"AssignAction":{"extends":"AllocateAction","properties":[]},"AuthorizeAction":{"extends":"AllocateAction","properties":{"recipient":{"expectedTypes":["Audience","Organization","Person"]}}},"RejectAction":{"extends":"AllocateAction","properties":[]},"ApplyAction":{"extends":"OrganizeAction","properties":[]},"BookmarkAction":{"extends":"OrganizeAction","properties":[]},"PlanAction":{"extends":"OrganizeAction","properties":{"scheduledTime":{"expectedTypes":["DateTime"]}}},"CancelAction":{"extends":"PlanAction","properties":[]},"ReserveAction":{"extends":"PlanAction","properties":[]},"ScheduleAction":{"extends":"PlanAction","properties":[]},"PlayAction":{"extends":"Action","properties":{"audience":{"expectedTypes":["Audience"]},"event":{"expectedTypes":["Event"]}}},"ExerciseAction":{"extends":"PlayAction","properties":{"course":{"expectedTypes":["Place"]},"diet":{"expectedTypes":["Diet"]},"distance":{"expectedTypes":["Distance"]},"exercisePlan":{"expectedTypes":["ExercisePlan"]},"exerciseType":{"expectedTypes":["Text"]},"fromLocation":{"expectedTypes":["Number","Place"]},"oponent":{"expectedTypes":["Person"]},"sportsActivityLocation":{"expectedTypes":["SportsActivityLocation"]},"sportsEvent":{"expectedTypes":["SportsEvent"]},"sportsTeam":{"expectedTypes":["SportsTeam"]},"toLocation":{"expectedTypes":["Number","Place"]}}},"PerformAction":{"extends":"PlayAction","properties":{"entertainmentBusiness":{"expectedTypes":["EntertainmentBusiness"]}}},"SearchAction":{"extends":"Action","properties":{"query":{"expectedTypes":["Class","Text"]}}},"TradeAction":{"extends":"Action","properties":{"price":{"expectedTypes":["Number","Text"]}}},"BuyAction":{"extends":"TradeAction","properties":{"vendor":{"expectedTypes":["Organization","Person"]},"warrantyPromise":{"expectedTypes":["WarrantyPromise"]}}},"DonateAction":{"extends":"TradeAction","properties":{"recipient":{"expectedTypes":["Audience","Organization","Person"]}}},"OrderAction":{"extends":"TradeAction","properties":[]},"PayAction":{"extends":"TradeAction","properties":{"purpose":{"expectedTypes":["MedicalDevicePurpose","Thing"]},"recipient":{"expectedTypes":["Audience","Organization","Person"]}}},"QuoteAction":{"extends":"TradeAction","properties":[]},"RentAction":{"extends":"TradeAction","properties":{"landlord":{"expectedTypes":["Organization","Person"]},"realEstateAgent":{"expectedTypes":["RealEstateAgent"]}}},"SellAction":{"extends":"TradeAction","properties":{"buyer":{"expectedTypes":["Person"]},"warrantyPromise":{"expectedTypes":["WarrantyPromise"]}}},"TipAction":{"extends":"TradeAction","properties":{"recipient":{"expectedTypes":["Audience","Organization","Person"]}}},"TransferAction":{"extends":"Action","properties":{"fromLocation":{"expectedTypes":["Number","Place"]},"toLocation":{"expectedTypes":["Number","Place"]}}},"BorrowAction":{"extends":"TransferAction","properties":{"lender":{"expectedTypes":["Person"]}}},"DownloadAction":{"extends":"TransferAction","properties":[]},"GiveAction":{"extends":"TransferAction","properties":{"recipient":{"expectedTypes":["Audience","Organization","Person"]}}},"LendAction":{"extends":"TransferAction","properties":{"borrower":{"expectedTypes":["Person"]}}},"ReceiveAction":{"extends":"TransferAction","properties":{"deliveryMethod":{"expectedTypes":["DeliveryMethod"]},"sender":{"expectedTypes":["Audience","Organization","Person"]}}},"ReturnAction":{"extends":"TransferAction","properties":{"recipient":{"expectedTypes":["Audience","Organization","Person"]}}},"SendAction":{"extends":"TransferAction","properties":{"deliveryMethod":{"expectedTypes":["DeliveryMethod"]},"recipient":{"expectedTypes":["Audience","Organization","Person"]}}},"TakeAction":{"extends":"TransferAction","properties":[]},"UpdateAction":{"extends":"Action","properties":{"collection":{"expectedTypes":["Thing"]}}},"AddAction":{"extends":"UpdateAction","properties":[]},"InsertAction":{"extends":"AddAction","properties":{"toLocation":{"expectedTypes":["Number","Place"]}}},"AppendAction":{"extends":"InsertAction","properties":[]},"PrependAction":{"extends":"InsertAction","properties":[]},"DeleteAction":{"extends":"UpdateAction","properties":[]},"ReplaceAction":{"extends":"UpdateAction","properties":{"replacee":{"expectedTypes":["Thing"]},"replacer":{"expectedTypes":["Thing"]}}},"BroadcastService":{"extends":"Thing","properties":{"area":{"expectedTypes":["Place"]},"broadcaster":{"expectedTypes":["Organization"]},"parentService":{"expectedTypes":["BroadcastService"]}}},"Class":{"extends":"Thing","properties":[]},"CreativeWork":{"extends":"Thing","properties":{"about":{"expectedTypes":["Thing"]},"accessibilityAPI":{"expectedTypes":["Text"]},"accessibilityControl":{"expectedTypes":["Text"]},"accessibilityFeature":{"expectedTypes":["Text"]},"accessibilityHazard":{"expectedTypes":["Text"]},"accountablePerson":{"expectedTypes":["Person"]},"aggregateRating":{"expectedTypes":["AggregateRating"]},"alternativeHeadline":{"expectedTypes":["Text"]},"associatedMedia":{"expectedTypes":["MediaObject"]},"audience":{"expectedTypes":["Audience"]},"audio":{"expectedTypes":["AudioObject"]},"author":{"expectedTypes":["Organization","Person"]},"award":{"expectedTypes":["Text"]},"awards":{"expectedTypes":["Text"]},"citation":{"expectedTypes":["CreativeWork","Text"]},"comment":{"expectedTypes":["UserComments"]},"contentLocation":{"expectedTypes":["Place"]},"contentRating":{"expectedTypes":["Text"]},"contributor":{"expectedTypes":["Organization","Person"]},"copyrightHolder":{"expectedTypes":["Organization","Person"]},"copyrightYear":{"expectedTypes":["Number"]},"creator":{"expectedTypes":["Organization","Person"]},"dateCreated":{"expectedTypes":["Date"]},"dateModified":{"expectedTypes":["Date"]},"datePublished":{"expectedTypes":["Date"]},"discussionUrl":{"expectedTypes":["URL"]},"editor":{"expectedTypes":["Person"]},"educationalAlignment":{"expectedTypes":["AlignmentObject"]},"educationalUse":{"expectedTypes":["Text"]},"encoding":{"expectedTypes":["MediaObject"]},"encodings":{"expectedTypes":["MediaObject"]},"genre":{"expectedTypes":["Text"]},"headline":{"expectedTypes":["Text"]},"inLanguage":{"expectedTypes":["Text"]},"interactionCount":{"expectedTypes":["Text"]},"interactivityType":{"expectedTypes":["Text"]},"isBasedOnUrl":{"expectedTypes":["URL"]},"isFamilyFriendly":{"expectedTypes":["Boolean"]},"keywords":{"expectedTypes":["Text"]},"learningResourceType":{"expectedTypes":["Text"]},"mentions":{"expectedTypes":["Thing"]},"offers":{"expectedTypes":["Offer"]},"provider":{"expectedTypes":["Organization","Person"]},"publisher":{"expectedTypes":["Organization"]},"publishingPrinciples":{"expectedTypes":["URL"]},"review":{"expectedTypes":["Review"]},"reviews":{"expectedTypes":["Review"]},"sourceOrganization":{"expectedTypes":["Organization"]},"text":{"expectedTypes":["Text"]},"thumbnailUrl":{"expectedTypes":["URL"]},"timeRequired":{"expectedTypes":["Duration"]},"typicalAgeRange":{"expectedTypes":["Text"]},"version":{"expectedTypes":["Number"]},"video":{"expectedTypes":["VideoObject"]}}},"Article":{"extends":"CreativeWork","properties":{"articleBody":{"expectedTypes":["Text"]},"articleSection":{"expectedTypes":["Text"]},"wordCount":{"expectedTypes":["Integer"]}}},"BlogPosting":{"extends":"Article","properties":[]},"NewsArticle":{"extends":"Article","properties":{"dateline":{"expectedTypes":["Text"]},"printColumn":{"expectedTypes":["Text"]},"printEdition":{"expectedTypes":["Text"]},"printPage":{"expectedTypes":["Text"]},"printSection":{"expectedTypes":["Text"]}}},"ScholarlyArticle":{"extends":"Article","properties":[]},"MedicalScholarlyArticle":{"extends":"ScholarlyArticle","properties":{"publicationType":{"expectedTypes":["Text"]}}},"TechArticle":{"extends":"Article","properties":{"dependencies":{"expectedTypes":["Text"]},"proficiencyLevel":{"expectedTypes":["Text"]}}},"APIReference":{"extends":"TechArticle","properties":{"assembly":{"expectedTypes":["Text"]},"assemblyVersion":{"expectedTypes":["Text"]},"programmingModel":{"expectedTypes":["Text"]},"targetPlatform":{"expectedTypes":["Text"]}}},"Blog":{"extends":"CreativeWork","properties":{"blogPost":{"expectedTypes":["BlogPosting"]},"blogPosts":{"expectedTypes":["BlogPosting"]}}},"Book":{"extends":"CreativeWork","properties":{"bookEdition":{"expectedTypes":["Text"]},"bookFormat":{"expectedTypes":["BookFormatType"]},"illustrator":{"expectedTypes":["Person"]},"isbn":{"expectedTypes":["Text"]},"numberOfPages":{"expectedTypes":["Integer"]}}},"Clip":{"extends":"CreativeWork","properties":{"clipNumber":{"expectedTypes":["Integer"]},"partOfEpisode":{"expectedTypes":["Episode"]},"partOfSeason":{"expectedTypes":["Season"]},"partOfSeries":{"expectedTypes":["Series"]},"position":{"expectedTypes":["Text"]},"publication":{"expectedTypes":["PublicationEvent"]}}},"RadioClip":{"extends":"Clip","properties":[]},"TVClip":{"extends":"Clip","properties":{"partOfTVSeries":{"expectedTypes":["TVSeries"]}}},"Code":{"extends":"CreativeWork","properties":{"codeRepository":{"expectedTypes":["URL"]},"programmingLanguage":{"expectedTypes":["Thing"]},"runtime":{"expectedTypes":["Text"]},"sampleType":{"expectedTypes":["Text"]},"targetProduct":{"expectedTypes":["SoftwareApplication"]}}},"Comment":{"extends":"CreativeWork","properties":[]},"DataCatalog":{"extends":"CreativeWork","properties":{"dataset":{"expectedTypes":["Dataset"]}}},"Dataset":{"extends":"CreativeWork","properties":{"catalog":{"expectedTypes":["DataCatalog"]},"distribution":{"expectedTypes":["DataDownload"]},"spatial":{"expectedTypes":["Place"]},"temporal":{"expectedTypes":["DateTime"]}}},"Diet":{"extends":"CreativeWork","properties":{"dietFeatures":{"expectedTypes":["Text"]},"endorsers":{"expectedTypes":["Organization","Person"]},"expertConsiderations":{"expectedTypes":["Text"]},"overview":{"expectedTypes":["Text"]},"physiologicalBenefits":{"expectedTypes":["Text"]},"proprietaryName":{"expectedTypes":["Text"]},"risks":{"expectedTypes":["Text"]}}},"Episode":{"extends":"CreativeWork","properties":{"actor":{"expectedTypes":["Person"]},"actors":{"expectedTypes":["Person"]},"director":{"expectedTypes":["Person"]},"directors":{"expectedTypes":["Person"]},"episodeNumber":{"expectedTypes":["Integer"]},"musicBy":{"expectedTypes":["MusicGroup","Person"]},"partOfSeason":{"expectedTypes":["Season"]},"partOfSeries":{"expectedTypes":["Series"]},"position":{"expectedTypes":["Text"]},"producer":{"expectedTypes":["Person"]},"productionCompany":{"expectedTypes":["Organization"]},"publication":{"expectedTypes":["PublicationEvent"]},"trailer":{"expectedTypes":["VideoObject"]}}},"RadioEpisode":{"extends":"Episode","properties":[]},"TVEpisode":{"extends":"Episode","properties":{"partOfTVSeries":{"expectedTypes":["TVSeries"]}}},"ExercisePlan":{"extends":"CreativeWork","properties":{"activityDuration":{"expectedTypes":["Duration"]},"activityFrequency":{"expectedTypes":["Text"]},"additionalVariable":{"expectedTypes":["Text"]},"exerciseType":{"expectedTypes":["Text"]},"intensity":{"expectedTypes":["Text"]},"repetitions":{"expectedTypes":["Number"]},"restPeriods":{"expectedTypes":["Text"]},"workload":{"expectedTypes":["Energy"]}}},"ItemList":{"extends":"CreativeWork","properties":{"itemListElement":{"expectedTypes":["Text"]},"itemListOrder":{"expectedTypes":["Text"]}}},"Map":{"extends":"CreativeWork","properties":[]},"MediaObject":{"extends":"CreativeWork","properties":{"associatedArticle":{"expectedTypes":["NewsArticle"]},"bitrate":{"expectedTypes":["Text"]},"contentSize":{"expectedTypes":["Text"]},"contentUrl":{"expectedTypes":["URL"]},"duration":{"expectedTypes":["Duration"]},"embedUrl":{"expectedTypes":["URL"]},"encodesCreativeWork":{"expectedTypes":["CreativeWork"]},"encodingFormat":{"expectedTypes":["Text"]},"expires":{"expectedTypes":["Date"]},"height":{"expectedTypes":["Distance","QuantitativeValue"]},"playerType":{"expectedTypes":["Text"]},"productionCompany":{"expectedTypes":["Organization"]},"publication":{"expectedTypes":["PublicationEvent"]},"regionsAllowed":{"expectedTypes":["Place"]},"requiresSubscription":{"expectedTypes":["Boolean"]},"uploadDate":{"expectedTypes":["Date"]},"width":{"expectedTypes":["Distance","QuantitativeValue"]}}},"AudioObject":{"extends":"MediaObject","properties":{"transcript":{"expectedTypes":["Text"]}}},"DataDownload":{"extends":"MediaObject","properties":[]},"ImageObject":{"extends":"MediaObject","properties":{"caption":{"expectedTypes":["Text"]},"exifData":{"expectedTypes":["Text"]},"representativeOfPage":{"expectedTypes":["Boolean"]},"thumbnail":{"expectedTypes":["ImageObject"]}}},"MusicVideoObject":{"extends":"MediaObject","properties":[]},"VideoObject":{"extends":"MediaObject","properties":{"caption":{"expectedTypes":["Text"]},"thumbnail":{"expectedTypes":["ImageObject"]},"transcript":{"expectedTypes":["Text"]},"videoFrameSize":{"expectedTypes":["Text"]},"videoQuality":{"expectedTypes":["Text"]}}},"Movie":{"extends":"CreativeWork","properties":{"actor":{"expectedTypes":["Person"]},"actors":{"expectedTypes":["Person"]},"director":{"expectedTypes":["Person"]},"directors":{"expectedTypes":["Person"]},"duration":{"expectedTypes":["Duration"]},"musicBy":{"expectedTypes":["MusicGroup","Person"]},"producer":{"expectedTypes":["Person"]},"productionCompany":{"expectedTypes":["Organization"]},"trailer":{"expectedTypes":["VideoObject"]}}},"MusicPlaylist":{"extends":"CreativeWork","properties":{"numTracks":{"expectedTypes":["Integer"]},"track":{"expectedTypes":["MusicRecording"]},"tracks":{"expectedTypes":["MusicRecording"]}}},"MusicAlbum":{"extends":"MusicPlaylist","properties":{"byArtist":{"expectedTypes":["MusicGroup"]}}},"MusicRecording":{"extends":"CreativeWork","properties":{"byArtist":{"expectedTypes":["MusicGroup"]},"duration":{"expectedTypes":["Duration"]},"inAlbum":{"expectedTypes":["MusicAlbum"]},"inPlaylist":{"expectedTypes":["MusicPlaylist"]}}},"Painting":{"extends":"CreativeWork","properties":[]},"Photograph":{"extends":"CreativeWork","properties":[]},"Recipe":{"extends":"CreativeWork","properties":{"cookingMethod":{"expectedTypes":["Text"]},"cookTime":{"expectedTypes":["Duration"]},"ingredients":{"expectedTypes":["Text"]},"nutrition":{"expectedTypes":["NutritionInformation"]},"prepTime":{"expectedTypes":["Duration"]},"recipeCategory":{"expectedTypes":["Text"]},"recipeCuisine":{"expectedTypes":["Text"]},"recipeInstructions":{"expectedTypes":["Text"]},"recipeYield":{"expectedTypes":["Text"]},"totalTime":{"expectedTypes":["Duration"]}}},"Review":{"extends":"CreativeWork","properties":{"itemReviewed":{"expectedTypes":["Thing"]},"reviewBody":{"expectedTypes":["Text"]},"reviewRating":{"expectedTypes":["Rating"]}}},"Sculpture":{"extends":"CreativeWork","properties":[]},"Season":{"extends":"CreativeWork","properties":{"endDate":{"expectedTypes":["Date"]},"episode":{"expectedTypes":["Episode"]},"episodes":{"expectedTypes":["Episode"]},"numberOfEpisodes":{"expectedTypes":["Number"]},"partOfSeries":{"expectedTypes":["Series"]},"position":{"expectedTypes":["Text"]},"producer":{"expectedTypes":["Person"]},"productionCompany":{"expectedTypes":["Organization"]},"seasonNumber":{"expectedTypes":["Integer"]},"startDate":{"expectedTypes":["Date"]},"trailer":{"expectedTypes":["VideoObject"]}}},"RadioSeason":{"extends":"Season","properties":[]},"TVSeason":{"extends":"CreativeWork","properties":{"partOfTVSeries":{"expectedTypes":["TVSeries"]}}},"Series":{"extends":"CreativeWork","properties":{"actor":{"expectedTypes":["Person"]},"actors":{"expectedTypes":["Person"]},"director":{"expectedTypes":["Person"]},"directors":{"expectedTypes":["Person"]},"endDate":{"expectedTypes":["Date"]},"episode":{"expectedTypes":["Episode"]},"episodes":{"expectedTypes":["Episode"]},"musicBy":{"expectedTypes":["MusicGroup","Person"]},"numberOfEpisodes":{"expectedTypes":["Number"]},"numberOfSeasons":{"expectedTypes":["Number"]},"producer":{"expectedTypes":["Person"]},"productionCompany":{"expectedTypes":["Organization"]},"season":{"expectedTypes":["Season"]},"seasons":{"expectedTypes":["Season"]},"startDate":{"expectedTypes":["Date"]},"trailer":{"expectedTypes":["VideoObject"]}}},"RadioSeries":{"extends":"Series","properties":[]},"TVSeries":{"extends":"CreativeWork","properties":[]},"SoftwareApplication":{"extends":"CreativeWork","properties":{"applicationCategory":{"expectedTypes":["Text","URL"]},"applicationSubCategory":{"expectedTypes":["Text","URL"]},"applicationSuite":{"expectedTypes":["Text"]},"countriesNotSupported":{"expectedTypes":["Text"]},"countriesSupported":{"expectedTypes":["Text"]},"device":{"expectedTypes":["Text"]},"downloadUrl":{"expectedTypes":["URL"]},"featureList":{"expectedTypes":["Text","URL"]},"fileFormat":{"expectedTypes":["Text"]},"fileSize":{"expectedTypes":["Integer"]},"installUrl":{"expectedTypes":["URL"]},"memoryRequirements":{"expectedTypes":["Text","URL"]},"operatingSystem":{"expectedTypes":["Text"]},"permissions":{"expectedTypes":["Text"]},"processorRequirements":{"expectedTypes":["Text"]},"releaseNotes":{"expectedTypes":["Text","URL"]},"requirements":{"expectedTypes":["Text","URL"]},"screenshot":{"expectedTypes":["ImageObject","URL"]},"softwareVersion":{"expectedTypes":["Text"]},"storageRequirements":{"expectedTypes":["Text","URL"]}}},"MobileApplication":{"extends":"SoftwareApplication","properties":{"carrierRequirements":{"expectedTypes":["Text"]}}},"WebApplication":{"extends":"SoftwareApplication","properties":{"browserRequirements":{"expectedTypes":["Text"]}}},"WebPage":{"extends":"CreativeWork","properties":{"breadcrumb":{"expectedTypes":["Text"]},"isPartOf":{"expectedTypes":["CollectionPage"]},"lastReviewed":{"expectedTypes":["Date"]},"mainContentOfPage":{"expectedTypes":["WebPageElement"]},"primaryImageOfPage":{"expectedTypes":["ImageObject"]},"relatedLink":{"expectedTypes":["URL"]},"reviewedBy":{"expectedTypes":["Organization","Person"]},"significantLink":{"expectedTypes":["URL"]},"significantLinks":{"expectedTypes":["URL"]},"specialty":{"expectedTypes":["Specialty"]}}},"AboutPage":{"extends":"WebPage","properties":[]},"CheckoutPage":{"extends":"WebPage","properties":[]},"CollectionPage":{"extends":"WebPage","properties":[]},"ImageGallery":{"extends":"CollectionPage","properties":[]},"VideoGallery":{"extends":"CollectionPage","properties":[]},"ContactPage":{"extends":"WebPage","properties":[]},"ItemPage":{"extends":"WebPage","properties":[]},"MedicalWebPage":{"extends":"WebPage","properties":{"aspect":{"expectedTypes":["Text"]}}},"ProfilePage":{"extends":"WebPage","properties":[]},"SearchResultsPage":{"extends":"WebPage","properties":[]},"WebPageElement":{"extends":"CreativeWork","properties":[]},"SiteNavigationElement":{"extends":"WebPageElement","properties":[]},"Table":{"extends":"WebPageElement","properties":[]},"WPAdBlock":{"extends":"WebPageElement","properties":[]},"WPFooter":{"extends":"WebPageElement","properties":[]},"WPHeader":{"extends":"WebPageElement","properties":[]},"WPSideBar":{"extends":"WebPageElement","properties":[]},"Event":{"extends":"Thing","properties":{"attendee":{"expectedTypes":["Organization","Person"]},"attendees":{"expectedTypes":["Organization","Person"]},"doorTime":{"expectedTypes":["DateTime"]},"duration":{"expectedTypes":["Duration"]},"endDate":{"expectedTypes":["Date"]},"eventStatus":{"expectedTypes":["EventStatusType"]},"location":{"expectedTypes":["Place","PostalAddress"]},"offers":{"expectedTypes":["Offer"]},"performer":{"expectedTypes":["Organization","Person"]},"performers":{"expectedTypes":["Organization","Person"]},"previousStartDate":{"expectedTypes":["Date"]},"startDate":{"expectedTypes":["Date"]},"subEvent":{"expectedTypes":["Event"]},"subEvents":{"expectedTypes":["Event"]},"superEvent":{"expectedTypes":["Event"]},"typicalAgeRange":{"expectedTypes":["Text"]}}},"BusinessEvent":{"extends":"Event","properties":[]},"ChildrensEvent":{"extends":"Event","properties":[]},"ComedyEvent":{"extends":"Event","properties":[]},"DanceEvent":{"extends":"Event","properties":[]},"DeliveryEvent":{"extends":"Event","properties":{"accessCode":{"expectedTypes":["Text"]},"availableFrom":{"expectedTypes":["DateTime"]},"availableThrough":{"expectedTypes":["DateTime"]},"hasDeliveryMethod":{"expectedTypes":["DeliveryMethod"]}}},"EducationEvent":{"extends":"Event","properties":[]},"Festival":{"extends":"Event","properties":[]},"FoodEvent":{"extends":"Event","properties":[]},"LiteraryEvent":{"extends":"Event","properties":[]},"MusicEvent":{"extends":"Event","properties":[]},"PublicationEvent":{"extends":"Event","properties":{"free":{"expectedTypes":["Boolean"]},"publishedOn":{"expectedTypes":["BroadcastService"]}}},"BroadcastEvent":{"extends":"PublicationEvent","properties":[]},"OnDemandEvent":{"extends":"PublicationEvent","properties":[]},"SaleEvent":{"extends":"Event","properties":[]},"SocialEvent":{"extends":"Event","properties":[]},"SportsEvent":{"extends":"Event","properties":[]},"TheaterEvent":{"extends":"Event","properties":[]},"UserInteraction":{"extends":"Event","properties":[]},"UserBlocks":{"extends":"UserInteraction","properties":[]},"UserCheckins":{"extends":"UserInteraction","properties":[]},"UserComments":{"extends":"UserInteraction","properties":{"commentText":{"expectedTypes":["Text"]},"commentTime":{"expectedTypes":["Date"]},"creator":{"expectedTypes":["Organization","Person"]},"discusses":{"expectedTypes":["CreativeWork"]},"replyToUrl":{"expectedTypes":["URL"]}}},"UserDownloads":{"extends":"UserInteraction","properties":[]},"UserLikes":{"extends":"UserInteraction","properties":[]},"UserPageVisits":{"extends":"UserInteraction","properties":[]},"UserPlays":{"extends":"UserInteraction","properties":[]},"UserPlusOnes":{"extends":"UserInteraction","properties":[]},"UserTweets":{"extends":"UserInteraction","properties":[]},"VisualArtsEvent":{"extends":"Event","properties":[]},"Intangible":{"extends":"Thing","properties":[]},"AlignmentObject":{"extends":"Intangible","properties":{"alignmentType":{"expectedTypes":["Text"]},"educationalFramework":{"expectedTypes":["Text"]},"targetDescription":{"expectedTypes":["Text"]},"targetName":{"expectedTypes":["Text"]},"targetUrl":{"expectedTypes":["URL"]}}},"Audience":{"extends":"Intangible","properties":{"audienceType":{"expectedTypes":["Text"]},"geographicArea":{"expectedTypes":["AdministrativeArea"]}}},"BusinessAudience":{"extends":"Audience","properties":{"numberofEmployees":{"expectedTypes":["QuantitativeValue"]},"yearlyRevenue":{"expectedTypes":["QuantitativeValue"]},"yearsInOperation":{"expectedTypes":["QuantitativeValue"]}}},"EducationalAudience":{"extends":"Audience","properties":{"educationalRole":{"expectedTypes":["Text"]}}},"MedicalAudience":{"extends":"Audience","properties":[]},"PeopleAudience":{"extends":"Audience","properties":{"healthCondition":{"expectedTypes":["MedicalCondition"]},"requiredGender":{"expectedTypes":["Text"]},"requiredMaxAge":{"expectedTypes":["Integer"]},"requiredMinAge":{"expectedTypes":["Integer"]},"suggestedGender":{"expectedTypes":["Text"]},"suggestedMaxAge":{"expectedTypes":["Number"]},"suggestedMinAge":{"expectedTypes":["Number"]}}},"ParentAudience":{"extends":"PeopleAudience","properties":{"childMaxAge":{"expectedTypes":["Number"]},"childMinAge":{"expectedTypes":["Number"]}}},"Brand":{"extends":"Intangible","properties":{"logo":{"expectedTypes":["ImageObject","URL"]}}},"Demand":{"extends":"Intangible","properties":{"acceptedPaymentMethod":{"expectedTypes":["PaymentMethod"]},"advanceBookingRequirement":{"expectedTypes":["QuantitativeValue"]},"availability":{"expectedTypes":["ItemAvailability"]},"availabilityEnds":{"expectedTypes":["DateTime"]},"availabilityStarts":{"expectedTypes":["DateTime"]},"availableAtOrFrom":{"expectedTypes":["Place"]},"availableDeliveryMethod":{"expectedTypes":["DeliveryMethod"]},"businessFunction":{"expectedTypes":["BusinessFunction"]},"deliveryLeadTime":{"expectedTypes":["QuantitativeValue"]},"eligibleCustomerType":{"expectedTypes":["BusinessEntityType"]},"eligibleDuration":{"expectedTypes":["QuantitativeValue"]},"eligibleQuantity":{"expectedTypes":["QuantitativeValue"]},"eligibleRegion":{"expectedTypes":["GeoShape","Text"]},"eligibleTransactionVolume":{"expectedTypes":["PriceSpecification"]},"gtin13":{"expectedTypes":["Text"]},"gtin14":{"expectedTypes":["Text"]},"gtin8":{"expectedTypes":["Text"]},"includesObject":{"expectedTypes":["TypeAndQuantityNode"]},"inventoryLevel":{"expectedTypes":["QuantitativeValue"]},"itemCondition":{"expectedTypes":["OfferItemCondition"]},"itemOffered":{"expectedTypes":["Product"]},"mpn":{"expectedTypes":["Text"]},"priceSpecification":{"expectedTypes":["PriceSpecification"]},"seller":{"expectedTypes":["Organization","Person"]},"serialNumber":{"expectedTypes":["Text"]},"sku":{"expectedTypes":["Text"]},"validFrom":{"expectedTypes":["DateTime"]},"validThrough":{"expectedTypes":["DateTime"]},"warranty":{"expectedTypes":["WarrantyPromise"]}}},"Enumeration":{"extends":"Intangible","properties":[]},"BookFormatType":{"extends":"Enumeration","properties":[]},"BusinessEntityType":{"extends":"Enumeration","properties":[]},"BusinessFunction":{"extends":"Enumeration","properties":[]},"ContactPointOption":{"extends":"Enumeration","properties":[]},"DayOfWeek":{"extends":"Enumeration","properties":[]},"DeliveryMethod":{"extends":"Enumeration","properties":[]},"LockerDelivery":{"extends":"DeliveryMethod","properties":[]},"OnSitePickup":{"extends":"DeliveryMethod","properties":[]},"ParcelService":{"extends":"DeliveryMethod","properties":[]},"EventStatusType":{"extends":"Enumeration","properties":[]},"ItemAvailability":{"extends":"Enumeration","properties":[]},"OfferItemCondition":{"extends":"Enumeration","properties":[]},"OrderStatus":{"extends":"Enumeration","properties":[]},"PaymentMethod":{"extends":"Enumeration","properties":[]},"CreditCard":{"extends":"PaymentMethod","properties":[]},"QualitativeValue":{"extends":"Enumeration","properties":{"equal":{"expectedTypes":["QualitativeValue"]},"greater":{"expectedTypes":["QualitativeValue"]},"greaterOrEqual":{"expectedTypes":["QualitativeValue"]},"lesser":{"expectedTypes":["QualitativeValue"]},"lesserOrEqual":{"expectedTypes":["QualitativeValue"]},"nonEqual":{"expectedTypes":["QualitativeValue"]},"valueReference":{"expectedTypes":["Enumeration","StructuredValue"]}}},"Specialty":{"extends":"Enumeration","properties":[]},"MedicalSpecialty":{"extends":"MedicalEnumeration","properties":[]},"WarrantyScope":{"extends":"Enumeration","properties":[]},"JobPosting":{"extends":"Intangible","properties":{"baseSalary":{"expectedTypes":["Number"]},"benefits":{"expectedTypes":["Text"]},"datePosted":{"expectedTypes":["Date"]},"educationRequirements":{"expectedTypes":["Text"]},"employmentType":{"expectedTypes":["Text"]},"experienceRequirements":{"expectedTypes":["Text"]},"hiringOrganization":{"expectedTypes":["Organization"]},"incentives":{"expectedTypes":["Text"]},"industry":{"expectedTypes":["Text"]},"jobLocation":{"expectedTypes":["Place"]},"occupationalCategory":{"expectedTypes":["Text"]},"qualifications":{"expectedTypes":["Text"]},"responsibilities":{"expectedTypes":["Text"]},"salaryCurrency":{"expectedTypes":["Text"]},"skills":{"expectedTypes":["Text"]},"specialCommitments":{"expectedTypes":["Text"]},"title":{"expectedTypes":["Text"]},"workHours":{"expectedTypes":["Text"]}}},"Language":{"extends":"Intangible","properties":[]},"Offer":{"extends":"Intangible","properties":{"acceptedPaymentMethod":{"expectedTypes":["PaymentMethod"]},"addOn":{"expectedTypes":["Offer"]},"advanceBookingRequirement":{"expectedTypes":["QuantitativeValue"]},"aggregateRating":{"expectedTypes":["AggregateRating"]},"availability":{"expectedTypes":["ItemAvailability"]},"availabilityEnds":{"expectedTypes":["DateTime"]},"availabilityStarts":{"expectedTypes":["DateTime"]},"availableAtOrFrom":{"expectedTypes":["Place"]},"availableDeliveryMethod":{"expectedTypes":["DeliveryMethod"]},"businessFunction":{"expectedTypes":["BusinessFunction"]},"category":{"expectedTypes":["PhysicalActivityCategory","Text","Thing"]},"deliveryLeadTime":{"expectedTypes":["QuantitativeValue"]},"eligibleCustomerType":{"expectedTypes":["BusinessEntityType"]},"eligibleDuration":{"expectedTypes":["QuantitativeValue"]},"eligibleQuantity":{"expectedTypes":["QuantitativeValue"]},"eligibleRegion":{"expectedTypes":["GeoShape","Text"]},"eligibleTransactionVolume":{"expectedTypes":["PriceSpecification"]},"gtin13":{"expectedTypes":["Text"]},"gtin14":{"expectedTypes":["Text"]},"gtin8":{"expectedTypes":["Text"]},"includesObject":{"expectedTypes":["TypeAndQuantityNode"]},"inventoryLevel":{"expectedTypes":["QuantitativeValue"]},"itemCondition":{"expectedTypes":["OfferItemCondition"]},"itemOffered":{"expectedTypes":["Product"]},"mpn":{"expectedTypes":["Text"]},"price":{"expectedTypes":["Number","Text"]},"priceCurrency":{"expectedTypes":["Text"]},"priceSpecification":{"expectedTypes":["PriceSpecification"]},"priceValidUntil":{"expectedTypes":["Date"]},"review":{"expectedTypes":["Review"]},"reviews":{"expectedTypes":["Review"]},"seller":{"expectedTypes":["Organization","Person"]},"serialNumber":{"expectedTypes":["Text"]},"sku":{"expectedTypes":["Text"]},"validFrom":{"expectedTypes":["DateTime"]},"validThrough":{"expectedTypes":["DateTime"]},"warranty":{"expectedTypes":["WarrantyPromise"]}}},"AggregateOffer":{"extends":"Offer","properties":{"highPrice":{"expectedTypes":["Number","Text"]},"lowPrice":{"expectedTypes":["Number","Text"]},"offerCount":{"expectedTypes":["Integer"]}}},"Order":{"extends":"Intangible","properties":{"acceptedOffer":{"expectedTypes":["Offer"]},"billingAddress":{"expectedTypes":["PostalAddress"]},"confirmationNumber":{"expectedTypes":["Text"]},"customer":{"expectedTypes":["Organization","Person"]},"discount":{"expectedTypes":["Number","Text"]},"discountCode":{"expectedTypes":["Text"]},"discountCurrency":{"expectedTypes":["Text"]},"isGift":{"expectedTypes":["Boolean"]},"merchant":{"expectedTypes":["Organization","Person"]},"orderDate":{"expectedTypes":["DateTime"]},"orderedItem":{"expectedTypes":["Product"]},"orderNumber":{"expectedTypes":["Text"]},"orderStatus":{"expectedTypes":["OrderStatus"]},"paymentDue":{"expectedTypes":["DateTime"]},"paymentMethod":{"expectedTypes":["PaymentMethod"]},"paymentMethodId":{"expectedTypes":["Text"]},"paymentUrl":{"expectedTypes":["URL"]}}},"ParcelDelivery":{"extends":"Intangible","properties":{"carrier":{"expectedTypes":["Organization"]},"deliveryAddress":{"expectedTypes":["PostalAddress"]},"deliveryStatus":{"expectedTypes":["DeliveryEvent"]},"expectedArrivalFrom":{"expectedTypes":["DateTime"]},"expectedArrivalUntil":{"expectedTypes":["DateTime"]},"hasDeliveryMethod":{"expectedTypes":["DeliveryMethod"]},"itemShipped":{"expectedTypes":["Product"]},"originAddress":{"expectedTypes":["PostalAddress"]},"partOfOrder":{"expectedTypes":["Order"]},"trackingNumber":{"expectedTypes":["Text"]},"trackingUrl":{"expectedTypes":["URL"]}}},"Permit":{"extends":"Intangible","properties":{"issuedBy":{"expectedTypes":["Organization"]},"issuedThrough":{"expectedTypes":["Service"]},"permitAudience":{"expectedTypes":["Audience"]},"validFor":{"expectedTypes":["Duration"]},"validFrom":{"expectedTypes":["DateTime"]},"validIn":{"expectedTypes":["AdministrativeArea"]},"validUntil":{"expectedTypes":["Date"]}}},"GovernmentPermit":{"extends":"Permit","properties":[]},"Quantity":{"extends":"Intangible","properties":[]},"Distance":{"extends":"Quantity","properties":[]},"Duration":{"extends":"Quantity","properties":[]},"Energy":{"extends":"Quantity","properties":[]},"Mass":{"extends":"Quantity","properties":[]},"Rating":{"extends":"Intangible","properties":{"bestRating":{"expectedTypes":["Number","Text"]},"ratingValue":{"expectedTypes":["Text"]},"worstRating":{"expectedTypes":["Number","Text"]}}},"AggregateRating":{"extends":"Rating","properties":{"itemReviewed":{"expectedTypes":["Thing"]},"ratingCount":{"expectedTypes":["Number"]},"reviewCount":{"expectedTypes":["Number"]}}},"Service":{"extends":"Intangible","properties":{"availableChannel":{"expectedTypes":["ServiceChannel"]},"produces":{"expectedTypes":["Thing"]},"provider":{"expectedTypes":["Organization","Person"]},"serviceArea":{"expectedTypes":["AdministrativeArea"]},"serviceAudience":{"expectedTypes":["Audience"]},"serviceType":{"expectedTypes":["Text"]}}},"GovernmentService":{"extends":"Service","properties":{"serviceOperator":{"expectedTypes":["Organization"]}}},"ServiceChannel":{"extends":"Intangible","properties":{"availableLanguage":{"expectedTypes":["Language"]},"processingTime":{"expectedTypes":["Duration"]},"providesService":{"expectedTypes":["Service"]},"serviceLocation":{"expectedTypes":["Place"]},"servicePhone":{"expectedTypes":["ContactPoint"]},"servicePostalAddress":{"expectedTypes":["PostalAddress"]},"serviceSmsNumber":{"expectedTypes":["ContactPoint"]},"serviceUrl":{"expectedTypes":["URL"]}}},"StructuredValue":{"extends":"Intangible","properties":[]},"ContactPoint":{"extends":"StructuredValue","properties":{"areaServed":{"expectedTypes":["AdministrativeArea"]},"availableLanguage":{"expectedTypes":["Language"]},"contactOption":{"expectedTypes":["ContactPointOption"]},"contactType":{"expectedTypes":["Text"]},"email":{"expectedTypes":["Text"]},"faxNumber":{"expectedTypes":["Text"]},"hoursAvailable":{"expectedTypes":["OpeningHoursSpecification"]},"productSupported":{"expectedTypes":["Product","Text"]},"telephone":{"expectedTypes":["Text"]}}},"PostalAddress":{"extends":"ContactPoint","properties":{"addressCountry":{"expectedTypes":["Country"]},"addressLocality":{"expectedTypes":["Text"]},"addressRegion":{"expectedTypes":["Text"]},"postalCode":{"expectedTypes":["Text"]},"postOfficeBoxNumber":{"expectedTypes":["Text"]},"streetAddress":{"expectedTypes":["Text"]}}},"GeoCoordinates":{"extends":"StructuredValue","properties":{"elevation":{"expectedTypes":["Number","Text"]},"latitude":{"expectedTypes":["Number","Text"]},"longitude":{"expectedTypes":["Number","Text"]}}},"GeoShape":{"extends":"StructuredValue","properties":{"box":{"expectedTypes":["Text"]},"circle":{"expectedTypes":["Text"]},"elevation":{"expectedTypes":["Number","Text"]},"line":{"expectedTypes":["Text"]},"polygon":{"expectedTypes":["Text"]}}},"NutritionInformation":{"extends":"StructuredValue","properties":{"calories":{"expectedTypes":["Energy"]},"carbohydrateContent":{"expectedTypes":["Mass"]},"cholesterolContent":{"expectedTypes":["Mass"]},"fatContent":{"expectedTypes":["Mass"]},"fiberContent":{"expectedTypes":["Mass"]},"proteinContent":{"expectedTypes":["Mass"]},"saturatedFatContent":{"expectedTypes":["Mass"]},"servingSize":{"expectedTypes":["Text"]},"sodiumContent":{"expectedTypes":["Mass"]},"sugarContent":{"expectedTypes":["Mass"]},"transFatContent":{"expectedTypes":["Mass"]},"unsaturatedFatContent":{"expectedTypes":["Mass"]}}},"OpeningHoursSpecification":{"extends":"StructuredValue","properties":{"closes":{"expectedTypes":["Time"]},"dayOfWeek":{"expectedTypes":["DayOfWeek"]},"opens":{"expectedTypes":["Time"]},"validFrom":{"expectedTypes":["DateTime"]},"validThrough":{"expectedTypes":["DateTime"]}}},"OwnershipInfo":{"extends":"StructuredValue","properties":{"acquiredFrom":{"expectedTypes":["Organization","Person"]},"ownedFrom":{"expectedTypes":["DateTime"]},"ownedThrough":{"expectedTypes":["DateTime"]},"typeOfGood":{"expectedTypes":["Product"]}}},"PriceSpecification":{"extends":"StructuredValue","properties":{"eligibleQuantity":{"expectedTypes":["QuantitativeValue"]},"eligibleTransactionVolume":{"expectedTypes":["PriceSpecification"]},"maxPrice":{"expectedTypes":["Number"]},"minPrice":{"expectedTypes":["Number"]},"price":{"expectedTypes":["Number","Text"]},"priceCurrency":{"expectedTypes":["Text"]},"validFrom":{"expectedTypes":["DateTime"]},"validThrough":{"expectedTypes":["DateTime"]},"valueAddedTaxIncluded":{"expectedTypes":["Boolean"]}}},"DeliveryChargeSpecification":{"extends":"PriceSpecification","properties":{"appliesToDeliveryMethod":{"expectedTypes":["DeliveryMethod"]},"eligibleRegion":{"expectedTypes":["GeoShape","Text"]}}},"PaymentChargeSpecification":{"extends":"PriceSpecification","properties":{"appliesToDeliveryMethod":{"expectedTypes":["DeliveryMethod"]},"appliesToPaymentMethod":{"expectedTypes":["PaymentMethod"]}}},"UnitPriceSpecification":{"extends":"PriceSpecification","properties":{"billingIncrement":{"expectedTypes":["Number"]},"priceType":{"expectedTypes":["Text"]},"unitCode":{"expectedTypes":["Text"]}}},"QuantitativeValue":{"extends":"StructuredValue","properties":{"maxValue":{"expectedTypes":["Number"]},"minValue":{"expectedTypes":["Number"]},"unitCode":{"expectedTypes":["Text"]},"value":{"expectedTypes":["Number"]},"valueReference":{"expectedTypes":["Enumeration","StructuredValue"]}}},"TypeAndQuantityNode":{"extends":"StructuredValue","properties":{"amountOfThisGood":{"expectedTypes":["Number"]},"businessFunction":{"expectedTypes":["BusinessFunction"]},"typeOfGood":{"expectedTypes":["Product"]},"unitCode":{"expectedTypes":["Text"]}}},"WarrantyPromise":{"extends":"StructuredValue","properties":{"durationOfWarranty":{"expectedTypes":["QuantitativeValue"]},"warrantyScope":{"expectedTypes":["WarrantyScope"]}}},"MedicalEntity":{"extends":"Thing","properties":{"code":{"expectedTypes":["MedicalCode"]},"guideline":{"expectedTypes":["MedicalGuideline"]},"medicineSystem":{"expectedTypes":["MedicineSystem"]},"recognizingAuthority":{"expectedTypes":["Organization"]},"relevantSpecialty":{"expectedTypes":["MedicalSpecialty"]},"study":{"expectedTypes":["MedicalStudy"]}}},"AnatomicalStructure":{"extends":"MedicalEntity","properties":{"associatedPathophysiology":{"expectedTypes":["Text"]},"bodyLocation":{"expectedTypes":["Text"]},"connectedTo":{"expectedTypes":["AnatomicalStructure"]},"diagram":{"expectedTypes":["ImageObject"]},"function":{"expectedTypes":["Text"]},"partOfSystem":{"expectedTypes":["AnatomicalSystem"]},"relatedCondition":{"expectedTypes":["MedicalCondition"]},"relatedTherapy":{"expectedTypes":["MedicalTherapy"]},"subStructure":{"expectedTypes":["AnatomicalStructure"]}}},"Bone":{"extends":"AnatomicalStructure","properties":[]},"BrainStructure":{"extends":"AnatomicalStructure","properties":[]},"Joint":{"extends":"AnatomicalStructure","properties":{"biomechnicalClass":{"expectedTypes":["Text"]},"functionalClass":{"expectedTypes":["Text"]},"structuralClass":{"expectedTypes":["Text"]}}},"Ligament":{"extends":"AnatomicalStructure","properties":[]},"Muscle":{"extends":"AnatomicalStructure","properties":{"action":{"expectedTypes":["Text"]},"antagonist":{"expectedTypes":["Muscle"]},"bloodSupply":{"expectedTypes":["Vessel"]},"insertion":{"expectedTypes":["AnatomicalStructure"]},"nerve":{"expectedTypes":["Nerve"]},"origin":{"expectedTypes":["AnatomicalStructure"]}}},"Nerve":{"extends":"AnatomicalStructure","properties":{"branch":{"expectedTypes":["AnatomicalStructure","Nerve"]},"nerveMotor":{"expectedTypes":["Muscle"]},"sensoryUnit":{"expectedTypes":["AnatomicalStructure","SuperficialAnatomy"]},"sourcedFrom":{"expectedTypes":["BrainStructure"]}}},"Vessel":{"extends":"AnatomicalStructure","properties":[]},"Artery":{"extends":"Vessel","properties":{"arterialBranch":{"expectedTypes":["AnatomicalStructure"]},"source":{"expectedTypes":["AnatomicalStructure"]},"supplyTo":{"expectedTypes":["AnatomicalStructure"]}}},"LymphaticVessel":{"extends":"Vessel","properties":{"originatesFrom":{"expectedTypes":["Vessel"]},"regionDrained":{"expectedTypes":["AnatomicalStructure","AnatomicalSystem"]},"runsTo":{"expectedTypes":["Vessel"]}}},"Vein":{"extends":"Vessel","properties":{"drainsTo":{"expectedTypes":["Vessel"]},"regionDrained":{"expectedTypes":["AnatomicalStructure","AnatomicalSystem"]},"tributary":{"expectedTypes":["AnatomicalStructure"]}}},"AnatomicalSystem":{"extends":"MedicalEntity","properties":{"associatedPathophysiology":{"expectedTypes":["Text"]},"comprisedOf":{"expectedTypes":["AnatomicalStructure","AnatomicalSystem"]},"relatedCondition":{"expectedTypes":["MedicalCondition"]},"relatedStructure":{"expectedTypes":["AnatomicalStructure"]},"relatedTherapy":{"expectedTypes":["MedicalTherapy"]}}},"MedicalCause":{"extends":"MedicalEntity","properties":{"causeOf":{"expectedTypes":["MedicalEntity"]}}},"MedicalCondition":{"extends":"MedicalEntity","properties":{"associatedAnatomy":{"expectedTypes":["AnatomicalStructure","AnatomicalSystem","SuperficialAnatomy"]},"cause":{"expectedTypes":["MedicalCause"]},"differentialDiagnosis":{"expectedTypes":["DDxElement"]},"epidemiology":{"expectedTypes":["Text"]},"expectedPrognosis":{"expectedTypes":["Text"]},"naturalProgression":{"expectedTypes":["Text"]},"pathophysiology":{"expectedTypes":["Text"]},"possibleComplication":{"expectedTypes":["Text"]},"possibleTreatment":{"expectedTypes":["MedicalTherapy"]},"primaryPrevention":{"expectedTypes":["MedicalTherapy"]},"riskFactor":{"expectedTypes":["MedicalRiskFactor"]},"secondaryPrevention":{"expectedTypes":["MedicalTherapy"]},"signOrSymptom":{"expectedTypes":["MedicalSignOrSymptom"]},"stage":{"expectedTypes":["MedicalConditionStage"]},"subtype":{"expectedTypes":["Text"]},"typicalTest":{"expectedTypes":["MedicalTest"]}}},"InfectiousDisease":{"extends":"MedicalCondition","properties":{"infectiousAgent":{"expectedTypes":["Text"]},"infectiousAgentClass":{"expectedTypes":["InfectiousAgentClass"]},"transmissionMethod":{"expectedTypes":["Text"]}}},"MedicalContraindication":{"extends":"MedicalEntity","properties":[]},"MedicalDevice":{"extends":"MedicalEntity","properties":{"adverseOutcome":{"expectedTypes":["MedicalEntity"]},"contraindication":{"expectedTypes":["MedicalContraindication"]},"indication":{"expectedTypes":["MedicalIndication"]},"postOp":{"expectedTypes":["Text"]},"preOp":{"expectedTypes":["Text"]},"procedure":{"expectedTypes":["Text"]},"purpose":{"expectedTypes":["MedicalDevicePurpose","Thing"]},"seriousAdverseOutcome":{"expectedTypes":["MedicalEntity"]}}},"MedicalGuideline":{"extends":"MedicalEntity","properties":{"evidenceLevel":{"expectedTypes":["MedicalEvidenceLevel"]},"evidenceOrigin":{"expectedTypes":["Text"]},"guidelineDate":{"expectedTypes":["Date"]},"guidelineSubject":{"expectedTypes":["MedicalEntity"]}}},"MedicalGuidelineContraindication":{"extends":"MedicalGuideline","properties":[]},"MedicalGuidelineRecommendation":{"extends":"MedicalGuideline","properties":{"recommendationStrength":{"expectedTypes":["Text"]}}},"MedicalIndication":{"extends":"MedicalEntity","properties":[]},"ApprovedIndication":{"extends":"MedicalIndication","properties":[]},"PreventionIndication":{"extends":"MedicalIndication","properties":[]},"TreatmentIndication":{"extends":"MedicalIndication","properties":[]},"MedicalIntangible":{"extends":"MedicalEntity","properties":[]},"DDxElement":{"extends":"MedicalIntangible","properties":{"diagnosis":{"expectedTypes":["MedicalCondition"]},"distinguishingSign":{"expectedTypes":["MedicalSignOrSymptom"]}}},"DoseSchedule":{"extends":"MedicalIntangible","properties":{"doseUnit":{"expectedTypes":["Text"]},"doseValue":{"expectedTypes":["Number"]},"frequency":{"expectedTypes":["Text"]},"targetPopulation":{"expectedTypes":["Text"]}}},"MaximumDoseSchedule":{"extends":"DoseSchedule","properties":[]},"RecommendedDoseSchedule":{"extends":"DoseSchedule","properties":[]},"ReportedDoseSchedule":{"extends":"DoseSchedule","properties":[]},"DrugCost":{"extends":"MedicalIntangible","properties":{"applicableLocation":{"expectedTypes":["AdministrativeArea"]},"costCategory":{"expectedTypes":["DrugCostCategory"]},"costCurrency":{"expectedTypes":["Text"]},"costOrigin":{"expectedTypes":["Text"]},"costPerUnit":{"expectedTypes":["Number","Text"]},"drugUnit":{"expectedTypes":["Text"]}}},"DrugLegalStatus":{"extends":"MedicalIntangible","properties":{"applicableLocation":{"expectedTypes":["AdministrativeArea"]}}},"DrugStrength":{"extends":"MedicalIntangible","properties":{"activeIngredient":{"expectedTypes":["Text"]},"availableIn":{"expectedTypes":["AdministrativeArea"]},"strengthUnit":{"expectedTypes":["Text"]},"strengthValue":{"expectedTypes":["Number"]}}},"MedicalCode":{"extends":"MedicalIntangible","properties":{"codeValue":{"expectedTypes":["Text"]},"codingSystem":{"expectedTypes":["Text"]}}},"MedicalConditionStage":{"extends":"MedicalIntangible","properties":{"stageAsNumber":{"expectedTypes":["Number"]},"subStageSuffix":{"expectedTypes":["Text"]}}},"MedicalEnumeration":{"extends":"MedicalIntangible","properties":[]},"DrugCostCategory":{"extends":"MedicalEnumeration","properties":[]},"DrugPregnancyCategory":{"extends":"MedicalEnumeration","properties":[]},"DrugPrescriptionStatus":{"extends":"MedicalEnumeration","properties":[]},"InfectiousAgentClass":{"extends":"MedicalEnumeration","properties":[]},"MedicalDevicePurpose":{"extends":"MedicalEnumeration","properties":[]},"MedicalEvidenceLevel":{"extends":"MedicalEnumeration","properties":[]},"MedicalImagingTechnique":{"extends":"MedicalEnumeration","properties":[]},"MedicalObservationalStudyDesign":{"extends":"MedicalEnumeration","properties":[]},"MedicalProcedureType":{"extends":"MedicalEnumeration","properties":[]},"MedicalStudyStatus":{"extends":"MedicalEnumeration","properties":[]},"MedicalTrialDesign":{"extends":"MedicalEnumeration","properties":[]},"MedicineSystem":{"extends":"MedicalEnumeration","properties":[]},"PhysicalActivityCategory":{"extends":"MedicalEnumeration","properties":[]},"PhysicalExam":{"extends":"MedicalEnumeration","properties":[]},"MedicalProcedure":{"extends":"MedicalEntity","properties":{"followup":{"expectedTypes":["Text"]},"howPerformed":{"expectedTypes":["Text"]},"preparation":{"expectedTypes":["Text"]},"procedureType":{"expectedTypes":["MedicalProcedureType"]}}},"DiagnosticProcedure":{"extends":"MedicalProcedure","properties":[]},"PalliativeProcedure":{"extends":"MedicalProcedure","properties":[]},"TherapeuticProcedure":{"extends":"MedicalProcedure","properties":[]},"MedicalRiskEstimator":{"extends":"MedicalEntity","properties":{"estimatesRiskOf":{"expectedTypes":["MedicalEntity"]},"includedRiskFactor":{"expectedTypes":["MedicalRiskFactor"]}}},"MedicalRiskCalculator":{"extends":"MedicalRiskEstimator","properties":[]},"MedicalRiskScore":{"extends":"MedicalRiskEstimator","properties":{"algorithm":{"expectedTypes":["Text"]}}},"MedicalRiskFactor":{"extends":"MedicalEntity","properties":{"increasesRiskOf":{"expectedTypes":["MedicalEntity"]}}},"MedicalSignOrSymptom":{"extends":"MedicalEntity","properties":{"cause":{"expectedTypes":["MedicalCause"]},"possibleTreatment":{"expectedTypes":["MedicalTherapy"]}}},"MedicalSign":{"extends":"MedicalSignOrSymptom","properties":{"identifyingExam":{"expectedTypes":["PhysicalExam"]},"identifyingTest":{"expectedTypes":["MedicalTest"]}}},"MedicalSymptom":{"extends":"MedicalSignOrSymptom","properties":[]},"MedicalStudy":{"extends":"MedicalEntity","properties":{"outcome":{"expectedTypes":["Text"]},"population":{"expectedTypes":["Text"]},"sponsor":{"expectedTypes":["Organization"]},"status":{"expectedTypes":["MedicalStudyStatus"]},"studyLocation":{"expectedTypes":["AdministrativeArea"]},"studySubject":{"expectedTypes":["MedicalEntity"]}}},"MedicalObservationalStudy":{"extends":"MedicalStudy","properties":{"studyDesign":{"expectedTypes":["MedicalObservationalStudyDesign"]}}},"MedicalTrial":{"extends":"MedicalStudy","properties":{"phase":{"expectedTypes":["Text"]},"trialDesign":{"expectedTypes":["MedicalTrialDesign"]}}},"MedicalTest":{"extends":"MedicalEntity","properties":{"affectedBy":{"expectedTypes":["Drug"]},"normalRange":{"expectedTypes":["Text"]},"signDetected":{"expectedTypes":["MedicalSign"]},"usedToDiagnose":{"expectedTypes":["MedicalCondition"]},"usesDevice":{"expectedTypes":["MedicalDevice"]}}},"BloodTest":{"extends":"MedicalTest","properties":[]},"ImagingTest":{"extends":"MedicalTest","properties":{"imagingTechnique":{"expectedTypes":["MedicalImagingTechnique"]}}},"MedicalTestPanel":{"extends":"MedicalTest","properties":{"subTest":{"expectedTypes":["MedicalTest"]}}},"PathologyTest":{"extends":"MedicalTest","properties":{"tissueSample":{"expectedTypes":["Text"]}}},"MedicalTherapy":{"extends":"MedicalEntity","properties":{"adverseOutcome":{"expectedTypes":["MedicalEntity"]},"contraindication":{"expectedTypes":["MedicalContraindication"]},"duplicateTherapy":{"expectedTypes":["MedicalTherapy"]},"indication":{"expectedTypes":["MedicalIndication"]},"seriousAdverseOutcome":{"expectedTypes":["MedicalEntity"]}}},"DietarySupplement":{"extends":"MedicalTherapy","properties":{"activeIngredient":{"expectedTypes":["Text"]},"background":{"expectedTypes":["Text"]},"dosageForm":{"expectedTypes":["Text"]},"isProprietary":{"expectedTypes":["Boolean"]},"legalStatus":{"expectedTypes":["DrugLegalStatus"]},"manufacturer":{"expectedTypes":["Organization"]},"maximumIntake":{"expectedTypes":["MaximumDoseSchedule"]},"mechanismOfAction":{"expectedTypes":["Text"]},"nonProprietaryName":{"expectedTypes":["Text"]},"recommendedIntake":{"expectedTypes":["RecommendedDoseSchedule"]},"safetyConsideration":{"expectedTypes":["Text"]},"targetPopulation":{"expectedTypes":["Text"]}}},"Drug":{"extends":"MedicalTherapy","properties":{"activeIngredient":{"expectedTypes":["Text"]},"administrationRoute":{"expectedTypes":["Text"]},"alcoholWarning":{"expectedTypes":["Text"]},"availableStrength":{"expectedTypes":["DrugStrength"]},"breastfeedingWarning":{"expectedTypes":["Text"]},"clincalPharmacology":{"expectedTypes":["Text"]},"cost":{"expectedTypes":["DrugCost"]},"dosageForm":{"expectedTypes":["Text"]},"doseSchedule":{"expectedTypes":["DoseSchedule"]},"drugClass":{"expectedTypes":["DrugClass"]},"foodWarning":{"expectedTypes":["Text"]},"interactingDrug":{"expectedTypes":["Drug"]},"isAvailableGenerically":{"expectedTypes":["Boolean"]},"isProprietary":{"expectedTypes":["Boolean"]},"labelDetails":{"expectedTypes":["URL"]},"legalStatus":{"expectedTypes":["DrugLegalStatus"]},"manufacturer":{"expectedTypes":["Organization"]},"mechanismOfAction":{"expectedTypes":["Text"]},"nonProprietaryName":{"expectedTypes":["Text"]},"overdosage":{"expectedTypes":["Text"]},"pregnancyCategory":{"expectedTypes":["DrugPregnancyCategory"]},"pregnancyWarning":{"expectedTypes":["Text"]},"prescribingInfo":{"expectedTypes":["URL"]},"prescriptionStatus":{"expectedTypes":["DrugPrescriptionStatus"]},"relatedDrug":{"expectedTypes":["Drug"]},"warning":{"expectedTypes":["Text","URL"]}}},"DrugClass":{"extends":"MedicalTherapy","properties":{"drug":{"expectedTypes":["Drug"]}}},"LifestyleModification":{"extends":"MedicalTherapy","properties":[]},"PhysicalActivity":{"extends":"LifestyleModification","properties":{"associatedAnatomy":{"expectedTypes":["AnatomicalStructure","AnatomicalSystem","SuperficialAnatomy"]},"category":{"expectedTypes":["PhysicalActivityCategory","Text","Thing"]},"epidemiology":{"expectedTypes":["Text"]},"pathophysiology":{"expectedTypes":["Text"]}}},"PhysicalTherapy":{"extends":"MedicalTherapy","properties":[]},"PsychologicalTreatment":{"extends":"MedicalTherapy","properties":[]},"RadiationTherapy":{"extends":"MedicalTherapy","properties":[]},"SuperficialAnatomy":{"extends":"MedicalEntity","properties":{"associatedPathophysiology":{"expectedTypes":["Text"]},"relatedAnatomy":{"expectedTypes":["AnatomicalStructure","AnatomicalSystem"]},"relatedCondition":{"expectedTypes":["MedicalCondition"]},"relatedTherapy":{"expectedTypes":["MedicalTherapy"]},"significance":{"expectedTypes":["Text"]}}},"Organization":{"extends":"Thing","properties":{"address":{"expectedTypes":["PostalAddress"]},"aggregateRating":{"expectedTypes":["AggregateRating"]},"brand":{"expectedTypes":["Brand","Organization"]},"contactPoint":{"expectedTypes":["ContactPoint"]},"contactPoints":{"expectedTypes":["ContactPoint"]},"department":{"expectedTypes":["Organization"]},"duns":{"expectedTypes":["Text"]},"email":{"expectedTypes":["Text"]},"employee":{"expectedTypes":["Person"]},"employees":{"expectedTypes":["Person"]},"event":{"expectedTypes":["Event"]},"events":{"expectedTypes":["Event"]},"faxNumber":{"expectedTypes":["Text"]},"founder":{"expectedTypes":["Person"]},"founders":{"expectedTypes":["Person"]},"foundingDate":{"expectedTypes":["Date"]},"globalLocationNumber":{"expectedTypes":["Text"]},"hasPOS":{"expectedTypes":["Place"]},"interactionCount":{"expectedTypes":["Text"]},"isicV4":{"expectedTypes":["Text"]},"legalName":{"expectedTypes":["Text"]},"location":{"expectedTypes":["Place","PostalAddress"]},"logo":{"expectedTypes":["ImageObject","URL"]},"makesOffer":{"expectedTypes":["Offer"]},"member":{"expectedTypes":["Organization","Person"]},"members":{"expectedTypes":["Organization","Person"]},"naics":{"expectedTypes":["Text"]},"owns":{"expectedTypes":["OwnershipInfo","Product"]},"review":{"expectedTypes":["Review"]},"reviews":{"expectedTypes":["Review"]},"seeks":{"expectedTypes":["Demand"]},"subOrganization":{"expectedTypes":["Organization"]},"taxID":{"expectedTypes":["Text"]},"telephone":{"expectedTypes":["Text"]},"vatID":{"expectedTypes":["Text"]}}},"Corporation":{"extends":"Organization","properties":{"tickerSymbol":{"expectedTypes":["Text"]}}},"EducationalOrganization":{"extends":"Organization","properties":{"alumni":{"expectedTypes":["Person"]}}},"CollegeOrUniversity":{"extends":"EducationalOrganization","properties":[]},"ElementarySchool":{"extends":"EducationalOrganization","properties":[]},"HighSchool":{"extends":"EducationalOrganization","properties":[]},"MiddleSchool":{"extends":"EducationalOrganization","properties":[]},"Preschool":{"extends":"EducationalOrganization","properties":[]},"School":{"extends":"EducationalOrganization","properties":[]},"GovernmentOrganization":{"extends":"Organization","properties":[]},"LocalBusiness":{"extends":"Organization","properties":{"branchOf":{"expectedTypes":["Organization"]},"currenciesAccepted":{"expectedTypes":["Text"]},"openingHours":{"expectedTypes":["Duration"]},"paymentAccepted":{"expectedTypes":["Text"]},"priceRange":{"expectedTypes":["Text"]}}},"AnimalShelter":{"extends":"LocalBusiness","properties":[]},"AutomotiveBusiness":{"extends":"LocalBusiness","properties":[]},"AutoBodyShop":{"extends":"AutomotiveBusiness","properties":[]},"AutoDealer":{"extends":"AutomotiveBusiness","properties":[]},"AutoPartsStore":{"extends":"AutomotiveBusiness","properties":[]},"AutoRental":{"extends":"AutomotiveBusiness","properties":[]},"AutoRepair":{"extends":"AutomotiveBusiness","properties":[]},"AutoWash":{"extends":"AutomotiveBusiness","properties":[]},"GasStation":{"extends":"AutomotiveBusiness","properties":[]},"MotorcycleDealer":{"extends":"AutomotiveBusiness","properties":[]},"MotorcycleRepair":{"extends":"AutomotiveBusiness","properties":[]},"ChildCare":{"extends":"LocalBusiness","properties":[]},"DryCleaningOrLaundry":{"extends":"LocalBusiness","properties":[]},"EmergencyService":{"extends":"LocalBusiness","properties":[]},"FireStation":{"extends":"CivicStructure","properties":[]},"Hospital":{"extends":"CivicStructure","properties":{"availableService":{"expectedTypes":["MedicalProcedure","MedicalTest","MedicalTherapy"]},"medicalSpecialty":{"expectedTypes":["MedicalSpecialty"]}}},"PoliceStation":{"extends":"CivicStructure","properties":[]},"EmploymentAgency":{"extends":"LocalBusiness","properties":[]},"EntertainmentBusiness":{"extends":"LocalBusiness","properties":[]},"AdultEntertainment":{"extends":"EntertainmentBusiness","properties":[]},"AmusementPark":{"extends":"EntertainmentBusiness","properties":[]},"ArtGallery":{"extends":"EntertainmentBusiness","properties":[]},"Casino":{"extends":"EntertainmentBusiness","properties":[]},"ComedyClub":{"extends":"EntertainmentBusiness","properties":[]},"MovieTheater":{"extends":"CivicStructure","properties":[]},"NightClub":{"extends":"EntertainmentBusiness","properties":[]},"FinancialService":{"extends":"LocalBusiness","properties":[]},"AccountingService":{"extends":"FinancialService","properties":[]},"AutomatedTeller":{"extends":"FinancialService","properties":[]},"BankOrCreditUnion":{"extends":"FinancialService","properties":[]},"InsuranceAgency":{"extends":"FinancialService","properties":[]},"FoodEstablishment":{"extends":"LocalBusiness","properties":{"acceptsReservations":{"expectedTypes":["Text","URL"]},"menu":{"expectedTypes":["Text","URL"]},"servesCuisine":{"expectedTypes":["Text"]}}},"Bakery":{"extends":"FoodEstablishment","properties":[]},"BarOrPub":{"extends":"FoodEstablishment","properties":[]},"Brewery":{"extends":"FoodEstablishment","properties":[]},"CafeOrCoffeeShop":{"extends":"FoodEstablishment","properties":[]},"FastFoodRestaurant":{"extends":"FoodEstablishment","properties":[]},"IceCreamShop":{"extends":"FoodEstablishment","properties":[]},"Restaurant":{"extends":"FoodEstablishment","properties":[]},"Winery":{"extends":"FoodEstablishment","properties":[]},"GovernmentOffice":{"extends":"LocalBusiness","properties":[]},"PostOffice":{"extends":"GovernmentOffice","properties":[]},"HealthAndBeautyBusiness":{"extends":"LocalBusiness","properties":[]},"BeautySalon":{"extends":"HealthAndBeautyBusiness","properties":[]},"DaySpa":{"extends":"HealthAndBeautyBusiness","properties":[]},"HairSalon":{"extends":"HealthAndBeautyBusiness","properties":[]},"HealthClub":{"extends":"HealthAndBeautyBusiness","properties":[]},"NailSalon":{"extends":"HealthAndBeautyBusiness","properties":[]},"TattooParlor":{"extends":"HealthAndBeautyBusiness","properties":[]},"HomeAndConstructionBusiness":{"extends":"LocalBusiness","properties":[]},"Electrician":{"extends":"HomeAndConstructionBusiness","properties":[]},"GeneralContractor":{"extends":"HomeAndConstructionBusiness","properties":[]},"HVACBusiness":{"extends":"HomeAndConstructionBusiness","properties":[]},"HousePainter":{"extends":"HomeAndConstructionBusiness","properties":[]},"Locksmith":{"extends":"HomeAndConstructionBusiness","properties":[]},"MovingCompany":{"extends":"HomeAndConstructionBusiness","properties":[]},"Plumber":{"extends":"HomeAndConstructionBusiness","properties":[]},"RoofingContractor":{"extends":"HomeAndConstructionBusiness","properties":[]},"InternetCafe":{"extends":"LocalBusiness","properties":[]},"Library":{"extends":"LocalBusiness","properties":[]},"LodgingBusiness":{"extends":"LocalBusiness","properties":[]},"BedAndBreakfast":{"extends":"LodgingBusiness","properties":[]},"Hostel":{"extends":"LodgingBusiness","properties":[]},"Hotel":{"extends":"LodgingBusiness","properties":[]},"Motel":{"extends":"LodgingBusiness","properties":[]},"MedicalOrganization":{"extends":"LocalBusiness","properties":[]},"Dentist":{"extends":"MedicalOrganization","properties":[]},"DiagnosticLab":{"extends":"MedicalOrganization","properties":{"availableTest":{"expectedTypes":["MedicalTest"]}}},"MedicalClinic":{"extends":"MedicalOrganization","properties":{"availableService":{"expectedTypes":["MedicalProcedure","MedicalTest","MedicalTherapy"]},"medicalSpecialty":{"expectedTypes":["MedicalSpecialty"]}}},"Optician":{"extends":"MedicalOrganization","properties":[]},"Pharmacy":{"extends":"MedicalOrganization","properties":[]},"Physician":{"extends":"MedicalOrganization","properties":{"availableService":{"expectedTypes":["MedicalProcedure","MedicalTest","MedicalTherapy"]},"hospitalAffiliation":{"expectedTypes":["Hospital"]},"medicalSpecialty":{"expectedTypes":["MedicalSpecialty"]}}},"VeterinaryCare":{"extends":"MedicalOrganization","properties":[]},"ProfessionalService":{"extends":"LocalBusiness","properties":[]},"Attorney":{"extends":"ProfessionalService","properties":[]},"Notary":{"extends":"ProfessionalService","properties":[]},"RadioStation":{"extends":"LocalBusiness","properties":[]},"RealEstateAgent":{"extends":"LocalBusiness","properties":[]},"RecyclingCenter":{"extends":"LocalBusiness","properties":[]},"SelfStorage":{"extends":"LocalBusiness","properties":[]},"ShoppingCenter":{"extends":"LocalBusiness","properties":[]},"SportsActivityLocation":{"extends":"LocalBusiness","properties":[]},"BowlingAlley":{"extends":"SportsActivityLocation","properties":[]},"ExerciseGym":{"extends":"SportsActivityLocation","properties":[]},"GolfCourse":{"extends":"SportsActivityLocation","properties":[]},"PublicSwimmingPool":{"extends":"SportsActivityLocation","properties":[]},"SkiResort":{"extends":"SportsActivityLocation","properties":[]},"SportsClub":{"extends":"SportsActivityLocation","properties":[]},"StadiumOrArena":{"extends":"CivicStructure","properties":[]},"TennisComplex":{"extends":"SportsActivityLocation","properties":[]},"Store":{"extends":"LocalBusiness","properties":[]},"BikeStore":{"extends":"Store","properties":[]},"BookStore":{"extends":"Store","properties":[]},"ClothingStore":{"extends":"Store","properties":[]},"ComputerStore":{"extends":"Store","properties":[]},"ConvenienceStore":{"extends":"Store","properties":[]},"DepartmentStore":{"extends":"Store","properties":[]},"ElectronicsStore":{"extends":"Store","properties":[]},"Florist":{"extends":"Store","properties":[]},"FurnitureStore":{"extends":"Store","properties":[]},"GardenStore":{"extends":"Store","properties":[]},"GroceryStore":{"extends":"Store","properties":[]},"HardwareStore":{"extends":"Store","properties":[]},"HobbyShop":{"extends":"Store","properties":[]},"HomeGoodsStore":{"extends":"Store","properties":[]},"JewelryStore":{"extends":"Store","properties":[]},"LiquorStore":{"extends":"Store","properties":[]},"MensClothingStore":{"extends":"Store","properties":[]},"MobilePhoneStore":{"extends":"Store","properties":[]},"MovieRentalStore":{"extends":"Store","properties":[]},"MusicStore":{"extends":"Store","properties":[]},"OfficeEquipmentStore":{"extends":"Store","properties":[]},"OutletStore":{"extends":"Store","properties":[]},"PawnShop":{"extends":"Store","properties":[]},"PetStore":{"extends":"Store","properties":[]},"ShoeStore":{"extends":"Store","properties":[]},"SportingGoodsStore":{"extends":"Store","properties":[]},"TireShop":{"extends":"Store","properties":[]},"ToyStore":{"extends":"Store","properties":[]},"WholesaleStore":{"extends":"Store","properties":[]},"TelevisionStation":{"extends":"LocalBusiness","properties":[]},"TouristInformationCenter":{"extends":"LocalBusiness","properties":[]},"TravelAgency":{"extends":"LocalBusiness","properties":[]},"NGO":{"extends":"Organization","properties":[]},"PerformingGroup":{"extends":"Organization","properties":[]},"DanceGroup":{"extends":"PerformingGroup","properties":[]},"MusicGroup":{"extends":"PerformingGroup","properties":{"album":{"expectedTypes":["MusicAlbum"]},"albums":{"expectedTypes":["MusicAlbum"]},"musicGroupMember":{"expectedTypes":["Person"]},"track":{"expectedTypes":["MusicRecording"]},"tracks":{"expectedTypes":["MusicRecording"]}}},"TheaterGroup":{"extends":"PerformingGroup","properties":[]},"SportsTeam":{"extends":"Organization","properties":[]},"Person":{"extends":"Thing","properties":{"additionalName":{"expectedTypes":["Text"]},"address":{"expectedTypes":["PostalAddress"]},"affiliation":{"expectedTypes":["Organization"]},"alumniOf":{"expectedTypes":["EducationalOrganization"]},"award":{"expectedTypes":["Text"]},"awards":{"expectedTypes":["Text"]},"birthDate":{"expectedTypes":["Date"]},"brand":{"expectedTypes":["Brand","Organization"]},"children":{"expectedTypes":["Person"]},"colleague":{"expectedTypes":["Person"]},"colleagues":{"expectedTypes":["Person"]},"contactPoint":{"expectedTypes":["ContactPoint"]},"contactPoints":{"expectedTypes":["ContactPoint"]},"deathDate":{"expectedTypes":["Date"]},"duns":{"expectedTypes":["Text"]},"email":{"expectedTypes":["Text"]},"familyName":{"expectedTypes":["Text"]},"faxNumber":{"expectedTypes":["Text"]},"follows":{"expectedTypes":["Person"]},"gender":{"expectedTypes":["Text"]},"givenName":{"expectedTypes":["Text"]},"globalLocationNumber":{"expectedTypes":["Text"]},"hasPOS":{"expectedTypes":["Place"]},"homeLocation":{"expectedTypes":["ContactPoint","Place"]},"honorificPrefix":{"expectedTypes":["Text"]},"honorificSuffix":{"expectedTypes":["Text"]},"interactionCount":{"expectedTypes":["Text"]},"isicV4":{"expectedTypes":["Text"]},"jobTitle":{"expectedTypes":["Text"]},"knows":{"expectedTypes":["Person"]},"makesOffer":{"expectedTypes":["Offer"]},"memberOf":{"expectedTypes":["Organization"]},"naics":{"expectedTypes":["Text"]},"nationality":{"expectedTypes":["Country"]},"owns":{"expectedTypes":["OwnershipInfo","Product"]},"parent":{"expectedTypes":["Person"]},"parents":{"expectedTypes":["Person"]},"performerIn":{"expectedTypes":["Event"]},"relatedTo":{"expectedTypes":["Person"]},"seeks":{"expectedTypes":["Demand"]},"sibling":{"expectedTypes":["Person"]},"siblings":{"expectedTypes":["Person"]},"spouse":{"expectedTypes":["Person"]},"taxID":{"expectedTypes":["Text"]},"telephone":{"expectedTypes":["Text"]},"vatID":{"expectedTypes":["Text"]},"workLocation":{"expectedTypes":["ContactPoint","Place"]},"worksFor":{"expectedTypes":["Organization"]}}},"Place":{"extends":"Thing","properties":{"address":{"expectedTypes":["PostalAddress"]},"aggregateRating":{"expectedTypes":["AggregateRating"]},"containedIn":{"expectedTypes":["Place"]},"event":{"expectedTypes":["Event"]},"events":{"expectedTypes":["Event"]},"faxNumber":{"expectedTypes":["Text"]},"geo":{"expectedTypes":["GeoCoordinates","GeoShape"]},"globalLocationNumber":{"expectedTypes":["Text"]},"interactionCount":{"expectedTypes":["Text"]},"isicV4":{"expectedTypes":["Text"]},"logo":{"expectedTypes":["ImageObject","URL"]},"map":{"expectedTypes":["URL"]},"maps":{"expectedTypes":["URL"]},"openingHoursSpecification":{"expectedTypes":["OpeningHoursSpecification"]},"photo":{"expectedTypes":["ImageObject","Photograph"]},"photos":{"expectedTypes":["ImageObject","Photograph"]},"review":{"expectedTypes":["Review"]},"reviews":{"expectedTypes":["Review"]},"telephone":{"expectedTypes":["Text"]}}},"AdministrativeArea":{"extends":"Place","properties":[]},"City":{"extends":"AdministrativeArea","properties":[]},"Country":{"extends":"AdministrativeArea","properties":[]},"State":{"extends":"AdministrativeArea","properties":[]},"CivicStructure":{"extends":"Place","properties":{"openingHours":{"expectedTypes":["Duration"]}}},"Airport":{"extends":"CivicStructure","properties":[]},"Aquarium":{"extends":"CivicStructure","properties":[]},"Beach":{"extends":"CivicStructure","properties":[]},"BusStation":{"extends":"CivicStructure","properties":[]},"BusStop":{"extends":"CivicStructure","properties":[]},"Campground":{"extends":"CivicStructure","properties":[]},"Cemetery":{"extends":"CivicStructure","properties":[]},"Crematorium":{"extends":"CivicStructure","properties":[]},"EventVenue":{"extends":"CivicStructure","properties":[]},"GovernmentBuilding":{"extends":"CivicStructure","properties":[]},"CityHall":{"extends":"GovernmentBuilding","properties":[]},"Courthouse":{"extends":"GovernmentBuilding","properties":[]},"DefenceEstablishment":{"extends":"GovernmentBuilding","properties":[]},"Embassy":{"extends":"GovernmentBuilding","properties":[]},"LegislativeBuilding":{"extends":"GovernmentBuilding","properties":[]},"Museum":{"extends":"CivicStructure","properties":[]},"MusicVenue":{"extends":"CivicStructure","properties":[]},"Park":{"extends":"CivicStructure","properties":[]},"ParkingFacility":{"extends":"CivicStructure","properties":[]},"PerformingArtsTheater":{"extends":"CivicStructure","properties":[]},"PlaceOfWorship":{"extends":"CivicStructure","properties":[]},"BuddhistTemple":{"extends":"PlaceOfWorship","properties":[]},"CatholicChurch":{"extends":"PlaceOfWorship","properties":[]},"Church":{"extends":"PlaceOfWorship","properties":[]},"HinduTemple":{"extends":"PlaceOfWorship","properties":[]},"Mosque":{"extends":"PlaceOfWorship","properties":[]},"Synagogue":{"extends":"PlaceOfWorship","properties":[]},"Playground":{"extends":"CivicStructure","properties":[]},"RVPark":{"extends":"CivicStructure","properties":[]},"SubwayStation":{"extends":"CivicStructure","properties":[]},"TaxiStand":{"extends":"CivicStructure","properties":[]},"TrainStation":{"extends":"CivicStructure","properties":[]},"Zoo":{"extends":"CivicStructure","properties":[]},"Landform":{"extends":"Place","properties":[]},"BodyOfWater":{"extends":"Landform","properties":[]},"Canal":{"extends":"BodyOfWater","properties":[]},"LakeBodyOfWater":{"extends":"BodyOfWater","properties":[]},"OceanBodyOfWater":{"extends":"BodyOfWater","properties":[]},"Pond":{"extends":"BodyOfWater","properties":[]},"Reservoir":{"extends":"BodyOfWater","properties":[]},"RiverBodyOfWater":{"extends":"BodyOfWater","properties":[]},"SeaBodyOfWater":{"extends":"BodyOfWater","properties":[]},"Waterfall":{"extends":"BodyOfWater","properties":[]},"Continent":{"extends":"Landform","properties":[]},"Mountain":{"extends":"Landform","properties":[]},"Volcano":{"extends":"Landform","properties":[]},"LandmarksOrHistoricalBuildings":{"extends":"Place","properties":[]},"Residence":{"extends":"Place","properties":[]},"ApartmentComplex":{"extends":"Residence","properties":[]},"GatedResidenceCommunity":{"extends":"Residence","properties":[]},"SingleFamilyResidence":{"extends":"Residence","properties":[]},"TouristAttraction":{"extends":"Place","properties":[]},"Product":{"extends":"Thing","properties":{"aggregateRating":{"expectedTypes":["AggregateRating"]},"audience":{"expectedTypes":["Audience"]},"brand":{"expectedTypes":["Brand","Organization"]},"color":{"expectedTypes":["Text"]},"depth":{"expectedTypes":["Distance","QuantitativeValue"]},"gtin13":{"expectedTypes":["Text"]},"gtin14":{"expectedTypes":["Text"]},"gtin8":{"expectedTypes":["Text"]},"height":{"expectedTypes":["Distance","QuantitativeValue"]},"isAccessoryOrSparePartFor":{"expectedTypes":["Product"]},"isConsumableFor":{"expectedTypes":["Product"]},"isRelatedTo":{"expectedTypes":["Product"]},"isSimilarTo":{"expectedTypes":["Product"]},"itemCondition":{"expectedTypes":["OfferItemCondition"]},"logo":{"expectedTypes":["ImageObject","URL"]},"manufacturer":{"expectedTypes":["Organization"]},"model":{"expectedTypes":["ProductModel","Text"]},"mpn":{"expectedTypes":["Text"]},"offers":{"expectedTypes":["Offer"]},"productID":{"expectedTypes":["Text"]},"releaseDate":{"expectedTypes":["Date"]},"review":{"expectedTypes":["Review"]},"reviews":{"expectedTypes":["Review"]},"sku":{"expectedTypes":["Text"]},"weight":{"expectedTypes":["QuantitativeValue"]},"width":{"expectedTypes":["Distance","QuantitativeValue"]}}},"IndividualProduct":{"extends":"Product","properties":{"serialNumber":{"expectedTypes":["Text"]}}},"ProductModel":{"extends":"Product","properties":{"isVariantOf":{"expectedTypes":["ProductModel"]},"predecessorOf":{"expectedTypes":["ProductModel"]},"successorOf":{"expectedTypes":["ProductModel"]}}},"SomeProducts":{"extends":"Product","properties":{"inventoryLevel":{"expectedTypes":["QuantitativeValue"]}}},"Property":{"extends":"Thing","properties":{"domainIncludes":{"expectedTypes":["Class"]},"rangeIncludes":{"expectedTypes":["Class"]}}}} \ No newline at end of file +{"DataType":{"extends":"","properties":[]},"Boolean":{"extends":"DataType","properties":[]},"False":{"extends":"Boolean","properties":[]},"True":{"extends":"Boolean","properties":[]},"Date":{"extends":"DataType","properties":[]},"DateTime":{"extends":"DataType","properties":[]},"Number":{"extends":"DataType","properties":[]},"Float":{"extends":"Number","properties":[]},"Integer":{"extends":"Number","properties":[]},"Text":{"extends":"DataType","properties":[]},"URL":{"extends":"Text","properties":[]},"Time":{"extends":"DataType","properties":[]},"Thing":{"extends":"","properties":{"additionalType":{"expectedTypes":["URL"]},"alternateName":{"expectedTypes":["Text"]},"description":{"expectedTypes":["Text"]},"image":{"expectedTypes":["URL","ImageObject"]},"name":{"expectedTypes":["Text"]},"potentialAction":{"expectedTypes":["Action"]},"sameAs":{"expectedTypes":["URL"]},"url":{"expectedTypes":["URL"]}}},"Action":{"extends":"Thing","properties":{"actionStatus":{"expectedTypes":["ActionStatusType"]},"agent":{"expectedTypes":["Organization","Person"]},"endTime":{"expectedTypes":["DateTime"]},"error":{"expectedTypes":["Thing"]},"instrument":{"expectedTypes":["Thing"]},"location":{"expectedTypes":["PostalAddress","Place"]},"object":{"expectedTypes":["Thing"]},"participant":{"expectedTypes":["Organization","Person"]},"result":{"expectedTypes":["Thing"]},"startTime":{"expectedTypes":["DateTime"]},"target":{"expectedTypes":["EntryPoint"]}}},"AchieveAction":{"extends":"Action","properties":[]},"LoseAction":{"extends":"AchieveAction","properties":{"winner":{"expectedTypes":["Person"]}}},"TieAction":{"extends":"AchieveAction","properties":[]},"WinAction":{"extends":"AchieveAction","properties":{"loser":{"expectedTypes":["Person"]}}},"AssessAction":{"extends":"Action","properties":[]},"ChooseAction":{"extends":"AssessAction","properties":{"option":{"expectedTypes":["Text","Thing"]}}},"VoteAction":{"extends":"ChooseAction","properties":{"candidate":{"expectedTypes":["Person"]}}},"IgnoreAction":{"extends":"AssessAction","properties":[]},"ReactAction":{"extends":"AssessAction","properties":[]},"AgreeAction":{"extends":"ReactAction","properties":[]},"DisagreeAction":{"extends":"ReactAction","properties":[]},"DislikeAction":{"extends":"ReactAction","properties":[]},"EndorseAction":{"extends":"ReactAction","properties":{"endorsee":{"expectedTypes":["Organization","Person"]}}},"LikeAction":{"extends":"ReactAction","properties":[]},"WantAction":{"extends":"ReactAction","properties":[]},"ReviewAction":{"extends":"AssessAction","properties":{"resultReview":{"expectedTypes":["Review"]}}},"ConsumeAction":{"extends":"Action","properties":{"expectsAcceptanceOf":{"expectedTypes":["Offer"]}}},"DrinkAction":{"extends":"ConsumeAction","properties":[]},"EatAction":{"extends":"ConsumeAction","properties":[]},"InstallAction":{"extends":"ConsumeAction","properties":[]},"ListenAction":{"extends":"ConsumeAction","properties":[]},"ReadAction":{"extends":"ConsumeAction","properties":[]},"UseAction":{"extends":"ConsumeAction","properties":[]},"WearAction":{"extends":"UseAction","properties":[]},"ViewAction":{"extends":"ConsumeAction","properties":[]},"WatchAction":{"extends":"ConsumeAction","properties":[]},"ControlAction":{"extends":"Action","properties":[]},"ActivateAction":{"extends":"ControlAction","properties":[]},"DeactivateAction":{"extends":"ControlAction","properties":[]},"ResumeAction":{"extends":"ControlAction","properties":[]},"SuspendAction":{"extends":"ControlAction","properties":[]},"CreateAction":{"extends":"Action","properties":[]},"CookAction":{"extends":"CreateAction","properties":{"foodEstablishment":{"expectedTypes":["FoodEstablishment","Place"]},"foodEvent":{"expectedTypes":["FoodEvent"]},"recipe":{"expectedTypes":["Recipe"]}}},"DrawAction":{"extends":"CreateAction","properties":[]},"FilmAction":{"extends":"CreateAction","properties":[]},"PaintAction":{"extends":"CreateAction","properties":[]},"PhotographAction":{"extends":"CreateAction","properties":[]},"WriteAction":{"extends":"CreateAction","properties":{"language":{"expectedTypes":["Language"]}}},"FindAction":{"extends":"Action","properties":[]},"CheckAction":{"extends":"FindAction","properties":[]},"DiscoverAction":{"extends":"FindAction","properties":[]},"TrackAction":{"extends":"FindAction","properties":{"deliveryMethod":{"expectedTypes":["DeliveryMethod"]}}},"InteractAction":{"extends":"Action","properties":[]},"BefriendAction":{"extends":"InteractAction","properties":[]},"CommunicateAction":{"extends":"InteractAction","properties":{"about":{"expectedTypes":["Thing"]},"language":{"expectedTypes":["Language"]},"recipient":{"expectedTypes":["Organization","Person","Audience"]}}},"AskAction":{"extends":"CommunicateAction","properties":{"question":{"expectedTypes":["Text"]}}},"CheckInAction":{"extends":"CommunicateAction","properties":[]},"CheckOutAction":{"extends":"CommunicateAction","properties":[]},"CommentAction":{"extends":"CommunicateAction","properties":[]},"InformAction":{"extends":"CommunicateAction","properties":{"event":{"expectedTypes":["Event"]}}},"ConfirmAction":{"extends":"InformAction","properties":[]},"RsvpAction":{"extends":"InformAction","properties":{"additionalNumberOfGuests":{"expectedTypes":["Number"]},"rsvpResponse":{"expectedTypes":["RsvpResponseType"]}}},"InviteAction":{"extends":"CommunicateAction","properties":{"event":{"expectedTypes":["Event"]}}},"ReplyAction":{"extends":"CommunicateAction","properties":[]},"ShareAction":{"extends":"CommunicateAction","properties":[]},"FollowAction":{"extends":"InteractAction","properties":{"followee":{"expectedTypes":["Organization","Person"]}}},"JoinAction":{"extends":"InteractAction","properties":{"event":{"expectedTypes":["Event"]}}},"LeaveAction":{"extends":"InteractAction","properties":{"event":{"expectedTypes":["Event"]}}},"MarryAction":{"extends":"InteractAction","properties":[]},"RegisterAction":{"extends":"InteractAction","properties":[]},"SubscribeAction":{"extends":"InteractAction","properties":[]},"UnRegisterAction":{"extends":"InteractAction","properties":[]},"MoveAction":{"extends":"Action","properties":{"fromLocation":{"expectedTypes":["Place"]},"toLocation":{"expectedTypes":["Place"]}}},"ArriveAction":{"extends":"MoveAction","properties":[]},"DepartAction":{"extends":"MoveAction","properties":[]},"TravelAction":{"extends":"MoveAction","properties":{"distance":{"expectedTypes":["Distance"]}}},"OrganizeAction":{"extends":"Action","properties":[]},"AllocateAction":{"extends":"OrganizeAction","properties":{"purpose":{"expectedTypes":["MedicalDevicePurpose","Thing"]}}},"AcceptAction":{"extends":"AllocateAction","properties":[]},"AssignAction":{"extends":"AllocateAction","properties":[]},"AuthorizeAction":{"extends":"AllocateAction","properties":{"recipient":{"expectedTypes":["Organization","Person","Audience"]}}},"RejectAction":{"extends":"AllocateAction","properties":[]},"ApplyAction":{"extends":"OrganizeAction","properties":[]},"BookmarkAction":{"extends":"OrganizeAction","properties":[]},"PlanAction":{"extends":"OrganizeAction","properties":{"scheduledTime":{"expectedTypes":["DateTime"]}}},"CancelAction":{"extends":"PlanAction","properties":[]},"ReserveAction":{"extends":"PlanAction","properties":[]},"ScheduleAction":{"extends":"PlanAction","properties":[]},"PlayAction":{"extends":"Action","properties":{"audience":{"expectedTypes":["Audience"]},"event":{"expectedTypes":["Event"]}}},"ExerciseAction":{"extends":"PlayAction","properties":{"course":{"expectedTypes":["Place"]},"diet":{"expectedTypes":["Diet"]},"distance":{"expectedTypes":["Distance"]},"exercisePlan":{"expectedTypes":["ExercisePlan"]},"exerciseType":{"expectedTypes":["Text"]},"fromLocation":{"expectedTypes":["Place"]},"opponent":{"expectedTypes":["Person"]},"sportsActivityLocation":{"expectedTypes":["SportsActivityLocation"]},"sportsEvent":{"expectedTypes":["SportsEvent"]},"sportsTeam":{"expectedTypes":["SportsTeam"]},"toLocation":{"expectedTypes":["Place"]}}},"PerformAction":{"extends":"PlayAction","properties":{"entertainmentBusiness":{"expectedTypes":["EntertainmentBusiness"]}}},"SearchAction":{"extends":"Action","properties":{"query":{"expectedTypes":["Text","Class"]}}},"TradeAction":{"extends":"Action","properties":{"price":{"expectedTypes":["Text","Number"]},"priceSpecification":{"expectedTypes":["PriceSpecification"]}}},"BuyAction":{"extends":"TradeAction","properties":{"seller":{"expectedTypes":["Organization","Person"]},"warrantyPromise":{"expectedTypes":["WarrantyPromise"]}}},"DonateAction":{"extends":"TradeAction","properties":{"recipient":{"expectedTypes":["Organization","Person","Audience"]}}},"OrderAction":{"extends":"TradeAction","properties":{"deliveryMethod":{"expectedTypes":["DeliveryMethod"]}}},"PayAction":{"extends":"TradeAction","properties":{"purpose":{"expectedTypes":["MedicalDevicePurpose","Thing"]},"recipient":{"expectedTypes":["Organization","Person","Audience"]}}},"QuoteAction":{"extends":"TradeAction","properties":[]},"RentAction":{"extends":"TradeAction","properties":{"landlord":{"expectedTypes":["Organization","Person"]},"realEstateAgent":{"expectedTypes":["RealEstateAgent"]}}},"SellAction":{"extends":"TradeAction","properties":{"buyer":{"expectedTypes":["Person"]},"warrantyPromise":{"expectedTypes":["WarrantyPromise"]}}},"TipAction":{"extends":"TradeAction","properties":{"recipient":{"expectedTypes":["Organization","Person","Audience"]}}},"TransferAction":{"extends":"Action","properties":{"fromLocation":{"expectedTypes":["Place"]},"toLocation":{"expectedTypes":["Place"]}}},"BorrowAction":{"extends":"TransferAction","properties":{"lender":{"expectedTypes":["Person"]}}},"DownloadAction":{"extends":"TransferAction","properties":[]},"GiveAction":{"extends":"TransferAction","properties":{"recipient":{"expectedTypes":["Organization","Person","Audience"]}}},"LendAction":{"extends":"TransferAction","properties":{"borrower":{"expectedTypes":["Person"]}}},"ReceiveAction":{"extends":"TransferAction","properties":{"deliveryMethod":{"expectedTypes":["DeliveryMethod"]},"sender":{"expectedTypes":["Organization","Person","Audience"]}}},"ReturnAction":{"extends":"TransferAction","properties":{"recipient":{"expectedTypes":["Organization","Person","Audience"]}}},"SendAction":{"extends":"TransferAction","properties":{"deliveryMethod":{"expectedTypes":["DeliveryMethod"]},"recipient":{"expectedTypes":["Organization","Person","Audience"]}}},"TakeAction":{"extends":"TransferAction","properties":[]},"UpdateAction":{"extends":"Action","properties":{"collection":{"expectedTypes":["Thing"]}}},"AddAction":{"extends":"UpdateAction","properties":[]},"InsertAction":{"extends":"AddAction","properties":{"toLocation":{"expectedTypes":["Place"]}}},"AppendAction":{"extends":"InsertAction","properties":[]},"PrependAction":{"extends":"InsertAction","properties":[]},"DeleteAction":{"extends":"UpdateAction","properties":[]},"ReplaceAction":{"extends":"UpdateAction","properties":{"replacee":{"expectedTypes":["Thing"]},"replacer":{"expectedTypes":["Thing"]}}},"BroadcastService":{"extends":"Thing","properties":{"area":{"expectedTypes":["Place"]},"broadcaster":{"expectedTypes":["Organization"]},"parentService":{"expectedTypes":["BroadcastService"]}}},"CreativeWork":{"extends":"Thing","properties":{"about":{"expectedTypes":["Thing"]},"accessibilityAPI":{"expectedTypes":["Text"]},"accessibilityControl":{"expectedTypes":["Text"]},"accessibilityFeature":{"expectedTypes":["Text"]},"accessibilityHazard":{"expectedTypes":["Text"]},"accountablePerson":{"expectedTypes":["Person"]},"aggregateRating":{"expectedTypes":["AggregateRating"]},"alternativeHeadline":{"expectedTypes":["Text"]},"associatedMedia":{"expectedTypes":["MediaObject"]},"audience":{"expectedTypes":["Audience"]},"audio":{"expectedTypes":["AudioObject"]},"author":{"expectedTypes":["Organization","Person"]},"award":{"expectedTypes":["Text"]},"character":{"expectedTypes":["Person"]},"citation":{"expectedTypes":["CreativeWork","Text"]},"comment":{"expectedTypes":["UserComments","Comment"]},"commentCount":{"expectedTypes":["Integer"]},"contentLocation":{"expectedTypes":["Place"]},"contentRating":{"expectedTypes":["Text"]},"contributor":{"expectedTypes":["Organization","Person"]},"copyrightHolder":{"expectedTypes":["Organization","Person"]},"copyrightYear":{"expectedTypes":["Number"]},"creator":{"expectedTypes":["Organization","Person"]},"dateCreated":{"expectedTypes":["Date"]},"dateModified":{"expectedTypes":["Date"]},"datePublished":{"expectedTypes":["Date"]},"discussionUrl":{"expectedTypes":["URL"]},"editor":{"expectedTypes":["Person"]},"educationalAlignment":{"expectedTypes":["AlignmentObject"]},"educationalUse":{"expectedTypes":["Text"]},"encoding":{"expectedTypes":["MediaObject"]},"exampleOfWork":{"expectedTypes":["CreativeWork"]},"genre":{"expectedTypes":["Text"]},"hasPart":{"expectedTypes":["CreativeWork"]},"headline":{"expectedTypes":["Text"]},"inLanguage":{"expectedTypes":["Text"]},"interactionCount":{"expectedTypes":["Text"]},"interactivityType":{"expectedTypes":["Text"]},"isBasedOnUrl":{"expectedTypes":["URL"]},"isFamilyFriendly":{"expectedTypes":["Boolean"]},"isPartOf":{"expectedTypes":["CreativeWork"]},"keywords":{"expectedTypes":["Text"]},"learningResourceType":{"expectedTypes":["Text"]},"license":{"expectedTypes":["CreativeWork","URL"]},"mentions":{"expectedTypes":["Thing"]},"offers":{"expectedTypes":["Offer"]},"position":{"expectedTypes":["Integer","Text"]},"producer":{"expectedTypes":["Organization","Person"]},"provider":{"expectedTypes":["Organization","Person"]},"publisher":{"expectedTypes":["Organization"]},"publishingPrinciples":{"expectedTypes":["URL"]},"recordedAt":{"expectedTypes":["Event"]},"releasedEvent":{"expectedTypes":["PublicationEvent"]},"review":{"expectedTypes":["Review"]},"sourceOrganization":{"expectedTypes":["Organization"]},"text":{"expectedTypes":["Text"]},"thumbnailUrl":{"expectedTypes":["URL"]},"timeRequired":{"expectedTypes":["Duration"]},"translator":{"expectedTypes":["Organization","Person"]},"typicalAgeRange":{"expectedTypes":["Text"]},"version":{"expectedTypes":["Number"]},"video":{"expectedTypes":["VideoObject"]},"workExample":{"expectedTypes":["CreativeWork"]}}},"Answer":{"extends":"CreativeWork","properties":{"downvoteCount":{"expectedTypes":["Integer"]},"parentItem":{"expectedTypes":["Question"]},"upvoteCount":{"expectedTypes":["Integer"]}}},"Article":{"extends":"CreativeWork","properties":{"articleBody":{"expectedTypes":["Text"]},"articleSection":{"expectedTypes":["Text"]},"pageEnd":{"expectedTypes":["Integer","Text"]},"pageStart":{"expectedTypes":["Integer","Text"]},"pagination":{"expectedTypes":["Text"]},"wordCount":{"expectedTypes":["Integer"]}}},"BlogPosting":{"extends":"Article","properties":[]},"NewsArticle":{"extends":"Article","properties":{"dateline":{"expectedTypes":["Text"]},"printColumn":{"expectedTypes":["Text"]},"printEdition":{"expectedTypes":["Text"]},"printPage":{"expectedTypes":["Text"]},"printSection":{"expectedTypes":["Text"]}}},"ScholarlyArticle":{"extends":"Article","properties":[]},"MedicalScholarlyArticle":{"extends":"ScholarlyArticle","properties":{"publicationType":{"expectedTypes":["Text"]}}},"TechArticle":{"extends":"Article","properties":{"dependencies":{"expectedTypes":["Text"]},"proficiencyLevel":{"expectedTypes":["Text"]}}},"APIReference":{"extends":"TechArticle","properties":{"assembly":{"expectedTypes":["Text"]},"assemblyVersion":{"expectedTypes":["Text"]},"programmingModel":{"expectedTypes":["Text"]},"targetPlatform":{"expectedTypes":["Text"]}}},"Blog":{"extends":"CreativeWork","properties":{"blogPost":{"expectedTypes":["BlogPosting"]}}},"Book":{"extends":"CreativeWork","properties":{"bookEdition":{"expectedTypes":["Text"]},"bookFormat":{"expectedTypes":["BookFormatType"]},"illustrator":{"expectedTypes":["Person"]},"isbn":{"expectedTypes":["Text"]},"numberOfPages":{"expectedTypes":["Integer"]}}},"Clip":{"extends":"CreativeWork","properties":{"actor":{"expectedTypes":["Person"]},"clipNumber":{"expectedTypes":["Integer","Text"]},"director":{"expectedTypes":["Person"]},"musicBy":{"expectedTypes":["MusicGroup","Person"]},"partOfEpisode":{"expectedTypes":["Episode"]},"partOfSeason":{"expectedTypes":["Season"]},"partOfSeries":{"expectedTypes":["Series"]},"publication":{"expectedTypes":["PublicationEvent"]}}},"RadioClip":{"extends":"Clip","properties":[]},"TVClip":{"extends":"Clip","properties":[]},"Code":{"extends":"CreativeWork","properties":{"codeRepository":{"expectedTypes":["URL"]},"programmingLanguage":{"expectedTypes":["Thing"]},"runtime":{"expectedTypes":["Text"]},"sampleType":{"expectedTypes":["Text"]},"targetProduct":{"expectedTypes":["SoftwareApplication"]}}},"Comment":{"extends":"CreativeWork","properties":{"downvoteCount":{"expectedTypes":["Integer"]},"parentItem":{"expectedTypes":["Question"]},"upvoteCount":{"expectedTypes":["Integer"]}}},"DataCatalog":{"extends":"CreativeWork","properties":{"dataset":{"expectedTypes":["Dataset"]}}},"Dataset":{"extends":"CreativeWork","properties":{"catalog":{"expectedTypes":["DataCatalog"]},"distribution":{"expectedTypes":["DataDownload"]},"spatial":{"expectedTypes":["Place"]},"temporal":{"expectedTypes":["DateTime"]}}},"Diet":{"extends":"CreativeWork","properties":{"dietFeatures":{"expectedTypes":["Text"]},"endorsers":{"expectedTypes":["Organization","Person"]},"expertConsiderations":{"expectedTypes":["Text"]},"overview":{"expectedTypes":["Text"]},"physiologicalBenefits":{"expectedTypes":["Text"]},"proprietaryName":{"expectedTypes":["Text"]},"risks":{"expectedTypes":["Text"]}}},"EmailMessage":{"extends":"CreativeWork","properties":[]},"Episode":{"extends":"CreativeWork","properties":{"actor":{"expectedTypes":["Person"]},"director":{"expectedTypes":["Person"]},"episodeNumber":{"expectedTypes":["Integer","Text"]},"musicBy":{"expectedTypes":["MusicGroup","Person"]},"partOfSeason":{"expectedTypes":["Season"]},"partOfSeries":{"expectedTypes":["Series"]},"productionCompany":{"expectedTypes":["Organization"]},"publication":{"expectedTypes":["PublicationEvent"]},"trailer":{"expectedTypes":["VideoObject"]}}},"RadioEpisode":{"extends":"Episode","properties":[]},"TVEpisode":{"extends":"Episode","properties":[]},"ExercisePlan":{"extends":"CreativeWork","properties":{"activityDuration":{"expectedTypes":["Duration"]},"activityFrequency":{"expectedTypes":["Text"]},"additionalVariable":{"expectedTypes":["Text"]},"exerciseType":{"expectedTypes":["Text"]},"intensity":{"expectedTypes":["Text"]},"repetitions":{"expectedTypes":["Number"]},"restPeriods":{"expectedTypes":["Text"]},"workload":{"expectedTypes":["Energy"]}}},"Game":{"extends":"CreativeWork","properties":{"characterAttribute":{"expectedTypes":["Thing"]},"gameItem":{"expectedTypes":["Thing"]},"gameLocation":{"expectedTypes":["PostalAddress","URL","Place"]},"numberOfPlayers":{"expectedTypes":["QuantitativeValue"]},"quest":{"expectedTypes":["Thing"]}}},"VideoGame":{"extends":"Game","properties":{"actor":{"expectedTypes":["Person"]},"cheatCode":{"expectedTypes":["CreativeWork"]},"director":{"expectedTypes":["Person"]},"gamePlatform":{"expectedTypes":["Thing","Text","URL"]},"gameServer":{"expectedTypes":["GameServer"]},"gameTip":{"expectedTypes":["CreativeWork"]},"musicBy":{"expectedTypes":["MusicGroup","Person"]},"playMode":{"expectedTypes":["GamePlayMode"]},"trailer":{"expectedTypes":["VideoObject"]}}},"Map":{"extends":"CreativeWork","properties":{"mapType":{"expectedTypes":["MapCategoryType"]}}},"MediaObject":{"extends":"CreativeWork","properties":{"associatedArticle":{"expectedTypes":["NewsArticle"]},"bitrate":{"expectedTypes":["Text"]},"contentSize":{"expectedTypes":["Text"]},"contentUrl":{"expectedTypes":["URL"]},"duration":{"expectedTypes":["Duration"]},"embedUrl":{"expectedTypes":["URL"]},"encodesCreativeWork":{"expectedTypes":["CreativeWork"]},"encodingFormat":{"expectedTypes":["Text"]},"expires":{"expectedTypes":["Date"]},"height":{"expectedTypes":["QuantitativeValue","Distance"]},"playerType":{"expectedTypes":["Text"]},"productionCompany":{"expectedTypes":["Organization"]},"publication":{"expectedTypes":["PublicationEvent"]},"regionsAllowed":{"expectedTypes":["Place"]},"requiresSubscription":{"expectedTypes":["Boolean"]},"uploadDate":{"expectedTypes":["Date"]},"width":{"expectedTypes":["QuantitativeValue","Distance"]}}},"AudioObject":{"extends":"MediaObject","properties":{"transcript":{"expectedTypes":["Text"]}}},"DataDownload":{"extends":"MediaObject","properties":[]},"ImageObject":{"extends":"MediaObject","properties":{"caption":{"expectedTypes":["Text"]},"exifData":{"expectedTypes":["Text"]},"representativeOfPage":{"expectedTypes":["Boolean"]},"thumbnail":{"expectedTypes":["ImageObject"]}}},"MusicVideoObject":{"extends":"MediaObject","properties":[]},"VideoObject":{"extends":"MediaObject","properties":{"actor":{"expectedTypes":["Person"]},"caption":{"expectedTypes":["Text"]},"director":{"expectedTypes":["Person"]},"musicBy":{"expectedTypes":["MusicGroup","Person"]},"thumbnail":{"expectedTypes":["ImageObject"]},"transcript":{"expectedTypes":["Text"]},"videoFrameSize":{"expectedTypes":["Text"]},"videoQuality":{"expectedTypes":["Text"]}}},"Movie":{"extends":"CreativeWork","properties":{"actor":{"expectedTypes":["Person"]},"director":{"expectedTypes":["Person"]},"duration":{"expectedTypes":["Duration"]},"musicBy":{"expectedTypes":["MusicGroup","Person"]},"productionCompany":{"expectedTypes":["Organization"]},"trailer":{"expectedTypes":["VideoObject"]}}},"MusicComposition":{"extends":"CreativeWork","properties":{"composer":{"expectedTypes":["Person","Organization"]},"firstPerformance":{"expectedTypes":["Event"]},"includedComposition":{"expectedTypes":["MusicComposition"]},"iswcCode":{"expectedTypes":["Text"]},"lyricist":{"expectedTypes":["Person"]},"musicArrangement":{"expectedTypes":["MusicComposition"]},"musicCompositionForm":{"expectedTypes":["Text"]},"musicalKey":{"expectedTypes":["Text"]},"recordedAs":{"expectedTypes":["MusicRecording"]}}},"MusicPlaylist":{"extends":"CreativeWork","properties":{"numTracks":{"expectedTypes":["Integer"]},"track":{"expectedTypes":["MusicRecording","ItemList"]}}},"MusicAlbum":{"extends":"MusicPlaylist","properties":{"albumProductionType":{"expectedTypes":["MusicAlbumProductionType"]},"albumRelease":{"expectedTypes":["MusicRelease"]},"albumReleaseType":{"expectedTypes":["MusicAlbumReleaseType"]},"byArtist":{"expectedTypes":["MusicGroup"]}}},"MusicRelease":{"extends":"MusicPlaylist","properties":{"catalogNumber":{"expectedTypes":["Text"]},"creditedTo":{"expectedTypes":["Organization","Person"]},"duration":{"expectedTypes":["Duration"]},"musicReleaseFormat":{"expectedTypes":["MusicReleaseFormatType"]},"recordLabel":{"expectedTypes":["Organization"]},"releaseOf":{"expectedTypes":["MusicAlbum"]}}},"MusicRecording":{"extends":"CreativeWork","properties":{"byArtist":{"expectedTypes":["MusicGroup"]},"duration":{"expectedTypes":["Duration"]},"inAlbum":{"expectedTypes":["MusicAlbum"]},"inPlaylist":{"expectedTypes":["MusicPlaylist"]},"isrcCode":{"expectedTypes":["Text"]},"recordingOf":{"expectedTypes":["MusicComposition"]}}},"Painting":{"extends":"CreativeWork","properties":[]},"Photograph":{"extends":"CreativeWork","properties":[]},"PublicationIssue":{"extends":"CreativeWork","properties":{"issueNumber":{"expectedTypes":["Integer","Text"]},"pageEnd":{"expectedTypes":["Integer","Text"]},"pageStart":{"expectedTypes":["Integer","Text"]},"pagination":{"expectedTypes":["Text"]}}},"PublicationVolume":{"extends":"CreativeWork","properties":{"pageEnd":{"expectedTypes":["Integer","Text"]},"pageStart":{"expectedTypes":["Integer","Text"]},"pagination":{"expectedTypes":["Text"]},"volumeNumber":{"expectedTypes":["Integer","Text"]}}},"Question":{"extends":"CreativeWork","properties":{"acceptedAnswer":{"expectedTypes":["Answer"]},"answerCount":{"expectedTypes":["Integer"]},"downvoteCount":{"expectedTypes":["Integer"]},"suggestedAnswer":{"expectedTypes":["Answer"]},"upvoteCount":{"expectedTypes":["Integer"]}}},"Recipe":{"extends":"CreativeWork","properties":{"cookTime":{"expectedTypes":["Duration"]},"cookingMethod":{"expectedTypes":["Text"]},"ingredients":{"expectedTypes":["Text"]},"nutrition":{"expectedTypes":["NutritionInformation"]},"prepTime":{"expectedTypes":["Duration"]},"recipeCategory":{"expectedTypes":["Text"]},"recipeCuisine":{"expectedTypes":["Text"]},"recipeInstructions":{"expectedTypes":["Text"]},"recipeYield":{"expectedTypes":["Text"]},"totalTime":{"expectedTypes":["Duration"]}}},"Review":{"extends":"CreativeWork","properties":{"itemReviewed":{"expectedTypes":["Thing"]},"reviewBody":{"expectedTypes":["Text"]},"reviewRating":{"expectedTypes":["Rating"]}}},"Sculpture":{"extends":"CreativeWork","properties":[]},"Season":{"extends":"CreativeWork","properties":{"endDate":{"expectedTypes":["Date"]},"episode":{"expectedTypes":["Episode"]},"numberOfEpisodes":{"expectedTypes":["Number"]},"partOfSeries":{"expectedTypes":["Series"]},"productionCompany":{"expectedTypes":["Organization"]},"seasonNumber":{"expectedTypes":["Integer","Text"]},"startDate":{"expectedTypes":["Date"]},"trailer":{"expectedTypes":["VideoObject"]}}},"RadioSeason":{"extends":"Season","properties":[]},"TVSeason":{"extends":"CreativeWork","properties":[]},"Series":{"extends":"CreativeWork","properties":{"endDate":{"expectedTypes":["Date"]},"startDate":{"expectedTypes":["Date"]}}},"BookSeries":{"extends":"Series","properties":[]},"MovieSeries":{"extends":"Series","properties":{"actor":{"expectedTypes":["Person"]},"director":{"expectedTypes":["Person"]},"musicBy":{"expectedTypes":["MusicGroup","Person"]},"productionCompany":{"expectedTypes":["Organization"]},"trailer":{"expectedTypes":["VideoObject"]}}},"Periodical":{"extends":"Series","properties":{"issn":{"expectedTypes":["Text"]}}},"RadioSeries":{"extends":"Series","properties":{"actor":{"expectedTypes":["Person"]},"director":{"expectedTypes":["Person"]},"episode":{"expectedTypes":["Episode"]},"musicBy":{"expectedTypes":["MusicGroup","Person"]},"numberOfEpisodes":{"expectedTypes":["Number"]},"numberOfSeasons":{"expectedTypes":["Number"]},"productionCompany":{"expectedTypes":["Organization"]},"season":{"expectedTypes":["Season"]},"trailer":{"expectedTypes":["VideoObject"]}}},"TVSeries":{"extends":"CreativeWork","properties":{"actor":{"expectedTypes":["Person"]},"director":{"expectedTypes":["Person"]},"episode":{"expectedTypes":["Episode"]},"musicBy":{"expectedTypes":["MusicGroup","Person"]},"numberOfEpisodes":{"expectedTypes":["Number"]},"numberOfSeasons":{"expectedTypes":["Number"]},"productionCompany":{"expectedTypes":["Organization"]},"season":{"expectedTypes":["Season"]},"trailer":{"expectedTypes":["VideoObject"]}}},"VideoGameSeries":{"extends":"Series","properties":{"actor":{"expectedTypes":["Person"]},"characterAttribute":{"expectedTypes":["Thing"]},"cheatCode":{"expectedTypes":["CreativeWork"]},"director":{"expectedTypes":["Person"]},"episode":{"expectedTypes":["Episode"]},"gameItem":{"expectedTypes":["Thing"]},"gamePlatform":{"expectedTypes":["Text","Thing","URL"]},"musicBy":{"expectedTypes":["Person","MusicGroup"]},"numberOfEpisodes":{"expectedTypes":["Number"]},"numberOfPlayers":{"expectedTypes":["QuantitativeValue"]},"numberOfSeasons":{"expectedTypes":["Number"]},"playMode":{"expectedTypes":["GamePlayMode"]},"productionCompany":{"expectedTypes":["Organization"]},"quest":{"expectedTypes":["Thing"]},"season":{"expectedTypes":["Season"]},"trailer":{"expectedTypes":["VideoObject"]}}},"SoftwareApplication":{"extends":"CreativeWork","properties":{"applicationCategory":{"expectedTypes":["Text","URL"]},"applicationSubCategory":{"expectedTypes":["Text","URL"]},"applicationSuite":{"expectedTypes":["Text"]},"countriesNotSupported":{"expectedTypes":["Text"]},"countriesSupported":{"expectedTypes":["Text"]},"device":{"expectedTypes":["Text"]},"downloadUrl":{"expectedTypes":["URL"]},"featureList":{"expectedTypes":["Text","URL"]},"fileFormat":{"expectedTypes":["Text"]},"fileSize":{"expectedTypes":["Integer"]},"installUrl":{"expectedTypes":["URL"]},"memoryRequirements":{"expectedTypes":["Text","URL"]},"operatingSystem":{"expectedTypes":["Text"]},"permissions":{"expectedTypes":["Text"]},"processorRequirements":{"expectedTypes":["Text"]},"releaseNotes":{"expectedTypes":["Text","URL"]},"requirements":{"expectedTypes":["Text","URL"]},"screenshot":{"expectedTypes":["ImageObject","URL"]},"softwareAddOn":{"expectedTypes":["SoftwareApplication"]},"softwareHelp":{"expectedTypes":["CreativeWork"]},"softwareVersion":{"expectedTypes":["Text"]},"storageRequirements":{"expectedTypes":["Text","URL"]}}},"MobileApplication":{"extends":"SoftwareApplication","properties":{"carrierRequirements":{"expectedTypes":["Text"]}}},"WebApplication":{"extends":"SoftwareApplication","properties":{"browserRequirements":{"expectedTypes":["Text"]}}},"VisualArtwork":{"extends":"CreativeWork","properties":{"artEdition":{"expectedTypes":["Integer","Text"]},"artform":{"expectedTypes":["Text","URL"]},"depth":{"expectedTypes":["Distance","QuantitativeValue"]},"height":{"expectedTypes":["Distance","QuantitativeValue"]},"material":{"expectedTypes":["Text","URL"]},"surface":{"expectedTypes":["Text","URL"]},"width":{"expectedTypes":["Distance","QuantitativeValue"]}}},"WebPage":{"extends":"CreativeWork","properties":{"breadcrumb":{"expectedTypes":["Text","BreadcrumbList"]},"lastReviewed":{"expectedTypes":["Date"]},"mainContentOfPage":{"expectedTypes":["WebPageElement"]},"primaryImageOfPage":{"expectedTypes":["ImageObject"]},"relatedLink":{"expectedTypes":["URL"]},"reviewedBy":{"expectedTypes":["Person","Organization"]},"significantLink":{"expectedTypes":["URL"]},"specialty":{"expectedTypes":["Specialty"]}}},"AboutPage":{"extends":"WebPage","properties":[]},"CheckoutPage":{"extends":"WebPage","properties":[]},"CollectionPage":{"extends":"WebPage","properties":[]},"ImageGallery":{"extends":"CollectionPage","properties":[]},"VideoGallery":{"extends":"CollectionPage","properties":[]},"ContactPage":{"extends":"WebPage","properties":[]},"ItemPage":{"extends":"WebPage","properties":[]},"MedicalWebPage":{"extends":"WebPage","properties":{"aspect":{"expectedTypes":["Text"]}}},"ProfilePage":{"extends":"WebPage","properties":[]},"QAPage":{"extends":"WebPage","properties":[]},"SearchResultsPage":{"extends":"WebPage","properties":[]},"WebPageElement":{"extends":"CreativeWork","properties":[]},"SiteNavigationElement":{"extends":"WebPageElement","properties":[]},"Table":{"extends":"WebPageElement","properties":[]},"WPAdBlock":{"extends":"WebPageElement","properties":[]},"WPFooter":{"extends":"WebPageElement","properties":[]},"WPHeader":{"extends":"WebPageElement","properties":[]},"WPSideBar":{"extends":"WebPageElement","properties":[]},"WebSite":{"extends":"CreativeWork","properties":[]},"Event":{"extends":"Thing","properties":{"attendee":{"expectedTypes":["Organization","Person"]},"doorTime":{"expectedTypes":["DateTime"]},"duration":{"expectedTypes":["Duration"]},"endDate":{"expectedTypes":["Date"]},"eventStatus":{"expectedTypes":["EventStatusType"]},"location":{"expectedTypes":["PostalAddress","Place"]},"offers":{"expectedTypes":["Offer"]},"organizer":{"expectedTypes":["Organization","Person"]},"performer":{"expectedTypes":["Organization","Person"]},"previousStartDate":{"expectedTypes":["Date"]},"recordedIn":{"expectedTypes":["CreativeWork"]},"startDate":{"expectedTypes":["Date"]},"subEvent":{"expectedTypes":["Event"]},"superEvent":{"expectedTypes":["Event"]},"typicalAgeRange":{"expectedTypes":["Text"]},"workPerformed":{"expectedTypes":["CreativeWork"]}}},"BusinessEvent":{"extends":"Event","properties":[]},"ChildrensEvent":{"extends":"Event","properties":[]},"ComedyEvent":{"extends":"Event","properties":[]},"DanceEvent":{"extends":"Event","properties":[]},"DeliveryEvent":{"extends":"Event","properties":{"accessCode":{"expectedTypes":["Text"]},"availableFrom":{"expectedTypes":["DateTime"]},"availableThrough":{"expectedTypes":["DateTime"]},"hasDeliveryMethod":{"expectedTypes":["DeliveryMethod"]}}},"EducationEvent":{"extends":"Event","properties":[]},"Festival":{"extends":"Event","properties":[]},"FoodEvent":{"extends":"Event","properties":[]},"LiteraryEvent":{"extends":"Event","properties":[]},"MusicEvent":{"extends":"Event","properties":[]},"PublicationEvent":{"extends":"Event","properties":{"free":{"expectedTypes":["Boolean"]},"publishedOn":{"expectedTypes":["BroadcastService"]}}},"BroadcastEvent":{"extends":"PublicationEvent","properties":[]},"OnDemandEvent":{"extends":"PublicationEvent","properties":[]},"SaleEvent":{"extends":"Event","properties":[]},"SocialEvent":{"extends":"Event","properties":[]},"SportsEvent":{"extends":"Event","properties":{"awayTeam":{"expectedTypes":["Person","SportsTeam"]},"competitor":{"expectedTypes":["Person","SportsTeam"]},"homeTeam":{"expectedTypes":["Person","SportsTeam"]}}},"TheaterEvent":{"extends":"Event","properties":[]},"UserInteraction":{"extends":"Event","properties":[]},"UserBlocks":{"extends":"UserInteraction","properties":[]},"UserCheckins":{"extends":"UserInteraction","properties":[]},"UserComments":{"extends":"UserInteraction","properties":{"commentText":{"expectedTypes":["Text"]},"commentTime":{"expectedTypes":["Date"]},"creator":{"expectedTypes":["Organization","Person"]},"discusses":{"expectedTypes":["CreativeWork"]},"replyToUrl":{"expectedTypes":["URL"]}}},"UserDownloads":{"extends":"UserInteraction","properties":[]},"UserLikes":{"extends":"UserInteraction","properties":[]},"UserPageVisits":{"extends":"UserInteraction","properties":[]},"UserPlays":{"extends":"UserInteraction","properties":[]},"UserPlusOnes":{"extends":"UserInteraction","properties":[]},"UserTweets":{"extends":"UserInteraction","properties":[]},"VisualArtsEvent":{"extends":"Event","properties":[]},"Intangible":{"extends":"Thing","properties":[]},"AlignmentObject":{"extends":"Intangible","properties":{"alignmentType":{"expectedTypes":["Text"]},"educationalFramework":{"expectedTypes":["Text"]},"targetDescription":{"expectedTypes":["Text"]},"targetName":{"expectedTypes":["Text"]},"targetUrl":{"expectedTypes":["URL"]}}},"Audience":{"extends":"Intangible","properties":{"audienceType":{"expectedTypes":["Text"]},"geographicArea":{"expectedTypes":["AdministrativeArea"]}}},"BusinessAudience":{"extends":"Audience","properties":{"numberOfEmployees":{"expectedTypes":["QuantitativeValue"]},"yearlyRevenue":{"expectedTypes":["QuantitativeValue"]},"yearsInOperation":{"expectedTypes":["QuantitativeValue"]}}},"EducationalAudience":{"extends":"Audience","properties":{"educationalRole":{"expectedTypes":["Text"]}}},"MedicalAudience":{"extends":"Audience","properties":[]},"PeopleAudience":{"extends":"Audience","properties":{"healthCondition":{"expectedTypes":["MedicalCondition"]},"requiredGender":{"expectedTypes":["Text"]},"requiredMaxAge":{"expectedTypes":["Integer"]},"requiredMinAge":{"expectedTypes":["Integer"]},"suggestedGender":{"expectedTypes":["Text"]},"suggestedMaxAge":{"expectedTypes":["Number"]},"suggestedMinAge":{"expectedTypes":["Number"]}}},"ParentAudience":{"extends":"PeopleAudience","properties":{"childMaxAge":{"expectedTypes":["Number"]},"childMinAge":{"expectedTypes":["Number"]}}},"Brand":{"extends":"Intangible","properties":{"logo":{"expectedTypes":["ImageObject","URL"]}}},"BusTrip":{"extends":"Intangible","properties":{"arrivalBusStop":{"expectedTypes":["BusStation","BusStop"]},"arrivalTime":{"expectedTypes":["DateTime"]},"busName":{"expectedTypes":["Text"]},"busNumber":{"expectedTypes":["Text"]},"departureBusStop":{"expectedTypes":["BusStation","BusStop"]},"departureTime":{"expectedTypes":["DateTime"]},"provider":{"expectedTypes":["Person","Organization"]}}},"Class":{"extends":"Intangible","properties":[]},"Demand":{"extends":"Intangible","properties":{"acceptedPaymentMethod":{"expectedTypes":["PaymentMethod"]},"advanceBookingRequirement":{"expectedTypes":["QuantitativeValue"]},"availability":{"expectedTypes":["ItemAvailability"]},"availabilityEnds":{"expectedTypes":["DateTime"]},"availabilityStarts":{"expectedTypes":["DateTime"]},"availableAtOrFrom":{"expectedTypes":["Place"]},"availableDeliveryMethod":{"expectedTypes":["DeliveryMethod"]},"businessFunction":{"expectedTypes":["BusinessFunction"]},"deliveryLeadTime":{"expectedTypes":["QuantitativeValue"]},"eligibleCustomerType":{"expectedTypes":["BusinessEntityType"]},"eligibleDuration":{"expectedTypes":["QuantitativeValue"]},"eligibleQuantity":{"expectedTypes":["QuantitativeValue"]},"eligibleRegion":{"expectedTypes":["GeoShape","Text"]},"eligibleTransactionVolume":{"expectedTypes":["PriceSpecification"]},"gtin13":{"expectedTypes":["Text"]},"gtin14":{"expectedTypes":["Text"]},"gtin8":{"expectedTypes":["Text"]},"includesObject":{"expectedTypes":["TypeAndQuantityNode"]},"inventoryLevel":{"expectedTypes":["QuantitativeValue"]},"itemCondition":{"expectedTypes":["OfferItemCondition"]},"itemOffered":{"expectedTypes":["Product"]},"mpn":{"expectedTypes":["Text"]},"priceSpecification":{"expectedTypes":["PriceSpecification"]},"seller":{"expectedTypes":["Organization","Person"]},"serialNumber":{"expectedTypes":["Text"]},"sku":{"expectedTypes":["Text"]},"validFrom":{"expectedTypes":["DateTime"]},"validThrough":{"expectedTypes":["DateTime"]},"warranty":{"expectedTypes":["WarrantyPromise"]}}},"EntryPoint":{"extends":"Intangible","properties":{"application":{"expectedTypes":["SoftwareApplication"]},"contentType":{"expectedTypes":["Text"]},"encodingType":{"expectedTypes":["Text"]},"httpMethod":{"expectedTypes":["Text"]},"urlTemplate":{"expectedTypes":["Text"]}}},"Enumeration":{"extends":"Intangible","properties":[]},"ActionStatusType":{"extends":"Enumeration","properties":[]},"BookFormatType":{"extends":"Enumeration","properties":[]},"BusinessEntityType":{"extends":"Enumeration","properties":[]},"BusinessFunction":{"extends":"Enumeration","properties":[]},"ContactPointOption":{"extends":"Enumeration","properties":[]},"DayOfWeek":{"extends":"Enumeration","properties":[]},"DeliveryMethod":{"extends":"Enumeration","properties":[]},"LockerDelivery":{"extends":"DeliveryMethod","properties":[]},"ParcelService":{"extends":"DeliveryMethod","properties":[]},"DrugCostCategory":{"extends":"Enumeration","properties":[]},"DrugPregnancyCategory":{"extends":"MedicalEnumeration","properties":[]},"DrugPrescriptionStatus":{"extends":"Enumeration","properties":[]},"EventStatusType":{"extends":"Enumeration","properties":[]},"GamePlayMode":{"extends":"Enumeration","properties":[]},"GameServerStatus":{"extends":"Enumeration","properties":[]},"InfectiousAgentClass":{"extends":"MedicalEnumeration","properties":[]},"ItemAvailability":{"extends":"Enumeration","properties":[]},"ItemListOrderType":{"extends":"Enumeration","properties":[]},"MapCategoryType":{"extends":"Enumeration","properties":[]},"MedicalDevicePurpose":{"extends":"Enumeration","properties":[]},"MedicalEnumeration":{"extends":"Enumeration","properties":[]},"MedicalEvidenceLevel":{"extends":"Enumeration","properties":[]},"MedicalImagingTechnique":{"extends":"Enumeration","properties":[]},"MedicalObservationalStudyDesign":{"extends":"Enumeration","properties":[]},"MedicalProcedureType":{"extends":"MedicalEnumeration","properties":[]},"MedicalSpecialty":{"extends":"Enumeration","properties":[]},"MedicalStudyStatus":{"extends":"Enumeration","properties":[]},"MedicalTrialDesign":{"extends":"Enumeration","properties":[]},"MedicineSystem":{"extends":"Enumeration","properties":[]},"PhysicalActivityCategory":{"extends":"MedicalEnumeration","properties":[]},"PhysicalExam":{"extends":"Enumeration","properties":[]},"MusicAlbumProductionType":{"extends":"Enumeration","properties":[]},"MusicAlbumReleaseType":{"extends":"Enumeration","properties":[]},"MusicReleaseFormatType":{"extends":"Enumeration","properties":[]},"OfferItemCondition":{"extends":"Enumeration","properties":[]},"OrderStatus":{"extends":"Enumeration","properties":[]},"PaymentMethod":{"extends":"Enumeration","properties":[]},"CreditCard":{"extends":"PaymentMethod","properties":[]},"QualitativeValue":{"extends":"Enumeration","properties":{"equal":{"expectedTypes":["QualitativeValue"]},"greater":{"expectedTypes":["QualitativeValue"]},"greaterOrEqual":{"expectedTypes":["QualitativeValue"]},"lesser":{"expectedTypes":["QualitativeValue"]},"lesserOrEqual":{"expectedTypes":["QualitativeValue"]},"nonEqual":{"expectedTypes":["QualitativeValue"]},"valueReference":{"expectedTypes":["Enumeration","StructuredValue"]}}},"ReservationStatusType":{"extends":"Enumeration","properties":[]},"RsvpResponseType":{"extends":"Enumeration","properties":[]},"Specialty":{"extends":"Enumeration","properties":[]},"WarrantyScope":{"extends":"Enumeration","properties":[]},"Flight":{"extends":"Intangible","properties":{"aircraft":{"expectedTypes":["Vehicle","Text"]},"arrivalAirport":{"expectedTypes":["Airport"]},"arrivalGate":{"expectedTypes":["Text"]},"arrivalTerminal":{"expectedTypes":["Text"]},"arrivalTime":{"expectedTypes":["DateTime"]},"departureAirport":{"expectedTypes":["Airport"]},"departureGate":{"expectedTypes":["Text"]},"departureTerminal":{"expectedTypes":["Text"]},"departureTime":{"expectedTypes":["DateTime"]},"estimatedFlightDuration":{"expectedTypes":["Duration","Text"]},"flightDistance":{"expectedTypes":["Text","Distance"]},"flightNumber":{"expectedTypes":["Text"]},"mealService":{"expectedTypes":["Text"]},"provider":{"expectedTypes":["Organization","Person"]},"seller":{"expectedTypes":["Organization","Person"]},"webCheckinTime":{"expectedTypes":["DateTime"]}}},"GameServer":{"extends":"Intangible","properties":{"game":{"expectedTypes":["VideoGame"]},"playersOnline":{"expectedTypes":["Number"]},"serverStatus":{"expectedTypes":["GameServerStatus"]}}},"Invoice":{"extends":"Intangible","properties":{"accountId":{"expectedTypes":["Text"]},"billingPeriod":{"expectedTypes":["Duration"]},"broker":{"expectedTypes":["Person","Organization"]},"category":{"expectedTypes":["Text","PhysicalActivityCategory","Thing"]},"confirmationNumber":{"expectedTypes":["Text"]},"customer":{"expectedTypes":["Person","Organization"]},"minimumPaymentDue":{"expectedTypes":["PriceSpecification"]},"paymentDue":{"expectedTypes":["DateTime"]},"paymentMethod":{"expectedTypes":["PaymentMethod"]},"paymentMethodId":{"expectedTypes":["Text"]},"paymentStatus":{"expectedTypes":["Text"]},"provider":{"expectedTypes":["Person","Organization"]},"referencesOrder":{"expectedTypes":["Order"]},"scheduledPaymentDate":{"expectedTypes":["Date"]},"totalPaymentDue":{"expectedTypes":["PriceSpecification"]}}},"ItemList":{"extends":"Intangible","properties":{"itemListElement":{"expectedTypes":["Text","ListItem","Thing"]},"itemListOrder":{"expectedTypes":["Text","ItemListOrderType"]},"numberOfItems":{"expectedTypes":["Number"]}}},"BreadcrumbList":{"extends":"ItemList","properties":[]},"JobPosting":{"extends":"Intangible","properties":{"baseSalary":{"expectedTypes":["Number","PriceSpecification"]},"benefits":{"expectedTypes":["Text"]},"datePosted":{"expectedTypes":["Date"]},"educationRequirements":{"expectedTypes":["Text"]},"employmentType":{"expectedTypes":["Text"]},"experienceRequirements":{"expectedTypes":["Text"]},"hiringOrganization":{"expectedTypes":["Organization"]},"incentives":{"expectedTypes":["Text"]},"industry":{"expectedTypes":["Text"]},"jobLocation":{"expectedTypes":["Place"]},"occupationalCategory":{"expectedTypes":["Text"]},"qualifications":{"expectedTypes":["Text"]},"responsibilities":{"expectedTypes":["Text"]},"salaryCurrency":{"expectedTypes":["Text"]},"skills":{"expectedTypes":["Text"]},"specialCommitments":{"expectedTypes":["Text"]},"title":{"expectedTypes":["Text"]},"workHours":{"expectedTypes":["Text"]}}},"Language":{"extends":"Intangible","properties":[]},"ListItem":{"extends":"Intangible","properties":{"item":{"expectedTypes":["Thing"]},"nextItem":{"expectedTypes":["ListItem"]},"position":{"expectedTypes":["Text","Integer"]},"previousItem":{"expectedTypes":["ListItem"]}}},"Offer":{"extends":"Intangible","properties":{"acceptedPaymentMethod":{"expectedTypes":["PaymentMethod"]},"addOn":{"expectedTypes":["Offer"]},"advanceBookingRequirement":{"expectedTypes":["QuantitativeValue"]},"aggregateRating":{"expectedTypes":["AggregateRating"]},"availability":{"expectedTypes":["ItemAvailability"]},"availabilityEnds":{"expectedTypes":["DateTime"]},"availabilityStarts":{"expectedTypes":["DateTime"]},"availableAtOrFrom":{"expectedTypes":["Place"]},"availableDeliveryMethod":{"expectedTypes":["DeliveryMethod"]},"businessFunction":{"expectedTypes":["BusinessFunction"]},"category":{"expectedTypes":["PhysicalActivityCategory","Thing","Text"]},"deliveryLeadTime":{"expectedTypes":["QuantitativeValue"]},"eligibleCustomerType":{"expectedTypes":["BusinessEntityType"]},"eligibleDuration":{"expectedTypes":["QuantitativeValue"]},"eligibleQuantity":{"expectedTypes":["QuantitativeValue"]},"eligibleRegion":{"expectedTypes":["GeoShape","Text"]},"eligibleTransactionVolume":{"expectedTypes":["PriceSpecification"]},"gtin13":{"expectedTypes":["Text"]},"gtin14":{"expectedTypes":["Text"]},"gtin8":{"expectedTypes":["Text"]},"includesObject":{"expectedTypes":["TypeAndQuantityNode"]},"ineligibleRegion":{"expectedTypes":["Place"]},"inventoryLevel":{"expectedTypes":["QuantitativeValue"]},"itemCondition":{"expectedTypes":["OfferItemCondition"]},"itemOffered":{"expectedTypes":["Product"]},"mpn":{"expectedTypes":["Text"]},"price":{"expectedTypes":["Number","Text"]},"priceCurrency":{"expectedTypes":["Text"]},"priceSpecification":{"expectedTypes":["PriceSpecification"]},"priceValidUntil":{"expectedTypes":["Date"]},"review":{"expectedTypes":["Review"]},"seller":{"expectedTypes":["Organization","Person"]},"serialNumber":{"expectedTypes":["Text"]},"sku":{"expectedTypes":["Text"]},"validFrom":{"expectedTypes":["DateTime"]},"validThrough":{"expectedTypes":["DateTime"]},"warranty":{"expectedTypes":["WarrantyPromise"]}}},"AggregateOffer":{"extends":"Offer","properties":{"highPrice":{"expectedTypes":["Text","Number"]},"lowPrice":{"expectedTypes":["Text","Number"]},"offerCount":{"expectedTypes":["Integer"]},"offers":{"expectedTypes":["Offer"]}}},"Order":{"extends":"Intangible","properties":{"acceptedOffer":{"expectedTypes":["Offer"]},"billingAddress":{"expectedTypes":["PostalAddress"]},"broker":{"expectedTypes":["Person","Organization"]},"confirmationNumber":{"expectedTypes":["Text"]},"customer":{"expectedTypes":["Person","Organization"]},"discount":{"expectedTypes":["Text","Number"]},"discountCode":{"expectedTypes":["Text"]},"discountCurrency":{"expectedTypes":["Text"]},"isGift":{"expectedTypes":["Boolean"]},"orderDate":{"expectedTypes":["DateTime"]},"orderNumber":{"expectedTypes":["Text"]},"orderStatus":{"expectedTypes":["OrderStatus"]},"orderedItem":{"expectedTypes":["Product"]},"partOfInvoice":{"expectedTypes":["Invoice"]},"paymentDue":{"expectedTypes":["DateTime"]},"paymentMethod":{"expectedTypes":["PaymentMethod"]},"paymentMethodId":{"expectedTypes":["Text"]},"paymentUrl":{"expectedTypes":["URL"]},"seller":{"expectedTypes":["Person","Organization"]}}},"ParcelDelivery":{"extends":"Intangible","properties":{"deliveryAddress":{"expectedTypes":["PostalAddress"]},"deliveryStatus":{"expectedTypes":["DeliveryEvent"]},"expectedArrivalFrom":{"expectedTypes":["DateTime"]},"expectedArrivalUntil":{"expectedTypes":["DateTime"]},"hasDeliveryMethod":{"expectedTypes":["DeliveryMethod"]},"itemShipped":{"expectedTypes":["Product"]},"originAddress":{"expectedTypes":["PostalAddress"]},"partOfOrder":{"expectedTypes":["Order"]},"provider":{"expectedTypes":["Person","Organization"]},"trackingNumber":{"expectedTypes":["Text"]},"trackingUrl":{"expectedTypes":["URL"]}}},"Permit":{"extends":"Intangible","properties":{"issuedBy":{"expectedTypes":["Organization"]},"issuedThrough":{"expectedTypes":["Service"]},"permitAudience":{"expectedTypes":["Audience"]},"validFor":{"expectedTypes":["Duration"]},"validFrom":{"expectedTypes":["DateTime"]},"validIn":{"expectedTypes":["AdministrativeArea"]},"validUntil":{"expectedTypes":["Date"]}}},"GovernmentPermit":{"extends":"Permit","properties":[]},"ProgramMembership":{"extends":"Intangible","properties":{"hostingOrganization":{"expectedTypes":["Organization"]},"member":{"expectedTypes":["Person","Organization"]},"membershipNumber":{"expectedTypes":["Text"]},"programName":{"expectedTypes":["Text"]}}},"Property":{"extends":"Intangible","properties":{"domainIncludes":{"expectedTypes":["Class"]},"inverseOf":{"expectedTypes":["Property"]},"rangeIncludes":{"expectedTypes":["Class"]},"supersededBy":{"expectedTypes":["Property"]}}},"PropertyValueSpecification":{"extends":"Intangible","properties":{"defaultValue":{"expectedTypes":["Text","Thing"]},"maxValue":{"expectedTypes":["Number"]},"minValue":{"expectedTypes":["Number"]},"multipleValues":{"expectedTypes":["Boolean"]},"readonlyValue":{"expectedTypes":["Boolean"]},"stepValue":{"expectedTypes":["Number"]},"valueMaxLength":{"expectedTypes":["Number"]},"valueMinLength":{"expectedTypes":["Number"]},"valueName":{"expectedTypes":["Text"]},"valuePattern":{"expectedTypes":["Text"]},"valueRequired":{"expectedTypes":["Boolean"]}}},"Quantity":{"extends":"Intangible","properties":[]},"Distance":{"extends":"Quantity","properties":[]},"Duration":{"extends":"Quantity","properties":[]},"Energy":{"extends":"Quantity","properties":[]},"Mass":{"extends":"Quantity","properties":[]},"Rating":{"extends":"Intangible","properties":{"bestRating":{"expectedTypes":["Number","Text"]},"ratingValue":{"expectedTypes":["Text"]},"worstRating":{"expectedTypes":["Number","Text"]}}},"AggregateRating":{"extends":"Rating","properties":{"itemReviewed":{"expectedTypes":["Thing"]},"ratingCount":{"expectedTypes":["Number"]},"reviewCount":{"expectedTypes":["Number"]}}},"Reservation":{"extends":"Intangible","properties":{"bookingTime":{"expectedTypes":["DateTime"]},"broker":{"expectedTypes":["Organization","Person"]},"modifiedTime":{"expectedTypes":["DateTime"]},"priceCurrency":{"expectedTypes":["Text"]},"programMembershipUsed":{"expectedTypes":["ProgramMembership"]},"provider":{"expectedTypes":["Organization","Person"]},"reservationFor":{"expectedTypes":["Thing"]},"reservationId":{"expectedTypes":["Text"]},"reservationStatus":{"expectedTypes":["ReservationStatusType"]},"reservedTicket":{"expectedTypes":["Ticket"]},"totalPrice":{"expectedTypes":["Number","PriceSpecification","Text"]},"underName":{"expectedTypes":["Organization","Person"]}}},"BusReservation":{"extends":"Reservation","properties":[]},"EventReservation":{"extends":"Reservation","properties":[]},"FlightReservation":{"extends":"Reservation","properties":{"boardingGroup":{"expectedTypes":["Text"]}}},"FoodEstablishmentReservation":{"extends":"Reservation","properties":{"endTime":{"expectedTypes":["DateTime"]},"partySize":{"expectedTypes":["Number","QuantitativeValue"]},"startTime":{"expectedTypes":["DateTime"]}}},"LodgingReservation":{"extends":"Reservation","properties":{"checkinTime":{"expectedTypes":["DateTime"]},"checkoutTime":{"expectedTypes":["DateTime"]},"lodgingUnitDescription":{"expectedTypes":["Text"]},"lodgingUnitType":{"expectedTypes":["Text","QualitativeValue"]},"numAdults":{"expectedTypes":["QuantitativeValue","Number"]},"numChildren":{"expectedTypes":["QuantitativeValue","Number"]}}},"RentalCarReservation":{"extends":"Reservation","properties":{"dropoffLocation":{"expectedTypes":["Place"]},"dropoffTime":{"expectedTypes":["DateTime"]},"pickupLocation":{"expectedTypes":["Place"]},"pickupTime":{"expectedTypes":["DateTime"]}}},"ReservationPackage":{"extends":"Reservation","properties":{"subReservation":{"expectedTypes":["Reservation"]}}},"TaxiReservation":{"extends":"Reservation","properties":{"partySize":{"expectedTypes":["Number","QuantitativeValue"]},"pickupLocation":{"expectedTypes":["Place"]},"pickupTime":{"expectedTypes":["DateTime"]}}},"TrainReservation":{"extends":"Reservation","properties":[]},"Role":{"extends":"Intangible","properties":{"endDate":{"expectedTypes":["Date"]},"roleName":{"expectedTypes":["Text","URL"]},"startDate":{"expectedTypes":["Date"]}}},"OrganizationRole":{"extends":"Role","properties":{"numberedPosition":{"expectedTypes":["Number"]}}},"EmployeeRole":{"extends":"OrganizationRole","properties":{"baseSalary":{"expectedTypes":["Number","PriceSpecification"]},"salaryCurrency":{"expectedTypes":["Text"]}}},"PerformanceRole":{"extends":"Role","properties":{"characterName":{"expectedTypes":["Text"]}}},"Seat":{"extends":"Intangible","properties":{"seatNumber":{"expectedTypes":["Text"]},"seatRow":{"expectedTypes":["Text"]},"seatSection":{"expectedTypes":["Text"]},"seatingType":{"expectedTypes":["Text","QualitativeValue"]}}},"Service":{"extends":"Intangible","properties":{"availableChannel":{"expectedTypes":["ServiceChannel"]},"produces":{"expectedTypes":["Thing"]},"provider":{"expectedTypes":["Person","Organization"]},"serviceArea":{"expectedTypes":["AdministrativeArea"]},"serviceAudience":{"expectedTypes":["Audience"]},"serviceType":{"expectedTypes":["Text"]}}},"GovernmentService":{"extends":"Service","properties":{"serviceOperator":{"expectedTypes":["Organization"]}}},"Taxi":{"extends":"Service","properties":[]},"ServiceChannel":{"extends":"Intangible","properties":{"availableLanguage":{"expectedTypes":["Language"]},"processingTime":{"expectedTypes":["Duration"]},"providesService":{"expectedTypes":["Service"]},"serviceLocation":{"expectedTypes":["Place"]},"servicePhone":{"expectedTypes":["ContactPoint"]},"servicePostalAddress":{"expectedTypes":["PostalAddress"]},"serviceSmsNumber":{"expectedTypes":["ContactPoint"]},"serviceUrl":{"expectedTypes":["URL"]}}},"StructuredValue":{"extends":"Intangible","properties":[]},"ContactPoint":{"extends":"StructuredValue","properties":{"areaServed":{"expectedTypes":["AdministrativeArea"]},"availableLanguage":{"expectedTypes":["Language"]},"contactOption":{"expectedTypes":["ContactPointOption"]},"contactType":{"expectedTypes":["Text"]},"email":{"expectedTypes":["Text"]},"faxNumber":{"expectedTypes":["Text"]},"hoursAvailable":{"expectedTypes":["OpeningHoursSpecification"]},"productSupported":{"expectedTypes":["Product","Text"]},"telephone":{"expectedTypes":["Text"]}}},"PostalAddress":{"extends":"ContactPoint","properties":{"addressCountry":{"expectedTypes":["Country"]},"addressLocality":{"expectedTypes":["Text"]},"addressRegion":{"expectedTypes":["Text"]},"postOfficeBoxNumber":{"expectedTypes":["Text"]},"postalCode":{"expectedTypes":["Text"]},"streetAddress":{"expectedTypes":["Text"]}}},"DatedMoneySpecification":{"extends":"StructuredValue","properties":{"amount":{"expectedTypes":["Number"]},"currency":{"expectedTypes":["Text"]},"endDate":{"expectedTypes":["Date"]},"startDate":{"expectedTypes":["Date"]}}},"GeoCoordinates":{"extends":"StructuredValue","properties":{"elevation":{"expectedTypes":["Text","Number"]},"latitude":{"expectedTypes":["Text","Number"]},"longitude":{"expectedTypes":["Text","Number"]}}},"GeoShape":{"extends":"StructuredValue","properties":{"box":{"expectedTypes":["Text"]},"circle":{"expectedTypes":["Text"]},"elevation":{"expectedTypes":["Number","Text"]},"line":{"expectedTypes":["Text"]},"polygon":{"expectedTypes":["Text"]}}},"NutritionInformation":{"extends":"StructuredValue","properties":{"calories":{"expectedTypes":["Energy"]},"carbohydrateContent":{"expectedTypes":["Mass"]},"cholesterolContent":{"expectedTypes":["Mass"]},"fatContent":{"expectedTypes":["Mass"]},"fiberContent":{"expectedTypes":["Mass"]},"proteinContent":{"expectedTypes":["Mass"]},"saturatedFatContent":{"expectedTypes":["Mass"]},"servingSize":{"expectedTypes":["Text"]},"sodiumContent":{"expectedTypes":["Mass"]},"sugarContent":{"expectedTypes":["Mass"]},"transFatContent":{"expectedTypes":["Mass"]},"unsaturatedFatContent":{"expectedTypes":["Mass"]}}},"OpeningHoursSpecification":{"extends":"StructuredValue","properties":{"closes":{"expectedTypes":["Time"]},"dayOfWeek":{"expectedTypes":["DayOfWeek"]},"opens":{"expectedTypes":["Time"]},"validFrom":{"expectedTypes":["DateTime"]},"validThrough":{"expectedTypes":["DateTime"]}}},"OwnershipInfo":{"extends":"StructuredValue","properties":{"acquiredFrom":{"expectedTypes":["Organization","Person"]},"ownedFrom":{"expectedTypes":["DateTime"]},"ownedThrough":{"expectedTypes":["DateTime"]},"typeOfGood":{"expectedTypes":["Product"]}}},"PriceSpecification":{"extends":"StructuredValue","properties":{"eligibleQuantity":{"expectedTypes":["QuantitativeValue"]},"eligibleTransactionVolume":{"expectedTypes":["PriceSpecification"]},"maxPrice":{"expectedTypes":["Number"]},"minPrice":{"expectedTypes":["Number"]},"price":{"expectedTypes":["Number","Text"]},"priceCurrency":{"expectedTypes":["Text"]},"validFrom":{"expectedTypes":["DateTime"]},"validThrough":{"expectedTypes":["DateTime"]},"valueAddedTaxIncluded":{"expectedTypes":["Boolean"]}}},"DeliveryChargeSpecification":{"extends":"PriceSpecification","properties":{"appliesToDeliveryMethod":{"expectedTypes":["DeliveryMethod"]},"eligibleRegion":{"expectedTypes":["Text","GeoShape"]}}},"PaymentChargeSpecification":{"extends":"PriceSpecification","properties":{"appliesToDeliveryMethod":{"expectedTypes":["DeliveryMethod"]},"appliesToPaymentMethod":{"expectedTypes":["PaymentMethod"]}}},"UnitPriceSpecification":{"extends":"PriceSpecification","properties":{"billingIncrement":{"expectedTypes":["Number"]},"priceType":{"expectedTypes":["Text"]},"unitCode":{"expectedTypes":["Text"]}}},"QuantitativeValue":{"extends":"StructuredValue","properties":{"maxValue":{"expectedTypes":["Number"]},"minValue":{"expectedTypes":["Number"]},"unitCode":{"expectedTypes":["Text"]},"value":{"expectedTypes":["Number"]},"valueReference":{"expectedTypes":["StructuredValue","Enumeration"]}}},"TypeAndQuantityNode":{"extends":"StructuredValue","properties":{"amountOfThisGood":{"expectedTypes":["Number"]},"businessFunction":{"expectedTypes":["BusinessFunction"]},"typeOfGood":{"expectedTypes":["Product"]},"unitCode":{"expectedTypes":["Text"]}}},"WarrantyPromise":{"extends":"StructuredValue","properties":{"durationOfWarranty":{"expectedTypes":["QuantitativeValue"]},"warrantyScope":{"expectedTypes":["WarrantyScope"]}}},"Ticket":{"extends":"Intangible","properties":{"dateIssued":{"expectedTypes":["DateTime"]},"issuedBy":{"expectedTypes":["Organization"]},"priceCurrency":{"expectedTypes":["Text"]},"ticketNumber":{"expectedTypes":["Text"]},"ticketToken":{"expectedTypes":["Text","URL"]},"ticketedSeat":{"expectedTypes":["Seat"]},"totalPrice":{"expectedTypes":["Text","Number","PriceSpecification"]},"underName":{"expectedTypes":["Person","Organization"]}}},"TrainTrip":{"extends":"Intangible","properties":{"arrivalPlatform":{"expectedTypes":["Text"]},"arrivalStation":{"expectedTypes":["TrainStation"]},"arrivalTime":{"expectedTypes":["DateTime"]},"departurePlatform":{"expectedTypes":["Text"]},"departureStation":{"expectedTypes":["TrainStation"]},"departureTime":{"expectedTypes":["DateTime"]},"provider":{"expectedTypes":["Person","Organization"]},"trainName":{"expectedTypes":["Text"]},"trainNumber":{"expectedTypes":["Text"]}}},"MedicalEntity":{"extends":"Thing","properties":{"code":{"expectedTypes":["MedicalCode"]},"guideline":{"expectedTypes":["MedicalGuideline"]},"medicineSystem":{"expectedTypes":["MedicineSystem"]},"recognizingAuthority":{"expectedTypes":["Organization"]},"relevantSpecialty":{"expectedTypes":["MedicalSpecialty"]},"study":{"expectedTypes":["MedicalStudy"]}}},"AnatomicalStructure":{"extends":"MedicalEntity","properties":{"associatedPathophysiology":{"expectedTypes":["Text"]},"bodyLocation":{"expectedTypes":["Text"]},"connectedTo":{"expectedTypes":["AnatomicalStructure"]},"diagram":{"expectedTypes":["ImageObject"]},"function":{"expectedTypes":["Text"]},"partOfSystem":{"expectedTypes":["AnatomicalSystem"]},"relatedCondition":{"expectedTypes":["MedicalCondition"]},"relatedTherapy":{"expectedTypes":["MedicalTherapy"]},"subStructure":{"expectedTypes":["AnatomicalStructure"]}}},"Bone":{"extends":"AnatomicalStructure","properties":[]},"BrainStructure":{"extends":"AnatomicalStructure","properties":[]},"Joint":{"extends":"AnatomicalStructure","properties":{"biomechnicalClass":{"expectedTypes":["Text"]},"functionalClass":{"expectedTypes":["Text"]},"structuralClass":{"expectedTypes":["Text"]}}},"Ligament":{"extends":"AnatomicalStructure","properties":[]},"Muscle":{"extends":"AnatomicalStructure","properties":{"antagonist":{"expectedTypes":["Muscle"]},"bloodSupply":{"expectedTypes":["Vessel"]},"insertion":{"expectedTypes":["AnatomicalStructure"]},"muscleAction":{"expectedTypes":["Text"]},"nerve":{"expectedTypes":["Nerve"]},"origin":{"expectedTypes":["AnatomicalStructure"]}}},"Nerve":{"extends":"AnatomicalStructure","properties":{"branch":{"expectedTypes":["AnatomicalStructure"]},"nerveMotor":{"expectedTypes":["Muscle"]},"sensoryUnit":{"expectedTypes":["SuperficialAnatomy","AnatomicalStructure"]},"sourcedFrom":{"expectedTypes":["BrainStructure"]}}},"Vessel":{"extends":"AnatomicalStructure","properties":[]},"Artery":{"extends":"Vessel","properties":{"arterialBranch":{"expectedTypes":["AnatomicalStructure"]},"source":{"expectedTypes":["AnatomicalStructure"]},"supplyTo":{"expectedTypes":["AnatomicalStructure"]}}},"LymphaticVessel":{"extends":"Vessel","properties":{"originatesFrom":{"expectedTypes":["Vessel"]},"regionDrained":{"expectedTypes":["AnatomicalSystem","AnatomicalStructure"]},"runsTo":{"expectedTypes":["Vessel"]}}},"Vein":{"extends":"Vessel","properties":{"drainsTo":{"expectedTypes":["Vessel"]},"regionDrained":{"expectedTypes":["AnatomicalSystem","AnatomicalStructure"]},"tributary":{"expectedTypes":["AnatomicalStructure"]}}},"AnatomicalSystem":{"extends":"MedicalEntity","properties":{"associatedPathophysiology":{"expectedTypes":["Text"]},"comprisedOf":{"expectedTypes":["AnatomicalSystem","AnatomicalStructure"]},"relatedCondition":{"expectedTypes":["MedicalCondition"]},"relatedStructure":{"expectedTypes":["AnatomicalStructure"]},"relatedTherapy":{"expectedTypes":["MedicalTherapy"]}}},"MedicalCause":{"extends":"MedicalEntity","properties":{"causeOf":{"expectedTypes":["MedicalEntity"]}}},"MedicalCondition":{"extends":"MedicalEntity","properties":{"associatedAnatomy":{"expectedTypes":["AnatomicalSystem","SuperficialAnatomy","AnatomicalStructure"]},"cause":{"expectedTypes":["MedicalCause"]},"differentialDiagnosis":{"expectedTypes":["DDxElement"]},"epidemiology":{"expectedTypes":["Text"]},"expectedPrognosis":{"expectedTypes":["Text"]},"naturalProgression":{"expectedTypes":["Text"]},"pathophysiology":{"expectedTypes":["Text"]},"possibleComplication":{"expectedTypes":["Text"]},"possibleTreatment":{"expectedTypes":["MedicalTherapy"]},"primaryPrevention":{"expectedTypes":["MedicalTherapy"]},"riskFactor":{"expectedTypes":["MedicalRiskFactor"]},"secondaryPrevention":{"expectedTypes":["MedicalTherapy"]},"signOrSymptom":{"expectedTypes":["MedicalSignOrSymptom"]},"stage":{"expectedTypes":["MedicalConditionStage"]},"subtype":{"expectedTypes":["Text"]},"typicalTest":{"expectedTypes":["MedicalTest"]}}},"InfectiousDisease":{"extends":"MedicalCondition","properties":{"infectiousAgent":{"expectedTypes":["Text"]},"infectiousAgentClass":{"expectedTypes":["InfectiousAgentClass"]},"transmissionMethod":{"expectedTypes":["Text"]}}},"MedicalContraindication":{"extends":"MedicalEntity","properties":[]},"MedicalDevice":{"extends":"MedicalEntity","properties":{"adverseOutcome":{"expectedTypes":["MedicalEntity"]},"contraindication":{"expectedTypes":["MedicalContraindication"]},"indication":{"expectedTypes":["MedicalIndication"]},"postOp":{"expectedTypes":["Text"]},"preOp":{"expectedTypes":["Text"]},"procedure":{"expectedTypes":["Text"]},"purpose":{"expectedTypes":["MedicalDevicePurpose","Thing"]},"seriousAdverseOutcome":{"expectedTypes":["MedicalEntity"]}}},"MedicalGuideline":{"extends":"MedicalEntity","properties":{"evidenceLevel":{"expectedTypes":["MedicalEvidenceLevel"]},"evidenceOrigin":{"expectedTypes":["Text"]},"guidelineDate":{"expectedTypes":["Date"]},"guidelineSubject":{"expectedTypes":["MedicalEntity"]}}},"MedicalGuidelineContraindication":{"extends":"MedicalGuideline","properties":[]},"MedicalGuidelineRecommendation":{"extends":"MedicalGuideline","properties":{"recommendationStrength":{"expectedTypes":["Text"]}}},"MedicalIndication":{"extends":"MedicalEntity","properties":[]},"ApprovedIndication":{"extends":"MedicalIndication","properties":[]},"PreventionIndication":{"extends":"MedicalIndication","properties":[]},"TreatmentIndication":{"extends":"MedicalIndication","properties":[]},"MedicalIntangible":{"extends":"MedicalEntity","properties":[]},"DDxElement":{"extends":"MedicalIntangible","properties":{"diagnosis":{"expectedTypes":["MedicalCondition"]},"distinguishingSign":{"expectedTypes":["MedicalSignOrSymptom"]}}},"DoseSchedule":{"extends":"MedicalIntangible","properties":{"doseUnit":{"expectedTypes":["Text"]},"doseValue":{"expectedTypes":["Number"]},"frequency":{"expectedTypes":["Text"]},"targetPopulation":{"expectedTypes":["Text"]}}},"MaximumDoseSchedule":{"extends":"DoseSchedule","properties":[]},"RecommendedDoseSchedule":{"extends":"DoseSchedule","properties":[]},"ReportedDoseSchedule":{"extends":"DoseSchedule","properties":[]},"DrugCost":{"extends":"MedicalIntangible","properties":{"applicableLocation":{"expectedTypes":["AdministrativeArea"]},"costCategory":{"expectedTypes":["DrugCostCategory"]},"costCurrency":{"expectedTypes":["Text"]},"costOrigin":{"expectedTypes":["Text"]},"costPerUnit":{"expectedTypes":["Text","Number"]},"drugUnit":{"expectedTypes":["Text"]}}},"DrugLegalStatus":{"extends":"MedicalIntangible","properties":{"applicableLocation":{"expectedTypes":["AdministrativeArea"]}}},"DrugStrength":{"extends":"MedicalIntangible","properties":{"activeIngredient":{"expectedTypes":["Text"]},"availableIn":{"expectedTypes":["AdministrativeArea"]},"strengthUnit":{"expectedTypes":["Text"]},"strengthValue":{"expectedTypes":["Number"]}}},"MedicalCode":{"extends":"MedicalIntangible","properties":{"codeValue":{"expectedTypes":["Text"]},"codingSystem":{"expectedTypes":["Text"]}}},"MedicalConditionStage":{"extends":"MedicalIntangible","properties":{"stageAsNumber":{"expectedTypes":["Number"]},"subStageSuffix":{"expectedTypes":["Text"]}}},"":{"extends":"","properties":[]},"MedicalProcedure":{"extends":"MedicalEntity","properties":{"followup":{"expectedTypes":["Text"]},"howPerformed":{"expectedTypes":["Text"]},"preparation":{"expectedTypes":["Text"]},"procedureType":{"expectedTypes":["MedicalProcedureType"]}}},"DiagnosticProcedure":{"extends":"MedicalProcedure","properties":[]},"PalliativeProcedure":{"extends":"MedicalTherapy","properties":[]},"TherapeuticProcedure":{"extends":"MedicalTherapy","properties":[]},"MedicalRiskEstimator":{"extends":"MedicalEntity","properties":{"estimatesRiskOf":{"expectedTypes":["MedicalEntity"]},"includedRiskFactor":{"expectedTypes":["MedicalRiskFactor"]}}},"MedicalRiskCalculator":{"extends":"MedicalRiskEstimator","properties":[]},"MedicalRiskScore":{"extends":"MedicalRiskEstimator","properties":{"algorithm":{"expectedTypes":["Text"]}}},"MedicalRiskFactor":{"extends":"MedicalEntity","properties":{"increasesRiskOf":{"expectedTypes":["MedicalEntity"]}}},"MedicalSignOrSymptom":{"extends":"MedicalEntity","properties":{"cause":{"expectedTypes":["MedicalCause"]},"possibleTreatment":{"expectedTypes":["MedicalTherapy"]}}},"MedicalSign":{"extends":"MedicalSignOrSymptom","properties":{"identifyingExam":{"expectedTypes":["PhysicalExam"]},"identifyingTest":{"expectedTypes":["MedicalTest"]}}},"MedicalSymptom":{"extends":"MedicalSignOrSymptom","properties":[]},"MedicalStudy":{"extends":"MedicalEntity","properties":{"outcome":{"expectedTypes":["Text"]},"population":{"expectedTypes":["Text"]},"sponsor":{"expectedTypes":["Organization"]},"status":{"expectedTypes":["MedicalStudyStatus"]},"studyLocation":{"expectedTypes":["AdministrativeArea"]},"studySubject":{"expectedTypes":["MedicalEntity"]}}},"MedicalObservationalStudy":{"extends":"MedicalStudy","properties":{"studyDesign":{"expectedTypes":["MedicalObservationalStudyDesign"]}}},"MedicalTrial":{"extends":"MedicalStudy","properties":{"phase":{"expectedTypes":["Text"]},"trialDesign":{"expectedTypes":["MedicalTrialDesign"]}}},"MedicalTest":{"extends":"MedicalEntity","properties":{"affectedBy":{"expectedTypes":["Drug"]},"normalRange":{"expectedTypes":["Text"]},"signDetected":{"expectedTypes":["MedicalSign"]},"usedToDiagnose":{"expectedTypes":["MedicalCondition"]},"usesDevice":{"expectedTypes":["MedicalDevice"]}}},"BloodTest":{"extends":"MedicalTest","properties":[]},"ImagingTest":{"extends":"MedicalTest","properties":{"imagingTechnique":{"expectedTypes":["MedicalImagingTechnique"]}}},"MedicalTestPanel":{"extends":"MedicalTest","properties":{"subTest":{"expectedTypes":["MedicalTest"]}}},"PathologyTest":{"extends":"MedicalTest","properties":{"tissueSample":{"expectedTypes":["Text"]}}},"MedicalTherapy":{"extends":"MedicalEntity","properties":{"adverseOutcome":{"expectedTypes":["MedicalEntity"]},"contraindication":{"expectedTypes":["MedicalContraindication"]},"duplicateTherapy":{"expectedTypes":["MedicalTherapy"]},"indication":{"expectedTypes":["MedicalIndication"]},"seriousAdverseOutcome":{"expectedTypes":["MedicalEntity"]}}},"DietarySupplement":{"extends":"MedicalTherapy","properties":{"activeIngredient":{"expectedTypes":["Text"]},"background":{"expectedTypes":["Text"]},"dosageForm":{"expectedTypes":["Text"]},"isProprietary":{"expectedTypes":["Boolean"]},"legalStatus":{"expectedTypes":["DrugLegalStatus"]},"manufacturer":{"expectedTypes":["Organization"]},"maximumIntake":{"expectedTypes":["MaximumDoseSchedule"]},"mechanismOfAction":{"expectedTypes":["Text"]},"nonProprietaryName":{"expectedTypes":["Text"]},"recommendedIntake":{"expectedTypes":["RecommendedDoseSchedule"]},"safetyConsideration":{"expectedTypes":["Text"]},"targetPopulation":{"expectedTypes":["Text"]}}},"Drug":{"extends":"MedicalTherapy","properties":{"activeIngredient":{"expectedTypes":["Text"]},"administrationRoute":{"expectedTypes":["Text"]},"alcoholWarning":{"expectedTypes":["Text"]},"availableStrength":{"expectedTypes":["DrugStrength"]},"breastfeedingWarning":{"expectedTypes":["Text"]},"clinicalPharmacology":{"expectedTypes":["Text"]},"cost":{"expectedTypes":["DrugCost"]},"dosageForm":{"expectedTypes":["Text"]},"doseSchedule":{"expectedTypes":["DoseSchedule"]},"drugClass":{"expectedTypes":["DrugClass"]},"foodWarning":{"expectedTypes":["Text"]},"interactingDrug":{"expectedTypes":["Drug"]},"isAvailableGenerically":{"expectedTypes":["Boolean"]},"isProprietary":{"expectedTypes":["Boolean"]},"labelDetails":{"expectedTypes":["URL"]},"legalStatus":{"expectedTypes":["DrugLegalStatus"]},"manufacturer":{"expectedTypes":["Organization"]},"mechanismOfAction":{"expectedTypes":["Text"]},"nonProprietaryName":{"expectedTypes":["Text"]},"overdosage":{"expectedTypes":["Text"]},"pregnancyCategory":{"expectedTypes":["DrugPregnancyCategory"]},"pregnancyWarning":{"expectedTypes":["Text"]},"prescribingInfo":{"expectedTypes":["URL"]},"prescriptionStatus":{"expectedTypes":["DrugPrescriptionStatus"]},"relatedDrug":{"expectedTypes":["Drug"]},"warning":{"expectedTypes":["Text","URL"]}}},"DrugClass":{"extends":"MedicalTherapy","properties":{"drug":{"expectedTypes":["Drug"]}}},"LifestyleModification":{"extends":"MedicalTherapy","properties":[]},"PhysicalActivity":{"extends":"LifestyleModification","properties":{"associatedAnatomy":{"expectedTypes":["AnatomicalSystem","SuperficialAnatomy","AnatomicalStructure"]},"category":{"expectedTypes":["PhysicalActivityCategory","Thing","Text"]},"epidemiology":{"expectedTypes":["Text"]},"pathophysiology":{"expectedTypes":["Text"]}}},"PhysicalTherapy":{"extends":"MedicalTherapy","properties":[]},"PsychologicalTreatment":{"extends":"MedicalTherapy","properties":[]},"RadiationTherapy":{"extends":"MedicalTherapy","properties":[]},"SuperficialAnatomy":{"extends":"MedicalEntity","properties":{"associatedPathophysiology":{"expectedTypes":["Text"]},"relatedAnatomy":{"expectedTypes":["AnatomicalSystem","AnatomicalStructure"]},"relatedCondition":{"expectedTypes":["MedicalCondition"]},"relatedTherapy":{"expectedTypes":["MedicalTherapy"]},"significance":{"expectedTypes":["Text"]}}},"Organization":{"extends":"Thing","properties":{"address":{"expectedTypes":["PostalAddress"]},"aggregateRating":{"expectedTypes":["AggregateRating"]},"brand":{"expectedTypes":["Brand","Organization"]},"contactPoint":{"expectedTypes":["ContactPoint"]},"department":{"expectedTypes":["Organization"]},"dissolutionDate":{"expectedTypes":["Date"]},"duns":{"expectedTypes":["Text"]},"email":{"expectedTypes":["Text"]},"employee":{"expectedTypes":["Person"]},"event":{"expectedTypes":["Event"]},"faxNumber":{"expectedTypes":["Text"]},"founder":{"expectedTypes":["Person"]},"foundingDate":{"expectedTypes":["Date"]},"foundingLocation":{"expectedTypes":["Place"]},"globalLocationNumber":{"expectedTypes":["Text"]},"hasPOS":{"expectedTypes":["Place"]},"interactionCount":{"expectedTypes":["Text"]},"isicV4":{"expectedTypes":["Text"]},"legalName":{"expectedTypes":["Text"]},"location":{"expectedTypes":["Place","PostalAddress"]},"logo":{"expectedTypes":["ImageObject","URL"]},"makesOffer":{"expectedTypes":["Offer"]},"member":{"expectedTypes":["Person","Organization"]},"memberOf":{"expectedTypes":["ProgramMembership","Organization"]},"naics":{"expectedTypes":["Text"]},"owns":{"expectedTypes":["Product","OwnershipInfo"]},"review":{"expectedTypes":["Review"]},"seeks":{"expectedTypes":["Demand"]},"subOrganization":{"expectedTypes":["Organization"]},"taxID":{"expectedTypes":["Text"]},"telephone":{"expectedTypes":["Text"]},"vatID":{"expectedTypes":["Text"]}}},"Airline":{"extends":"Organization","properties":{"iataCode":{"expectedTypes":["Text"]}}},"Corporation":{"extends":"Organization","properties":{"tickerSymbol":{"expectedTypes":["Text"]}}},"EducationalOrganization":{"extends":"Organization","properties":{"alumni":{"expectedTypes":["Person"]}}},"CollegeOrUniversity":{"extends":"EducationalOrganization","properties":[]},"ElementarySchool":{"extends":"EducationalOrganization","properties":[]},"HighSchool":{"extends":"EducationalOrganization","properties":[]},"MiddleSchool":{"extends":"EducationalOrganization","properties":[]},"Preschool":{"extends":"EducationalOrganization","properties":[]},"School":{"extends":"EducationalOrganization","properties":[]},"GovernmentOrganization":{"extends":"Organization","properties":[]},"LocalBusiness":{"extends":"Organization","properties":{"branchOf":{"expectedTypes":["Organization"]},"currenciesAccepted":{"expectedTypes":["Text"]},"openingHours":{"expectedTypes":["Duration"]},"paymentAccepted":{"expectedTypes":["Text"]},"priceRange":{"expectedTypes":["Text"]}}},"AnimalShelter":{"extends":"LocalBusiness","properties":[]},"AutomotiveBusiness":{"extends":"LocalBusiness","properties":[]},"AutoBodyShop":{"extends":"AutomotiveBusiness","properties":[]},"AutoDealer":{"extends":"AutomotiveBusiness","properties":[]},"AutoPartsStore":{"extends":"Store","properties":[]},"AutoRental":{"extends":"AutomotiveBusiness","properties":[]},"AutoRepair":{"extends":"AutomotiveBusiness","properties":[]},"AutoWash":{"extends":"AutomotiveBusiness","properties":[]},"GasStation":{"extends":"AutomotiveBusiness","properties":[]},"MotorcycleDealer":{"extends":"AutomotiveBusiness","properties":[]},"MotorcycleRepair":{"extends":"AutomotiveBusiness","properties":[]},"ChildCare":{"extends":"LocalBusiness","properties":[]},"DryCleaningOrLaundry":{"extends":"LocalBusiness","properties":[]},"EmergencyService":{"extends":"LocalBusiness","properties":[]},"FireStation":{"extends":"CivicStructure","properties":[]},"Hospital":{"extends":"MedicalOrganization","properties":{"availableService":{"expectedTypes":["MedicalTest","MedicalTherapy","MedicalProcedure"]},"medicalSpecialty":{"expectedTypes":["MedicalSpecialty"]}}},"PoliceStation":{"extends":"CivicStructure","properties":[]},"EmploymentAgency":{"extends":"LocalBusiness","properties":[]},"EntertainmentBusiness":{"extends":"LocalBusiness","properties":[]},"AdultEntertainment":{"extends":"EntertainmentBusiness","properties":[]},"AmusementPark":{"extends":"EntertainmentBusiness","properties":[]},"ArtGallery":{"extends":"EntertainmentBusiness","properties":[]},"Casino":{"extends":"EntertainmentBusiness","properties":[]},"ComedyClub":{"extends":"EntertainmentBusiness","properties":[]},"MovieTheater":{"extends":"EntertainmentBusiness","properties":[]},"NightClub":{"extends":"EntertainmentBusiness","properties":[]},"FinancialService":{"extends":"LocalBusiness","properties":[]},"AccountingService":{"extends":"FinancialService","properties":[]},"AutomatedTeller":{"extends":"FinancialService","properties":[]},"BankOrCreditUnion":{"extends":"FinancialService","properties":[]},"InsuranceAgency":{"extends":"FinancialService","properties":[]},"FoodEstablishment":{"extends":"LocalBusiness","properties":{"acceptsReservations":{"expectedTypes":["Text","Boolean","URL"]},"menu":{"expectedTypes":["Text","URL"]},"servesCuisine":{"expectedTypes":["Text"]}}},"Bakery":{"extends":"FoodEstablishment","properties":[]},"BarOrPub":{"extends":"FoodEstablishment","properties":[]},"Brewery":{"extends":"FoodEstablishment","properties":[]},"CafeOrCoffeeShop":{"extends":"FoodEstablishment","properties":[]},"FastFoodRestaurant":{"extends":"FoodEstablishment","properties":[]},"IceCreamShop":{"extends":"FoodEstablishment","properties":[]},"Restaurant":{"extends":"FoodEstablishment","properties":[]},"Winery":{"extends":"FoodEstablishment","properties":[]},"GovernmentOffice":{"extends":"LocalBusiness","properties":[]},"PostOffice":{"extends":"GovernmentOffice","properties":[]},"HealthAndBeautyBusiness":{"extends":"LocalBusiness","properties":[]},"BeautySalon":{"extends":"HealthAndBeautyBusiness","properties":[]},"DaySpa":{"extends":"HealthAndBeautyBusiness","properties":[]},"HairSalon":{"extends":"HealthAndBeautyBusiness","properties":[]},"HealthClub":{"extends":"HealthAndBeautyBusiness","properties":[]},"NailSalon":{"extends":"HealthAndBeautyBusiness","properties":[]},"TattooParlor":{"extends":"HealthAndBeautyBusiness","properties":[]},"HomeAndConstructionBusiness":{"extends":"LocalBusiness","properties":[]},"Electrician":{"extends":"HomeAndConstructionBusiness","properties":[]},"GeneralContractor":{"extends":"HomeAndConstructionBusiness","properties":[]},"HVACBusiness":{"extends":"HomeAndConstructionBusiness","properties":[]},"HousePainter":{"extends":"HomeAndConstructionBusiness","properties":[]},"Locksmith":{"extends":"HomeAndConstructionBusiness","properties":[]},"MovingCompany":{"extends":"HomeAndConstructionBusiness","properties":[]},"Plumber":{"extends":"HomeAndConstructionBusiness","properties":[]},"RoofingContractor":{"extends":"HomeAndConstructionBusiness","properties":[]},"InternetCafe":{"extends":"LocalBusiness","properties":[]},"Library":{"extends":"LocalBusiness","properties":[]},"LodgingBusiness":{"extends":"LocalBusiness","properties":[]},"BedAndBreakfast":{"extends":"LodgingBusiness","properties":[]},"Hostel":{"extends":"LodgingBusiness","properties":[]},"Hotel":{"extends":"LodgingBusiness","properties":[]},"Motel":{"extends":"LodgingBusiness","properties":[]},"MedicalOrganization":{"extends":"LocalBusiness","properties":[]},"Dentist":{"extends":"MedicalOrganization","properties":[]},"DiagnosticLab":{"extends":"MedicalOrganization","properties":{"availableTest":{"expectedTypes":["MedicalTest"]}}},"MedicalClinic":{"extends":"MedicalOrganization","properties":{"availableService":{"expectedTypes":["MedicalTherapy","MedicalProcedure","MedicalTest"]},"medicalSpecialty":{"expectedTypes":["MedicalSpecialty"]}}},"Optician":{"extends":"MedicalOrganization","properties":[]},"Pharmacy":{"extends":"MedicalOrganization","properties":[]},"Physician":{"extends":"MedicalOrganization","properties":{"availableService":{"expectedTypes":["MedicalTherapy","MedicalProcedure","MedicalTest"]},"hospitalAffiliation":{"expectedTypes":["Hospital"]},"medicalSpecialty":{"expectedTypes":["MedicalSpecialty"]}}},"VeterinaryCare":{"extends":"MedicalOrganization","properties":[]},"ProfessionalService":{"extends":"LocalBusiness","properties":[]},"Attorney":{"extends":"ProfessionalService","properties":[]},"Notary":{"extends":"ProfessionalService","properties":[]},"RadioStation":{"extends":"LocalBusiness","properties":[]},"RealEstateAgent":{"extends":"LocalBusiness","properties":[]},"RecyclingCenter":{"extends":"LocalBusiness","properties":[]},"SelfStorage":{"extends":"LocalBusiness","properties":[]},"ShoppingCenter":{"extends":"LocalBusiness","properties":[]},"SportsActivityLocation":{"extends":"LocalBusiness","properties":[]},"BowlingAlley":{"extends":"SportsActivityLocation","properties":[]},"ExerciseGym":{"extends":"SportsActivityLocation","properties":[]},"GolfCourse":{"extends":"SportsActivityLocation","properties":[]},"PublicSwimmingPool":{"extends":"SportsActivityLocation","properties":[]},"SkiResort":{"extends":"SportsActivityLocation","properties":[]},"SportsClub":{"extends":"SportsActivityLocation","properties":[]},"StadiumOrArena":{"extends":"CivicStructure","properties":[]},"TennisComplex":{"extends":"SportsActivityLocation","properties":[]},"Store":{"extends":"LocalBusiness","properties":[]},"BikeStore":{"extends":"Store","properties":[]},"BookStore":{"extends":"Store","properties":[]},"ClothingStore":{"extends":"Store","properties":[]},"ComputerStore":{"extends":"Store","properties":[]},"ConvenienceStore":{"extends":"Store","properties":[]},"DepartmentStore":{"extends":"Store","properties":[]},"ElectronicsStore":{"extends":"Store","properties":[]},"Florist":{"extends":"Store","properties":[]},"FurnitureStore":{"extends":"Store","properties":[]},"GardenStore":{"extends":"Store","properties":[]},"GroceryStore":{"extends":"Store","properties":[]},"HardwareStore":{"extends":"Store","properties":[]},"HobbyShop":{"extends":"Store","properties":[]},"HomeGoodsStore":{"extends":"Store","properties":[]},"JewelryStore":{"extends":"Store","properties":[]},"LiquorStore":{"extends":"Store","properties":[]},"MensClothingStore":{"extends":"Store","properties":[]},"MobilePhoneStore":{"extends":"Store","properties":[]},"MovieRentalStore":{"extends":"Store","properties":[]},"MusicStore":{"extends":"Store","properties":[]},"OfficeEquipmentStore":{"extends":"Store","properties":[]},"OutletStore":{"extends":"Store","properties":[]},"PawnShop":{"extends":"Store","properties":[]},"PetStore":{"extends":"Store","properties":[]},"ShoeStore":{"extends":"Store","properties":[]},"SportingGoodsStore":{"extends":"Store","properties":[]},"TireShop":{"extends":"Store","properties":[]},"ToyStore":{"extends":"Store","properties":[]},"WholesaleStore":{"extends":"Store","properties":[]},"TelevisionStation":{"extends":"LocalBusiness","properties":[]},"TouristInformationCenter":{"extends":"LocalBusiness","properties":[]},"TravelAgency":{"extends":"LocalBusiness","properties":[]},"NGO":{"extends":"Organization","properties":[]},"PerformingGroup":{"extends":"Organization","properties":[]},"DanceGroup":{"extends":"PerformingGroup","properties":[]},"MusicGroup":{"extends":"PerformingGroup","properties":{"album":{"expectedTypes":["MusicAlbum"]},"genre":{"expectedTypes":["Text"]},"track":{"expectedTypes":["ItemList","MusicRecording"]}}},"TheaterGroup":{"extends":"PerformingGroup","properties":[]},"SportsOrganization":{"extends":"Organization","properties":{"sport":{"expectedTypes":["Text","URL"]}}},"SportsTeam":{"extends":"SportsOrganization","properties":{"athlete":{"expectedTypes":["Person"]},"coach":{"expectedTypes":["Person"]}}},"Person":{"extends":"Thing","properties":{"additionalName":{"expectedTypes":["Text"]},"address":{"expectedTypes":["PostalAddress"]},"affiliation":{"expectedTypes":["Organization"]},"alumniOf":{"expectedTypes":["EducationalOrganization"]},"award":{"expectedTypes":["Text"]},"birthDate":{"expectedTypes":["Date"]},"birthPlace":{"expectedTypes":["Place"]},"brand":{"expectedTypes":["Brand","Organization"]},"children":{"expectedTypes":["Person"]},"colleague":{"expectedTypes":["Person"]},"contactPoint":{"expectedTypes":["ContactPoint"]},"deathDate":{"expectedTypes":["Date"]},"deathPlace":{"expectedTypes":["Place"]},"duns":{"expectedTypes":["Text"]},"email":{"expectedTypes":["Text"]},"familyName":{"expectedTypes":["Text"]},"faxNumber":{"expectedTypes":["Text"]},"follows":{"expectedTypes":["Person"]},"gender":{"expectedTypes":["Text"]},"givenName":{"expectedTypes":["Text"]},"globalLocationNumber":{"expectedTypes":["Text"]},"hasPOS":{"expectedTypes":["Place"]},"height":{"expectedTypes":["Distance","QuantitativeValue"]},"homeLocation":{"expectedTypes":["ContactPoint","Place"]},"honorificPrefix":{"expectedTypes":["Text"]},"honorificSuffix":{"expectedTypes":["Text"]},"interactionCount":{"expectedTypes":["Text"]},"isicV4":{"expectedTypes":["Text"]},"jobTitle":{"expectedTypes":["Text"]},"knows":{"expectedTypes":["Person"]},"makesOffer":{"expectedTypes":["Offer"]},"memberOf":{"expectedTypes":["ProgramMembership","Organization"]},"naics":{"expectedTypes":["Text"]},"nationality":{"expectedTypes":["Country"]},"netWorth":{"expectedTypes":["PriceSpecification"]},"owns":{"expectedTypes":["Product","OwnershipInfo"]},"parent":{"expectedTypes":["Person"]},"performerIn":{"expectedTypes":["Event"]},"relatedTo":{"expectedTypes":["Person"]},"seeks":{"expectedTypes":["Demand"]},"sibling":{"expectedTypes":["Person"]},"spouse":{"expectedTypes":["Person"]},"taxID":{"expectedTypes":["Text"]},"telephone":{"expectedTypes":["Text"]},"vatID":{"expectedTypes":["Text"]},"weight":{"expectedTypes":["QuantitativeValue"]},"workLocation":{"expectedTypes":["ContactPoint","Place"]},"worksFor":{"expectedTypes":["Organization"]}}},"Place":{"extends":"Thing","properties":{"address":{"expectedTypes":["PostalAddress"]},"aggregateRating":{"expectedTypes":["AggregateRating"]},"containedIn":{"expectedTypes":["Place"]},"event":{"expectedTypes":["Event"]},"faxNumber":{"expectedTypes":["Text"]},"geo":{"expectedTypes":["GeoCoordinates","GeoShape"]},"globalLocationNumber":{"expectedTypes":["Text"]},"hasMap":{"expectedTypes":["Map","URL"]},"interactionCount":{"expectedTypes":["Text"]},"isicV4":{"expectedTypes":["Text"]},"logo":{"expectedTypes":["ImageObject","URL"]},"openingHoursSpecification":{"expectedTypes":["OpeningHoursSpecification"]},"photo":{"expectedTypes":["ImageObject","Photograph"]},"review":{"expectedTypes":["Review"]},"telephone":{"expectedTypes":["Text"]}}},"AdministrativeArea":{"extends":"Place","properties":[]},"City":{"extends":"AdministrativeArea","properties":[]},"Country":{"extends":"AdministrativeArea","properties":[]},"State":{"extends":"AdministrativeArea","properties":[]},"CivicStructure":{"extends":"Place","properties":{"openingHours":{"expectedTypes":["Duration"]}}},"Airport":{"extends":"CivicStructure","properties":{"iataCode":{"expectedTypes":["Text"]},"icaoCode":{"expectedTypes":["Text"]}}},"Aquarium":{"extends":"CivicStructure","properties":[]},"Beach":{"extends":"CivicStructure","properties":[]},"BusStation":{"extends":"CivicStructure","properties":[]},"BusStop":{"extends":"CivicStructure","properties":[]},"Campground":{"extends":"CivicStructure","properties":[]},"Cemetery":{"extends":"CivicStructure","properties":[]},"Crematorium":{"extends":"CivicStructure","properties":[]},"EventVenue":{"extends":"CivicStructure","properties":[]},"GovernmentBuilding":{"extends":"CivicStructure","properties":[]},"CityHall":{"extends":"GovernmentBuilding","properties":[]},"Courthouse":{"extends":"GovernmentBuilding","properties":[]},"DefenceEstablishment":{"extends":"GovernmentBuilding","properties":[]},"Embassy":{"extends":"GovernmentBuilding","properties":[]},"LegislativeBuilding":{"extends":"GovernmentBuilding","properties":[]},"Museum":{"extends":"CivicStructure","properties":[]},"MusicVenue":{"extends":"CivicStructure","properties":[]},"Park":{"extends":"CivicStructure","properties":[]},"ParkingFacility":{"extends":"CivicStructure","properties":[]},"PerformingArtsTheater":{"extends":"CivicStructure","properties":[]},"PlaceOfWorship":{"extends":"CivicStructure","properties":[]},"BuddhistTemple":{"extends":"PlaceOfWorship","properties":[]},"CatholicChurch":{"extends":"PlaceOfWorship","properties":[]},"Church":{"extends":"PlaceOfWorship","properties":[]},"HinduTemple":{"extends":"PlaceOfWorship","properties":[]},"Mosque":{"extends":"PlaceOfWorship","properties":[]},"Synagogue":{"extends":"PlaceOfWorship","properties":[]},"Playground":{"extends":"CivicStructure","properties":[]},"RVPark":{"extends":"CivicStructure","properties":[]},"SubwayStation":{"extends":"CivicStructure","properties":[]},"TaxiStand":{"extends":"CivicStructure","properties":[]},"TrainStation":{"extends":"CivicStructure","properties":[]},"Zoo":{"extends":"CivicStructure","properties":[]},"Landform":{"extends":"Place","properties":[]},"BodyOfWater":{"extends":"Landform","properties":[]},"Canal":{"extends":"BodyOfWater","properties":[]},"LakeBodyOfWater":{"extends":"BodyOfWater","properties":[]},"OceanBodyOfWater":{"extends":"BodyOfWater","properties":[]},"Pond":{"extends":"BodyOfWater","properties":[]},"Reservoir":{"extends":"BodyOfWater","properties":[]},"RiverBodyOfWater":{"extends":"BodyOfWater","properties":[]},"SeaBodyOfWater":{"extends":"BodyOfWater","properties":[]},"Waterfall":{"extends":"BodyOfWater","properties":[]},"Continent":{"extends":"Landform","properties":[]},"Mountain":{"extends":"Landform","properties":[]},"Volcano":{"extends":"Landform","properties":[]},"LandmarksOrHistoricalBuildings":{"extends":"Place","properties":[]},"Residence":{"extends":"Place","properties":[]},"ApartmentComplex":{"extends":"Residence","properties":[]},"GatedResidenceCommunity":{"extends":"Residence","properties":[]},"SingleFamilyResidence":{"extends":"Residence","properties":[]},"TouristAttraction":{"extends":"Place","properties":[]},"Product":{"extends":"Thing","properties":{"aggregateRating":{"expectedTypes":["AggregateRating"]},"audience":{"expectedTypes":["Audience"]},"brand":{"expectedTypes":["Brand","Organization"]},"color":{"expectedTypes":["Text"]},"depth":{"expectedTypes":["Distance","QuantitativeValue"]},"gtin13":{"expectedTypes":["Text"]},"gtin14":{"expectedTypes":["Text"]},"gtin8":{"expectedTypes":["Text"]},"height":{"expectedTypes":["Distance","QuantitativeValue"]},"isAccessoryOrSparePartFor":{"expectedTypes":["Product"]},"isConsumableFor":{"expectedTypes":["Product"]},"isRelatedTo":{"expectedTypes":["Product"]},"isSimilarTo":{"expectedTypes":["Product"]},"itemCondition":{"expectedTypes":["OfferItemCondition"]},"logo":{"expectedTypes":["ImageObject","URL"]},"manufacturer":{"expectedTypes":["Organization"]},"model":{"expectedTypes":["Text","ProductModel"]},"mpn":{"expectedTypes":["Text"]},"offers":{"expectedTypes":["Offer"]},"productID":{"expectedTypes":["Text"]},"releaseDate":{"expectedTypes":["Date"]},"review":{"expectedTypes":["Review"]},"sku":{"expectedTypes":["Text"]},"weight":{"expectedTypes":["QuantitativeValue"]},"width":{"expectedTypes":["Distance","QuantitativeValue"]}}},"IndividualProduct":{"extends":"Product","properties":{"serialNumber":{"expectedTypes":["Text"]}}},"ProductModel":{"extends":"Product","properties":{"isVariantOf":{"expectedTypes":["ProductModel"]},"predecessorOf":{"expectedTypes":["ProductModel"]},"successorOf":{"expectedTypes":["ProductModel"]}}},"SomeProducts":{"extends":"Product","properties":{"inventoryLevel":{"expectedTypes":["QuantitativeValue"]}}},"Vehicle":{"extends":"Product","properties":[]},"Car":{"extends":"Vehicle","properties":[]}} \ No newline at end of file diff --git a/libraries/joomla/session/handler/native.php b/libraries/joomla/session/handler/native.php index 02fe80b28203f..0279705833aa5 100644 --- a/libraries/joomla/session/handler/native.php +++ b/libraries/joomla/session/handler/native.php @@ -47,19 +47,8 @@ public function start() return true; } - /** - * Write and Close handlers are called after destructing objects since PHP 5.0.5. - * Thus destructors can use sessions but session handler can't use objects. - * So we are moving session closure before destructing objects. - */ - if (version_compare(PHP_VERSION, '5.4', 'ge')) - { - session_register_shutdown(); - } - else - { - register_shutdown_function('session_write_close'); - } + // Register our function as shutdown method, so we can manipulate it + register_shutdown_function(array($this, 'save')); // Disable the cache limiter session_cache_limiter('none'); @@ -92,6 +81,9 @@ public function start() throw new RuntimeException('Failed to start the session'); } + // Mark ourselves as started + $this->started = true; + return true; } @@ -229,6 +221,12 @@ public function save() throw new RuntimeException('The session is not started.'); } + $session = JFactory::getSession(); + $data = $session->getData(); + + // Before storing it, let's serialize and encode the JRegistry object + $_SESSION['joomla'] = base64_encode(serialize($data)); + session_write_close(); $this->closed = true; diff --git a/libraries/joomla/session/session.php b/libraries/joomla/session/session.php index 7666dbb384555..d17006d393c3e 100644 --- a/libraries/joomla/session/session.php +++ b/libraries/joomla/session/session.php @@ -100,6 +100,13 @@ class JSession implements IteratorAggregate */ protected $_handler = null; + /** + * Internal data store for the session data + * + * @var \Joomla\Registry\Registry + */ + protected $data; + /** * Constructor * @@ -114,6 +121,9 @@ public function __construct($store = 'none', array $options = array(), JSessionH // Set the session handler $this->_handler = $handlerInterface instanceof JSessionHandlerInterface ? $handlerInterface : new JSessionHandlerJoomla($options); + // Initialize the data variable, let's avoid fatal error if the session is not corretly started (ie in CLI). + $this->data = new \Joomla\Registry\Registry; + // Clear any existing sessions if ($this->_handler->getId()) { @@ -276,13 +286,13 @@ public static function getFormToken($forceNew = false) /** * Retrieve an external iterator. * - * @return ArrayIterator Return an ArrayIterator of $_SESSION. + * @return ArrayIterator * * @since 12.2 */ public function getIterator() { - return new ArrayIterator($_SESSION); + return new ArrayIterator($this->getData()); } /** @@ -360,6 +370,16 @@ public function getId() return $this->_handler->getId(); } + /** + * Returns a clone of the internal data pointer + * + * @return \Joomla\Registry\Registry + */ + public function getData() + { + return clone $this->data; + } + /** * Get the session handlers * @@ -480,12 +500,7 @@ public function get($name, $default = null, $namespace = 'default') return $error; } - if (isset($_SESSION[$namespace][$name])) - { - return $_SESSION[$namespace][$name]; - } - - return $default; + return $this->data->get($namespace . '.' . $name, $default); } /** @@ -510,18 +525,7 @@ public function set($name, $value = null, $namespace = 'default') return null; } - $old = isset($_SESSION[$namespace][$name]) ? $_SESSION[$namespace][$name] : null; - - if (null === $value) - { - unset($_SESSION[$namespace][$name]); - } - else - { - $_SESSION[$namespace][$name] = $value; - } - - return $old; + return $this->data->set($namespace . '.' . $name, $value); } /** @@ -545,7 +549,7 @@ public function has($name, $namespace = 'default') return null; } - return isset($_SESSION[$namespace][$name]); + return !is_null($this->data->get($namespace . '.' . $name, null)); } /** @@ -569,15 +573,7 @@ public function clear($name, $namespace = 'default') return null; } - $value = null; - - if (isset($_SESSION[$namespace][$name])) - { - $value = $_SESSION[$namespace][$name]; - unset($_SESSION[$namespace][$name]); - } - - return $value; + return $this->data->set($namespace . '.' . $name, null); } /** @@ -603,7 +599,11 @@ public function start() $this->_setTimers(); // Perform security checks - $this->_validate(); + if (!$this->_validate()) + { + // Destroy the session if it's not valid + $this->destroy(); + } if ($this->_dispatcher instanceof JEventDispatcher) { @@ -624,14 +624,53 @@ protected function _start() { $this->_handler->start(); + // Ok let's unserialize the whole thing + // Try loading data from the session + if (isset($_SESSION['joomla']) && !empty($_SESSION['joomla'])) + { + $data = $_SESSION['joomla']; + + $data = base64_decode($data); + + $this->data = unserialize($data); + } + + // Temporary, PARTIAL, data migration of existing session data to avoid logout on update from J < 3.4.7 + if (isset($_SESSION['__default']) && !empty($_SESSION['__default'])) + { + $migratableKeys = array("user", "session.token", "session.counter", "session.timer.start", "session.timer.last", "session.timer.now"); + + foreach ($migratableKeys as $migratableKey) + { + if (!empty($_SESSION['__default'][$migratableKey])) + { + // Don't overwrite existing session data + if (!is_null($this->data->get('__default.' . $migratableKey, null))) + { + continue; + } + + $this->data->set('__default.' . $migratableKey, $_SESSION['__default'][$migratableKey]); + unset($_SESSION['__default'][$migratableKey]); + } + } + + /** + * Finally, empty the __default key since we no longer need it. Don't unset it completely, we need this + * for the administrator/components/com_admin/script.php to detect upgraded sessions and perform a full + * session cleanup. + */ + $_SESSION['__default'] = array(); + } + return true; } /** * Frees all session variables and destroys all data registered to a session * - * This method resets the $_SESSION variable and destroys all of the data associated - * with the current session in its storage (file or DB). It forces new session to be + * This method resets the data pointer and destroys all of the data associated + * with the current session in its storage. It forces a new session to be * started after this method is called. It does not unset the session cookie. * * @return boolean True on success @@ -650,6 +689,9 @@ public function destroy() $this->_handler->clear(); + // Create new data storage + $this->data = new \Joomla\Registry\Registry; + $this->_state = 'destroyed'; return true; @@ -683,7 +725,12 @@ public function restart() $this->_start(); $this->_state = 'active'; - $this->_validate(); + if (!$this->_validate()) + { + // Destroy the session if it's not valid + $this->destroy(); + } + $this->_setCounter(); return true; @@ -905,14 +952,9 @@ protected function _validate($restart = false) } } - // Record proxy forwarded for in the session in case we need it later - if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) - { - $this->set('session.client.forwarded', $_SERVER['HTTP_X_FORWARDED_FOR']); - } - // Check for client address - if (in_array('fix_adress', $this->_security) && isset($_SERVER['REMOTE_ADDR'])) + if (in_array('fix_adress', $this->_security) && isset($_SERVER['REMOTE_ADDR']) + && filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP) !== false) { $ip = $this->get('session.client.address'); @@ -928,20 +970,10 @@ protected function _validate($restart = false) } } - // Check for clients browser - if (in_array('fix_browser', $this->_security) && isset($_SERVER['HTTP_USER_AGENT'])) + // Record proxy forwarded for in the session in case we need it later + if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && filter_var($_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP) !== false) { - $browser = $this->get('session.client.browser'); - - if ($browser === null) - { - $this->set('session.client.browser', $_SERVER['HTTP_USER_AGENT']); - } - elseif ($_SERVER['HTTP_USER_AGENT'] !== $browser) - { - // @todo remove code: $this->_state = 'error'; - // @todo remove code: return false; - } + $this->set('session.client.forwarded', $_SERVER['HTTP_X_FORWARDED_FOR']); } return true; diff --git a/libraries/joomla/uri/uri.php b/libraries/joomla/uri/uri.php index af9f4b09054ea..bfb62d76d7a4e 100644 --- a/libraries/joomla/uri/uri.php +++ b/libraries/joomla/uri/uri.php @@ -268,12 +268,16 @@ public static function isInternal($url) $base = $uri->toString(array('scheme', 'host', 'port', 'path')); $host = $uri->toString(array('scheme', 'host', 'port')); - if (stripos($base, static::base()) !== 0 && !empty($host)) + // @see JURITest + if (empty($host) && strpos($uri->path, 'index.php') === 0 + || !empty($host) && preg_match('#' . preg_quote(static::base(), '#') . '#', $base) + || !empty($host) && $host === static::getInstance(static::base())->host && strpos($uri->path, 'index.php') !== false + || !empty($host) && $base === $host && preg_match('#' . preg_quote($base, '#') . '#', static::base())) { - return false; + return true; } - return true; + return false; } /** diff --git a/libraries/legacy/model/admin.php b/libraries/legacy/model/admin.php index 8070264385467..daed3b861ea2c 100644 --- a/libraries/legacy/model/admin.php +++ b/libraries/legacy/model/admin.php @@ -1205,10 +1205,13 @@ public function save($data) { $associations = $data['associations']; + // Unset any invalid associations + $associations = Joomla\Utilities\ArrayHelper::toInteger($associations); + // Unset any invalid associations foreach ($associations as $tag => $id) { - if (!(int) $id) + if (!$id) { unset($associations[$tag]); } @@ -1244,7 +1247,7 @@ public function save($data) foreach ($associations as $id) { - $query->values($id . ',' . $db->quote($this->associationsContext) . ',' . $db->quote($key)); + $query->values(((int) $id) . ',' . $db->quote($this->associationsContext) . ',' . $db->quote($key)); } $db->setQuery($query); diff --git a/libraries/legacy/view/category.php b/libraries/legacy/view/category.php index 7a80a2a8974af..3ed4a0d7e9b46 100644 --- a/libraries/legacy/view/category.php +++ b/libraries/legacy/view/category.php @@ -156,7 +156,7 @@ public function commonCategoryDisplay() $dispatcher = JEventDispatcher::getInstance(); JPluginHelper::importPlugin('content'); - $dispatcher->trigger('onContentPrepare', array ('com_contact.category', &$itemElement, &$itemElement->params, 0)); + $dispatcher->trigger('onContentPrepare', array ($this->extension . '.category', &$itemElement, &$itemElement->params, 0)); $results = $dispatcher->trigger('onContentAfterTitle', array($this->extension . '.category', &$itemElement, &$itemElement->core_params, 0)); $itemElement->event->afterDisplayTitle = trim(implode("\n", $results)); diff --git a/media/jui/css/bootstrap-rtl.css b/media/jui/css/bootstrap-rtl.css index 53eae1552d74b..640911e0d16a0 100644 --- a/media/jui/css/bootstrap-rtl.css +++ b/media/jui/css/bootstrap-rtl.css @@ -437,7 +437,14 @@ body { } .dl-horizontal dt { float: right; + text-align: left; + clear: right; +} +.dl-horizontal dd { + margin-left: 0; + margin-right: 180px; } +.dl-horizontal dt .profile> ul { margin: 9px 25px 0 0; } diff --git a/media/jui/less/bootstrap-rtl.less b/media/jui/less/bootstrap-rtl.less index b3cd0cc0444e2..2d87d48bfa30d 100644 --- a/media/jui/less/bootstrap-rtl.less +++ b/media/jui/less/bootstrap-rtl.less @@ -447,7 +447,14 @@ direction:rtl; } .dl-horizontal dt { float: right; + text-align: left; + clear: right; +} +.dl-horizontal dd { + margin-left: 0; + margin-right: 180px; } +.dl-horizontal dt .profile> ul { margin: 9px 25px 0 0; } diff --git a/media/mod_languages/images/dz_bt.gif b/media/mod_languages/images/dz_bt.gif new file mode 100644 index 0000000000000..515a3ac00774b Binary files /dev/null and b/media/mod_languages/images/dz_bt.gif differ diff --git a/media/system/js/helpsite.js b/media/system/js/helpsite.js index ae10af0e332e3..79428820fffc9 100644 --- a/media/system/js/helpsite.js +++ b/media/system/js/helpsite.js @@ -11,14 +11,18 @@ jQuery(document).ready(function() { jQuery('#helpsite-refresh').click(function() { // Uses global variable helpsite_base for bast uri - var select_id = jQuery(this).attr('rel'); - jQuery.getJSON(helpsite_base + 'index.php?option=com_users&task=profile.gethelpsites&format=json', function(data){ + var select_id = jQuery(this).attr('rel'); + var showDefault = jQuery(this).attr('showDefault'); + + jQuery.getJSON('index.php?option=com_users&task=profile.gethelpsites&format=json', function(data){ // The response contains the options to use in help site select field var items = []; // Build options jQuery.each(data, function(key, val) { - items.push(''); + if (val.value !== '' || showDefault === 'true') { + items.push(''); + } }); // Replace current select options. The trigger is needed for Chosen select box enhancer diff --git a/plugins/system/debug/debug.php b/plugins/system/debug/debug.php index 60d4d81402160..792ba40ba4dd0 100644 --- a/plugins/system/debug/debug.php +++ b/plugins/system/debug/debug.php @@ -393,7 +393,7 @@ protected function displaySession($key = '', $session = null, $id = 0) { if (!$session) { - $session = $_SESSION; + $session = JFactory::getSession()->getData(); } $html = array(); @@ -582,13 +582,13 @@ protected function displayProfileInformation() $bars[] = (object) array( 'width' => round($mark->time / ($totalTime / 100), 4), 'class' => $barClass, - 'tip' => $mark->tip + 'tip' => $mark->tip . ' ' . round($mark->time, 1) . ' ms' ); $barsMem[] = (object) array( 'width' => round($mark->memory / ($totalMem / 100), 4), 'class' => $barClassMem, - 'tip' => $mark->tip + 'tip' => $mark->tip . ' ' . round($mark->memory, 3) . ' MB', ); $htmlMarks[] = '
' . str_replace('label-time', $labelClass, str_replace('label-memory', $labelClassMem, $mark->html)) . '
'; @@ -922,7 +922,7 @@ protected function displayQueries() // Timing // Formats the output for the query time with EXPLAIN query results as tooltip: - $htmlTiming = '
'; + $htmlTiming = '
'; $htmlTiming .= JText::sprintf( 'PLG_DEBUG_QUERY_TIME', sprintf( diff --git a/plugins/system/sef/sef.php b/plugins/system/sef/sef.php index dc53654fc4ae7..ddfbff3204ef7 100644 --- a/plugins/system/sef/sef.php +++ b/plugins/system/sef/sef.php @@ -38,14 +38,14 @@ public function onAfterRoute() $uri = JUri::getInstance(); $domain = $this->params->get('domain'); - if ($domain === null || $domain === '') + if ($domain === false || $domain === '') { $domain = $uri->toString(array('scheme', 'host', 'port')); } $link = $domain . JRoute::_('index.php?' . http_build_query($router->getVars()), false); - if ($uri->toString() !== $link) + if (rawurldecode($uri->toString()) !== $link) { $doc->addHeadLink(htmlspecialchars($link), 'canonical'); } diff --git a/templates/beez3/html/com_contact/contact/default.php b/templates/beez3/html/com_contact/contact/default.php index 1e42b2af17732..deed9166e57c7 100644 --- a/templates/beez3/html/com_contact/contact/default.php +++ b/templates/beez3/html/com_contact/contact/default.php @@ -62,6 +62,7 @@ params->get('presentation_style') == 'tabs') : ?> '1')); ?> + params->get('presentation_style') == 'plain'):?> ' . JText::_('COM_CONTACT_DETAILS') . ''; ?> diff --git a/templates/protostar/language/en-GB/en-GB.tpl_protostar.ini b/templates/protostar/language/en-GB/en-GB.tpl_protostar.ini index 842766f06493e..8e9cc99cbffe5 100644 --- a/templates/protostar/language/en-GB/en-GB.tpl_protostar.ini +++ b/templates/protostar/language/en-GB/en-GB.tpl_protostar.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 -TPL_PROTOSTAR_XML_DESCRIPTION="Continuing the space theme (Solarflare from 1.0 and Milkyway from 1.5), Protostar is the Joomla 3 site template based on Bootstrap from Twitter and the launch of the Joomla User Interface library (JUI)." +TPL_PROTOSTAR_XML_DESCRIPTION="Continuing the space theme (Solarflare from 1.0 and Milkyway from 1.5), Protostar is the Joomla 3 site template based on Bootstrap and the launch of the Joomla User Interface library (JUI)." TPL_PROTOSTAR_BACKGROUND_COLOR_DESC="Choose a background colour for static layouts. If left blank the Default (#f4f6f7) is used." TPL_PROTOSTAR_BACKGROUND_COLOR_LABEL="Background Colour" diff --git a/templates/protostar/language/en-GB/en-GB.tpl_protostar.sys.ini b/templates/protostar/language/en-GB/en-GB.tpl_protostar.sys.ini index ebcf24e898dc3..043cc43e29ea0 100644 --- a/templates/protostar/language/en-GB/en-GB.tpl_protostar.sys.ini +++ b/templates/protostar/language/en-GB/en-GB.tpl_protostar.sys.ini @@ -22,4 +22,4 @@ TPL_PROTOSTAR_POSITION_POSITION-7="Right" TPL_PROTOSTAR_POSITION_POSITION-8="Left" TPL_PROTOSTAR_POSITION_POSITION-9="Unused" TPL_PROTOSTAR_POSITION_FOOTER="Footer" -TPL_PROTOSTAR_XML_DESCRIPTION="Continuing the space theme (Solarflare from 1.0 and Milkyway from 1.5), Protostar is the Joomla 3 site template based on Bootstrap from Twitter and the launch of the Joomla User Interface library (JUI)." +TPL_PROTOSTAR_XML_DESCRIPTION="Continuing the space theme (Solarflare from 1.0 and Milkyway from 1.5), Protostar is the Joomla 3 site template based on Bootstrap and the launch of the Joomla User Interface library (JUI)." diff --git a/tests/unit/suites/libraries/joomla/microdata/JMicrodataTest.php b/tests/unit/suites/libraries/joomla/microdata/JMicrodataTest.php index 1f16453b8555a..4418b2481e569 100644 --- a/tests/unit/suites/libraries/joomla/microdata/JMicrodataTest.php +++ b/tests/unit/suites/libraries/joomla/microdata/JMicrodataTest.php @@ -48,14 +48,14 @@ public function setUp() * Test the default settings * * @return void - * + * * @since 3.2 */ public function testDefaults() { $this->handler = new JMicrodata; - // Test that the default Type is Thing + // Test that the default Type is 'Thing' $this->assertEquals($this->handler->getType(), $this->defaultType); $this->assertClassHasAttribute('types', 'JMicrodata'); @@ -72,10 +72,10 @@ public function testSetType() { $this->handler->setType('Article'); - // Test if the current Type is Article + // Test if the current Type is 'Article' $this->assertEquals($this->handler->getType(), 'Article'); - // Test if the Type fallbacks to Thing Type + // Test if the Type fallbacks to 'Thing' Type $this->handler->setType('TypeThatDoesNotExist'); $this->assertEquals($this->handler->getType(), $this->defaultType); } @@ -94,13 +94,13 @@ public function testFallback() $this->assertEquals($this->handler->getFallbackType(), 'Article'); $this->assertEquals($this->handler->getFallbackProperty(), 'articleBody'); - // Test if Fallback Property fallbacks isn't available in the Type - $this->handler->fallback('Article', 'anUnanvailableProperty'); + // Test if the Fallback Property fallbacks when it isn't available in the $Type + $this->handler->fallback('Article', 'anUnavailableProperty'); $this->assertEquals($this->handler->getFallbackType(), 'Article'); $this->assertNull($this->handler->getFallbackProperty()); - // Test if Fallback Type fallbacks to Thing Type - $this->handler->fallback('anUnanvailableType', 'anUnanvailableProperty'); + // Test if the Fallback Type fallbacks to the 'Thing' Type + $this->handler->fallback('anUnavailableType', 'anUnavailableProperty'); $this->assertEquals($this->handler->getFallbackType(), 'Thing'); $this->assertNull($this->handler->getFallbackProperty()); } @@ -122,7 +122,7 @@ public function testDisplay() $this->assertEquals($this->handler->display(), ''); - // Test if the params are reseted after display() + // Test if the params are reseted after the display() function $this->handler->setType('Article') ->content($content) ->property('name') @@ -132,116 +132,136 @@ public function testDisplay() $this->assertNull($this->handler->getFallbackProperty()); $this->assertNull($this->handler->getFallbackType()); $this->assertNull($this->handler->getProperty()); - $this->assertEmpty($this->handler->getContent()); + $this->assertNull($this->handler->getContent()); // Test for a simple display - $responce = $this->handler + $response = $this->handler ->property('url') ->display(); - $this->assertEquals($responce, "itemprop='url'"); + $this->assertEquals($response, "itemprop='url'"); - // Test for a simple display with content - $responce = $this->handler + // Test for a simple display with $content + $response = $this->handler ->property('url') ->content($content) ->display(); - $this->assertEquals($responce, ""); + $this->assertEquals($response, ""); - // Test for a simple display if the content is empty '' - $responce = $this->handler->enable(true) + // Test for a simple display if the $content is empty '' + $response = $this->handler->enable(true) ->content('') ->property('name') ->display(); - $this->assertEquals($responce, ""); + $this->assertEquals($response, ""); - // Test for a simple nested display - $responce = $this->handler + // Test for a simple 'nested' display + $response = $this->handler ->property('author') ->display(); $this->assertEquals( - $responce, + $response, "itemprop='author' itemscope itemtype='https://schema.org/Organization'" ); - // Test for a nested display with content - $responce = $this->handler + // Test for a 'nested' display with $content + $response = $this->handler ->property('author') ->content($content) ->display(); $this->assertEquals( - $responce, + $response, "" ); - // Test for a nested display with content and Fallback - $responce = $this->handler + // Test for a 'nested' display with $content and $Fallback + $response = $this->handler ->fallback('Person', 'name') ->property('author') ->content($content) ->display(); $this->assertEquals( - $responce, + $response, "" ); - // Test for a nested display with Fallback and without content - $responce = $this->handler + // Test for a 'nested' display with $Fallback and without $content + $response = $this->handler ->fallback('Person', 'name') ->property('author') ->display(); $this->assertEquals( - $responce, + $response, "itemprop='author' itemscope itemtype='https://schema.org/Person' itemprop='name'" ); - // Test for a meta display without content - $responce = $this->handler + // Test for a 'meta' display without $content + $response = $this->handler ->property('datePublished') ->display(); $this->assertEquals( - $responce, + $response, "itemprop='datePublished'" ); - // Test for a meta display with content + // Test for a 'meta' display with $content $content = '01 January 2011'; - $responce = $this->handler + $response = $this->handler ->property('datePublished') ->content($content) ->display(); $this->assertEquals( - $responce, + $response, "$content" ); - // Test if the JMicrodata is disabled - $responce = $this->handler->enable(false) + // Test for a 'meta' display with human $content and $machineContent + $machineContent = "2011-01-01T00:00:00+00:00"; + $response = $this->handler + ->property('datePublished') + ->content($content, $machineContent) + ->display(); + + $this->assertEquals( + $response, + "$content" + ); + + // Test when if fallbacks that the library returns an empty string as specified + $response = $this->handler + ->content('en-GB') + ->property('doesNotExist') + ->display('meta', true); + + $this->assertEquals($response, ''); + + // Test if the library is disabled + $response = $this->handler->enable(false) ->content($content) ->fallback('Article', 'about') ->property('datePublished') ->display(); - $this->assertEquals($responce, $content); + $this->assertEquals($response, $content); - // Test if JMicrodata is disabled and have a $content it must return an empty string - $responce = $this->handler->enable(false) + // Test if the library is disabled and if it have a $content it must return an empty string + $response = $this->handler->enable(false) ->content('en-GB') ->property('inLanguage') ->fallback('Language', 'name') ->display('meta', true); - $this->assertEquals($responce, ''); + $this->assertEquals($response, ''); - // Test if the params are reseted after display(), if the library is disabled + // Test if the params are reseted after the display() function, if the library is disabled $this->assertNull($this->handler->getFallbackProperty()); $this->assertNull($this->handler->getFallbackType()); $this->assertNull($this->handler->getProperty()); @@ -261,60 +281,60 @@ public function testDisplayFallbacks() $this->handler->enable(true)->setType('Article'); $content = 'anything'; - // Test without content if fallbacks, the Property isn't available in the current Type - $responce = $this->handler - ->property('anUnanvailableProperty') + // Test without $content if fallbacks, the $Property isn't available in the current Type + $response = $this->handler + ->property('anUnavailableProperty') ->fallback('Article', 'about') ->display(); $this->assertEquals( - $responce, + $response, "itemscope itemtype='https://schema.org/Article' itemprop='about'" ); - // Test wit content if fallbacks, the Property isn't available in the current Type - $responce = $this->handler + // Test with $content if fallbacks, the $Property isn't available in the current Type + $response = $this->handler ->content($content) - ->property('anUnanvailableProperty') + ->property('anUnavailableProperty') ->fallback('Article', 'about') ->display(); $this->assertEquals( - $responce, + $response, "$content" ); - // Test if fallbacks, the Property isn't available in the current and fallback Type - $responce = $this->handler - ->property('anUnanvailableProperty') - ->fallback('Article', 'anUnanvailableProperty') + // Test if fallbacks, the $Property isn't available in the current and fallback Type + $response = $this->handler + ->property('anUnavailableProperty') + ->fallback('Article', 'anUnavailableProperty') ->display(); $this->assertEquals( - $responce, + $response, "itemscope itemtype='https://schema.org/Article'" ); - // Test with content if fallbacks, the Property isn't available in the current and fallback Type - $responce = $this->handler + // Test with $content if fallbacks, the $Property isn't available in the current $Type + $response = $this->handler ->content($content) - ->property('anUnanvailableProperty') + ->property('anUnavailableProperty') ->fallback('Article', 'datePublished') ->display(); $this->assertEquals( - $responce, + $response, "" ); - // Test withtout content if fallbacks, the Property isn't available in the current and fallback Type - $responce = $this->handler - ->property('anUnanvailableProperty') + // Test without $content if fallbacks, the $Property isn't available in the current $Type + $response = $this->handler + ->property('anUnavailableProperty') ->fallback('Article', 'datePublished') ->display(); $this->assertEquals( - $responce, + $response, "itemscope itemtype='https://schema.org/Article' itemprop='datePublished'" ); } @@ -329,85 +349,84 @@ public function testDisplayFallbacks() public function testDisplayTypes() { // Setup - $type = 'Article'; - $content = 'microdata'; - $property = 'datePublished'; - + $type = 'Article'; + $content = 'anything'; + $property = 'datePublished'; $microdata = $this->handler; $microdata->enable(true)->setType($type); - // Display Type: Inline - $responce = $microdata->content($content) + // Test Display Type: 'inline' + $response = $microdata->content($content) ->property($property) ->display('inline'); $this->assertEquals( - $responce, + $response, "itemprop='$property'" ); - // Display Type: div - $responce = $microdata->content($content) + // Test Display Type: 'div' + $response = $microdata->content($content) ->property($property) ->display('div'); $this->assertEquals( - $responce, + $response, "
$content
" ); - // Display Type: div without $content - $responce = $microdata->property($property) + // Test Display Type: 'div' without $content + $response = $microdata->property($property) ->display('div'); $this->assertEquals( - $responce, + $response, "
" ); - // Display Type: span - $responce = $microdata->content($content) + // Test Display Type: 'span' + $response = $microdata->content($content) ->property($property) ->display('span'); $this->assertEquals( - $responce, + $response, "$content" ); - // Display Type: span without $content - $responce = $microdata + // Test Display Type: 'span' without $content + $response = $microdata ->property($property) ->display('span'); $this->assertEquals( - $responce, + $response, "" ); - // Display Type: meta - $responce = $microdata->content($content) + // Test Display Type: 'meta' + $response = $microdata->content($content) ->property($property) ->display('meta'); $this->assertEquals( - $responce, + $response, "" ); - // Display Type: meta without $content - $responce = $microdata - ->property($property) - ->display('meta'); + // Test Display Type: 'meta' without $content + $response = $microdata + ->property($property) + ->display('meta'); $this->assertEquals( - $responce, + $response, "" ); } /** - * Test the isTypeAvailabe() function + * Test the isTypeAvailable() function * * @return void * @@ -415,12 +434,12 @@ public function testDisplayTypes() */ public function testIsTypeAvailable() { - // Test if the method return true with an available Type + // Test if the function returns 'true' with an available $Type $this->assertTrue( JMicrodata::isTypeAvailable('Article') ); - // Test if the method return false with an unavailable Type + // Test if the function returns 'false' with an unavailable $Type $this->assertFalse( JMicrodata::isTypeAvailable('SomethingThatDoesNotExist') ); @@ -438,22 +457,22 @@ public function testIsPropertyInType() // Setup $type = 'Article'; - // Test a Property that is available in the Type + // Test a $Property that is available in the $Type $this->assertTrue( JMicrodata::isPropertyInType($type, 'articleBody') ); - // Test an inherit Property that is available in the Type + // Test an inherit $Property that is available in the $Type $this->assertTrue( JMicrodata::isPropertyInType($type, 'about') ); - // Test a Property that is unavailable in the Type + // Test a $Property that is unavailable in the $Type $this->assertFalse( JMicrodata::isPropertyInType($type, 'aPropertyThatDoesNotExist') ); - // Test a Property in an unanvailable Type + // Test a Property in an unavailable Type $this->assertFalse( JMicrodata::isPropertyInType('aTypeThatDoesNotExist', 'aPropertyThatDoesNotExist') ); @@ -505,16 +524,16 @@ public function testDisplayScope() $this->handler->enable(true) ->setType($type); - // Test a displayScope() when microdata are enabled + // Test the displayScope() function when the library is enabled $this->assertEquals( $this->handler->displayScope(), "itemscope itemtype='https://schema.org/$type'" ); - // Test a displayScope() when microdata are disabled + // Test the displayScope() function when the library is disabled $this->assertEquals( - $this->handler->displayScope(), - "itemscope itemtype='https://schema.org/$type'" + $this->handler->enable(false)->displayScope(), + "" ); } @@ -527,11 +546,11 @@ public function testDisplayScope() */ public function testGetAvailableTypes() { - $responce = JMicrodata::getAvailableTypes(); + $response = JMicrodata::getAvailableTypes(); - $this->assertGreaterThan(500, count($responce)); - $this->assertNotEmpty($responce); - $this->assertTrue(in_array('Thing', $responce)); + $this->assertGreaterThan(500, count($response)); + $this->assertNotEmpty($response); + $this->assertTrue(in_array('Thing', $response)); } /** @@ -543,8 +562,8 @@ public function testGetAvailableTypes() */ public function testHtmlMeta() { - $scope = 'Article'; - $content = 'microdata'; + $scope = 'Article'; + $content = 'anything'; $property = 'datePublished'; // Test with all params @@ -553,7 +572,7 @@ public function testHtmlMeta() "" ); - // Test with the inverse mode + // Test with the $inverse mode $this->assertEquals( JMicrodata::htmlMeta($content, $property, $scope, true), "" @@ -576,8 +595,8 @@ public function testHtmlMeta() public function testHtmlDiv() { // Setup - $scope = 'Article'; - $content = 'microdata'; + $scope = 'Article'; + $content = 'microdata'; $property = 'about'; // Test with all params @@ -586,7 +605,7 @@ public function testHtmlDiv() "
$content
" ); - // Test with the inverse mode + // Test with the $inverse mode $this->assertEquals( JMicrodata::htmlDiv($content, $property, $scope, true), "
$content
" @@ -604,7 +623,7 @@ public function testHtmlDiv() "
$content
" ); - // Test withoud the $scope, $property + // Test without the $scope, $property $this->assertEquals( JMicrodata::htmlDiv($content), "
$content
" @@ -621,8 +640,8 @@ public function testHtmlDiv() public function testHtmlSpan() { // Setup - $scope = 'Article'; - $content = 'microdata'; + $scope = 'Article'; + $content = 'anything'; $property = 'about'; // Test with all params @@ -649,7 +668,7 @@ public function testHtmlSpan() "$content" ); - // Test withoud the $scope, $property + // Test without the $scope, $property $this->assertEquals( JMicrodata::htmlSpan($content), "$content" diff --git a/tests/unit/suites/libraries/joomla/uri/JURITest.php b/tests/unit/suites/libraries/joomla/uri/JURITest.php index 3572a390b7090..e5b0f1fb617e2 100644 --- a/tests/unit/suites/libraries/joomla/uri/JURITest.php +++ b/tests/unit/suites/libraries/joomla/uri/JURITest.php @@ -22,28 +22,6 @@ class JUriTest extends PHPUnit_Framework_TestCase */ protected $object; - /** - * Sets up the fixture, for example, opens a network connection. - * This method is called before a test is executed. - * - * @return void - * - * @since 11.1 - */ - protected function setUp() - { - parent::setUp(); - - JUri::reset(); - - $_SERVER['HTTP_HOST'] = 'www.example.com:80'; - $_SERVER['SCRIPT_NAME'] = '/joomla/index.php'; - $_SERVER['PHP_SELF'] = '/joomla/index.php'; - $_SERVER['REQUEST_URI'] = '/joomla/index.php?var=value 10'; - - $this->object = new JUri; - } - /** * Test the __toString method. * @@ -635,4 +613,256 @@ public function testIsSsl() $this->equalTo(false) ); } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testparsewhennoschemegiven() + { + $this->object->parse('www.myotherexample.com'); + $this->assertFalse($this->object->isInternal('www.myotherexample.com')); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testsefurl() + { + $this->object->parse('/login'); + $this->assertFalse($this->object->isInternal('/login')); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testisInternalWithNoSchemeAndNotInternal() + { + $this->assertFalse( + $this->object->isInternal('www.myotherexample.com'), + 'www.myotherexample.com should NOT be resolved as internal' + ); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testisInternalWithNoSchemeAndNoHostnameAndNotInternal() + { + $this->assertFalse( + $this->object->isInternal('myotherexample.com'), + 'myotherexample.com should NOT be resolved as internal' + ); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testisInternalWithSchemeAndNotInternal() + { + $this->assertFalse( + $this->object->isInternal('http://www.myotherexample.com'), + 'http://www.myotherexample.com should NOT be resolved as internal' + ); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testisInternalWhenInternalWithNoDomainOrScheme() + { + $this->assertTrue( + $this->object->isInternal('index.php?option=com_something'), + 'index.php?option=com_something should be internal' + ); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testisInternalWhenInternalWithDomainAndSchemeAndPort() + { + $this->assertTrue( + $this->object->isInternal(JUri::base() . 'index.php?option=com_something'), + JUri::base() . 'index.php?option=com_something should be internal' + ); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testisInternalWhenInternalWithDomainAndSchemeAndPortNoSubFolder() + { + JUri::reset(); + + $_SERVER['HTTP_HOST'] = 'www.example.com:80'; + $_SERVER['SCRIPT_NAME'] = '/index.php'; + $_SERVER['PHP_SELF'] = '/index.php'; + $_SERVER['REQUEST_URI'] = '/index.php?var=value 10'; + + $this->object = new JUri; + + $this->assertTrue( + $this->object->isInternal(JUri::base() . 'index.php?option=com_something'), + JUri::base() . 'index.php?option=com_something should be internal' + ); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testisInternalWhenNOTInternalWithDomainAndSchemeAndPortAndIndex() + { + $this->assertFalse( + $this->object->isInternal('http://www.myotherexample.com/index.php?option=com_something'), + 'http://www.myotherexample.com/index.php?option=com_something should NOT be internal' + ); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testisInternalWhenNOTInternalWithDomainAndNoSchemeAndPortAndIndex() + { + $this->assertFalse( + $this->object->isInternal('www.myotherexample.com/index.php?option=com_something'), + 'www.myotherexample.comindex.php?option=com_something should NOT be internal' + ); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testisInternal3rdPartyDevs() + { + $this->assertFalse( + $this->object->isInternal('/customDevScript.php'), + '/customDevScript.php should NOT be internal' + ); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testAppendingOfBaseToTheEndOfTheUrl() + { + $this->assertFalse( + $this->object->isInternal('/customDevScript.php?www.example.com'), + '/customDevScript.php?www.example.com should NOT be internal' + ); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testAppendingOfBaseToTheEndOfTheUrl2() + { + $this->assertFalse( + $this->object->isInternal('www.otherexample.com/www.example.com'), + 'www.otherexample.com/www.example.com should NOT be internal' + ); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testSchemeEmptyButHostAndPortMatch() + { + $this->assertTrue( + $this->object->isInternal('www.example.com:80'), + 'www.example.com:80 should be internal' + ); + } + + /** + * Test hardening of JUri::isInternal against non internal links + * + * @return void + * + * @covers JUri::isInternal + */ + public function testPregMatch() + { + $this->assertFalse( + $this->object->isInternal('wwwhexample.com'), + 'wwwhexample.com should NOT be internal' + ); + } + + /** + * Sets up the fixture, for example, opens a network connection. + * This method is called before a test is executed. + * + * @return void + * + * @since 11.1 + */ + protected function setUp() + { + parent::setUp(); + + JUri::reset(); + + $_SERVER['HTTP_HOST'] = 'www.example.com:80'; + $_SERVER['SCRIPT_NAME'] = '/joomla/index.php'; + $_SERVER['PHP_SELF'] = '/joomla/index.php'; + $_SERVER['REQUEST_URI'] = '/joomla/index.php?var=value 10'; + + $this->object = new JUri; + } }