From 846d39dcc18d53cabf9140494030303d77cf9a99 Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Fri, 30 Aug 2013 15:58:09 +0200 Subject: [PATCH 001/156] TitleHelper improvements: Chunk/Bulk Querying --- .../classes/OntoWiki/Model/TitleHelper.php | 82 ++++++++++++------- 1 file changed, 51 insertions(+), 31 deletions(-) diff --git a/application/classes/OntoWiki/Model/TitleHelper.php b/application/classes/OntoWiki/Model/TitleHelper.php index 83405b867..4c03856e8 100644 --- a/application/classes/OntoWiki/Model/TitleHelper.php +++ b/application/classes/OntoWiki/Model/TitleHelper.php @@ -128,6 +128,11 @@ class OntoWiki_Model_TitleHelper */ public function __construct(Erfurt_Rdf_Model $model = null, Erfurt_Store $store = null, $config = null) { + $logger = OntoWiki::getInstance()->logger; + $logger->info( + 'XXXXXXXXXXXXXXXXXXXXXXXX NEW TitleHelper Instantiated' + ); + if (null !== $model) { $this->_model = $model; } @@ -255,14 +260,18 @@ public function addResources(array $resourceArray, $variable = null) if (!empty($row[$key])) { $object = $row[$key]; + $toBeAdded = null; if (is_array($object)) { // probably support extended format if (isset($object['type']) && ($object['type'] == 'uri')) { - $this->addResource($object['value']); + $toBeAdded = $object['value']; } } else { // plain object - $this->addResource($object); + $toBeAdded = $object; + } + if (($toBeAdded != null) && empty($_resourceTitles[$toBeAdded])) { + $this->addResource($toBeAdded); } } } @@ -327,7 +336,7 @@ public function getTitle($resourceUri, $language = null) } // add if we don't have this URI (but logg) - if (!array_key_exists($resourceUri, (array)$this->_resources)) { + if (!array_key_exists($resourceUri, (array)$this->_resources) ) { if (defined('_OWDEBUG')) { $logger = OntoWiki::getInstance()->logger; @@ -388,7 +397,6 @@ public function getTitle($resourceUri, $language = null) $this->_resourceTitles[$resourceUri]["localname"]["localname"] = $title; } } - $this->_cache($resourceUri, (string)$this->_model, $title); } else { // cached title @@ -408,24 +416,19 @@ public function getTitleQueryResult() if (null !== $this->_store) { $execObject = $this->_store; } - // get results for all queries $queries = $this->getTitleQueries(); - foreach ($queries as $resourceUri => $currentQuery) { - if (isset($this->_titleQueryResults[$resourceUri])) { - continue; - } + foreach ($queries as $key => $currentQuery) { $queryResults = $execObject->sparqlQuery($currentQuery, array('result_format' => 'extended')); - $this->_titleQueryResults[$resourceUri] = $queryResults; + $this->_titleQueryResults[] = $queryResults; } if (defined('_OWDEBUG')) { $numQueries = count($queries); $logger = OntoWiki::getInstance()->logger; - $logger->info( - 'TitleHelper: ' . $numQueries . ' queries with ' . count($this->_resources) . ' resources.' + 'TitleHelper: ' . $numQueries . ' queries executed.' ); } @@ -441,22 +444,21 @@ public function getTitleQueries() { $currentQuery = null; $queries = array(); - $select = 'SELECT DISTINCT ?property ?value'; - if ($this->_resources === null) { + $select = 'SELECT DISTINCT ?subject ?property ?value'; + if (empty($this->_resources)) { return array(); } - foreach ($this->_resources as $resourceUri) { - $where = 'WHERE {' - . $this->_getTitleWhere($resourceUri) - . '}'; + $resourcesChunks = array_chunk($this->_resources, 50); + + foreach ($resourcesChunks as $key => $chunk) { + $where = 'WHERE {' . + $this->_getTitleWhere($chunk) . '}'; $currentQuery = new Erfurt_Sparql_SimpleQuery(); $currentQuery->setProloguePart($select) ->setWherePart($where); - - $queries[$resourceUri] = $currentQuery; + $queries[] = $currentQuery; } - return $queries; } @@ -508,7 +510,7 @@ protected function _fetchResourceTitlesFromQueryResult() return; } - foreach ($titleResults as $resourceUri => $titleQueryResult) { + foreach ($titleResults as $key => $titleQueryResult) { // fetch result if (!(isset($titleQueryResult['head']) && isset($titleQueryResult['results']['bindings']))) { @@ -518,14 +520,21 @@ protected function _fetchResourceTitlesFromQueryResult() $head = $queryResult['head']; $bindings = $queryResult['results']['bindings']; + if (empty($bindings)) { + return; + } + if (defined('_OWDEBUG')) { $logger = OntoWiki::getInstance()->logger; $logger->debug('TitleHelper _fetchResourceTitlesFromQueryResult count(bindings): ' . count($bindings)); } - foreach ($bindings as $row) { - // get the resource URI - $currentResource = $resourceUri; + + foreach ($bindings as $key => $row) { + if (empty($row)) { + continue; + } + $currentResource = $row['subject']['value']; $currentProperty = $row['property']['value']; $titleValue = $row['value']['value']; @@ -549,30 +558,41 @@ protected function _fetchResourceTitlesFromQueryResult() if (!array_key_exists($titleLang, $this->_resourceTitles[$currentResource][$currentProperty])) { $this->_resourceTitles[$currentResource][$currentProperty][$titleLang] = $titleValue; } + unset($this->_resources[$currentResource]); } } } /** - * Returns graph patterns for all title properties for a resource URI. + * Returns graph patterns for all title properties for a list of resource URIs. * - * @param string $resourceUri the resource URI + * @param array $resources the array of resources * * @return string */ - protected function _getTitleWhere($resourceUri) + protected function _getTitleWhere($resources = array()) { - $where = 'OPTIONAL { <' . $resourceUri . '> ?property ?value . }'; + $where = 'OPTIONAL { ?subject ?property ?value . }'; - // build title property sameTerm filters + // build title property filters $propertyFilters = array(); foreach ($this->_titleProperties as $uri) { - array_push($propertyFilters, 'sameTerm(?property, <' . $uri . '>)'); + array_push($propertyFilters, '(?property = <' . $uri . '>)'); } if (!empty($propertyFilters)) { $where .= PHP_EOL . 'FILTER(' . implode(' || ', $propertyFilters) . ')'; } + // build resource subject filters + $resourceFilters = array(); + foreach ($resources as $uri) { + array_push($resourceFilters, '(?subject = <' . $uri . '>)'); + unset($this->_resources[$uri]); + + } + if (!empty($resourceFilters)) { + $where .= PHP_EOL . 'FILTER(' . implode(' || ', $resourceFilters) . ')'; + } return $where; } From d4f68300a8e35fc0a8a9a7295c4a5f126706733d Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Tue, 3 Sep 2013 17:36:37 +0200 Subject: [PATCH 002/156] changing the workflow of the TitleHelper using the ResourcePool --- .../classes/OntoWiki/Model/TitleHelper.php | 451 +++++------------- 1 file changed, 112 insertions(+), 339 deletions(-) diff --git a/application/classes/OntoWiki/Model/TitleHelper.php b/application/classes/OntoWiki/Model/TitleHelper.php index 4c03856e8..f3651506f 100644 --- a/application/classes/OntoWiki/Model/TitleHelper.php +++ b/application/classes/OntoWiki/Model/TitleHelper.php @@ -15,11 +15,6 @@ */ class OntoWiki_Model_TitleHelper { - /** - * Static title cache per graph - */ - private static $_titleCache = array(); - /** * Whether to always search all configured title properties * in order to find the best language match or stop at the @@ -37,12 +32,19 @@ class OntoWiki_Model_TitleHelper */ protected $_alwaysUseLocalNames = false; + /** + * The singleton instance + * + * @var OntoWiki_Model_TitleHelper + */ + private static $_instance = null; + /** * The languages to consider for title properties. * * @var array */ - protected $_languages = array('', 'en'); + protected $_languages = array('en','','localname'); /** * The model object to operate on @@ -51,13 +53,6 @@ class OntoWiki_Model_TitleHelper */ protected $_model = null; - /** - * Graph pattern that defines resources to operate on. - * - * @var string - */ - protected $_resourcePattern = '?p ?o . '; - /** * The resources for whitch to fetch title properties * @@ -65,13 +60,6 @@ class OntoWiki_Model_TitleHelper */ protected $_resources = null; - /** - * Flag that indicates whether resources have been added - * - * @var boolean - */ - protected $_resourcesAdded = false; - /** * Resource query object * @@ -79,13 +67,6 @@ class OntoWiki_Model_TitleHelper */ protected $_resourceQuery = null; - /** - * Array of resource titles found - * - * @var array - */ - protected $_resourceTitles = array(); - /** * Erfurt store object * @@ -94,28 +75,13 @@ class OntoWiki_Model_TitleHelper protected $_store = null; /** - * An array of naming properties whose values are - * displayed instead of URIs. + * titleProperties from configuration * * @var array */ protected $_titleProperties = null; - /** - * Title query object - * - * @var Erfurt_Sparql_SimpleQuery - */ - protected $_titleQuery = null; - - /** - * Result set from the title query - * - * @var array - */ - protected $_titleQueryResults = array(); - private static $_instance = null; // ------------------------------------------------------------------------ // --- Magic methods ------------------------------------------------------ @@ -128,11 +94,6 @@ class OntoWiki_Model_TitleHelper */ public function __construct(Erfurt_Rdf_Model $model = null, Erfurt_Store $store = null, $config = null) { - $logger = OntoWiki::getInstance()->logger; - $logger->info( - 'XXXXXXXXXXXXXXXXXXXXXXXX NEW TitleHelper Instantiated' - ); - if (null !== $model) { $this->_model = $model; } @@ -159,7 +120,10 @@ public function __construct(Erfurt_Rdf_Model $model = null, Erfurt_Store $store } } else { if ($config instanceof Zend_Config) { - if (isset($config->titleHelper->properties)) { // naming properties for resources + //its possible to define myProperties in config.ini + if (isset($config->titleHelper->myProperties)) { + $this->_titleProperties = array_values($config->titleHelper->myProperties->toArray()); + } else if (isset($config->titleHelper->properties)) { // naming properties for resources $this->_titleProperties = array_values($config->titleHelper->properties->toArray()); } else { $this->_titleProperties = array(); @@ -173,17 +137,19 @@ public function __construct(Erfurt_Rdf_Model $model = null, Erfurt_Store $store $this->_titleProperties = array(); } } - // always use local name for unknown resources? if (isset($config->titleHelper->useLocalNames)) { $this->_alwaysUseLocalNames = (bool)$config->titleHelper->useLocalNames; } + // add localname to titleproperties + $this->_titleProperties[] = 'localname'; if (null === $this->_languages) { $this->_languages = array(); } if (isset($config->languages->locale)) { array_unshift($this->_languages, (string)$config->languages->locale); + $this->_languages = array_unique($this->_languages); } } @@ -214,9 +180,10 @@ public static function getInstance() public function addResource($resource) { $resourceUri = (string)$resource; - if (Erfurt_Uri::check($resourceUri)) { - $this->_resources[$resourceUri] = $resourceUri; + if (empty($this->_resources[$resourceUri])) { + $this->_resources[$resourceUri] = null; + } } else { // throw exeption in debug mode only if (defined('_OWDEBUG')) { @@ -225,41 +192,25 @@ public function addResource($resource) ); } } - - $this->_resourcesAdded = true; - return $this; } /** * Adds a bunch of resources for which to query title properties. - * - * If you pass the $variable parameter, the elements of $resourceArray are - * interpreted as arrays where $variable holds the key which maps to the - * resource URI. Otherwise $resourceArray is interpreted as an array with - * resource URIs as values. - * - * @param array $resourceArray - * @param string $variable the key which maps to the resource URI - * + * @param array $resources * @return OntoWiki_Model_TitleHelper */ - public function addResources(array $resourceArray, $variable = null) + public function addResources($resources = array(), $variable = null) { if (null === $variable) { - if (!empty($resourceArray)) { - // prepare merger array - $merger = array_combine($resourceArray, $resourceArray); - - // merge in resources - $this->_resources = array_merge((array)$this->_resources, $merger); + foreach ($resources as $resourceUri) { + $this->addResource($resourceUri); } } else { - foreach ($resourceArray as $row) { + foreach ($resources as $row) { foreach ((array)$variable as $key) { if (!empty($row[$key])) { $object = $row[$key]; - $toBeAdded = null; if (is_array($object)) { // probably support extended format @@ -270,52 +221,20 @@ public function addResources(array $resourceArray, $variable = null) // plain object $toBeAdded = $object; } - if (($toBeAdded != null) && empty($_resourceTitles[$toBeAdded])) { + if ($toBeAdded != null) { $this->addResource($toBeAdded); } } } } } - - $this->_resourcesAdded = true; - return $this; } - /** - * Sets the graph pattern that identifies resources for which to query - * title properties. - * - * @param string $pattern - */ - public function setResourcePattern($pattern) - { - $this->_resourcePattern = $pattern; - - return $this; - } - - /** - * Returns the resources for which to fetch title properties - * - * @return array - */ - public function getResources() - { - if (!$this->_resourcesAdded) { - $this->_resources = array(); //sync - return array(); - } - - return array_keys($this->_resources); - } - /** * Returns the title property for the resource URI in the requested language. - * If no title property is found for that language a list of fallback languages - * is used. If no title property is found for any language, the local part - * of the resource URI is returned. + * If no title property is found for that language the local part + * of the resource URI will be returned. * * @param string $resourceUri * @param string $language The preferred language for the title @@ -327,274 +246,128 @@ public function getTitle($resourceUri, $language = null) if (!Erfurt_Uri::check($resourceUri)) { return $resourceUri; } + // * means any language + if (trim($language) == '*') { + $language = null; + } - $cacheValue = $this->_cache($resourceUri, (string)$this->_model); - if ($cacheValue === false) { - // * means any language - if (trim($language) == '*') { - $language = null; - } - - // add if we don't have this URI (but logg) - if (!array_key_exists($resourceUri, (array)$this->_resources) ) { + //Have a look if we have an entry for the given resourceUri + if (!array_key_exists($resourceUri, $this->_resources) ) { - if (defined('_OWDEBUG')) { - $logger = OntoWiki::getInstance()->logger; - $logger->info('TitleHelper: getTitle called for unknown resource. Adding resource before fetch.'); - } - $this->addResource($resourceUri); - } - // if this is the first getTitle request, fetch titles - if (!array_key_exists($resourceUri, $this->_resourceTitles)) { - $this->_fetchResourceTitlesFromQueryResult(); - } - // prepend the language that is asked for to the array - // of languages we will look for - $languages = $this->_languages; - if (null !== $language) { - array_unshift($languages, (string)$language); - } - $languages = array_values(array_unique($languages)); - - $title = null; - // has anything been found for the resource? - if (array_key_exists($resourceUri, $this->_resourceTitles)) { - $titleProperties = (array)$this->_resourceTitles[$resourceUri]; - - $currentBestLanguage = PHP_INT_MAX; - foreach ($this->_titleProperties as $currentTitleProperty) { - // has the property been found for the resource? - if (array_key_exists($currentTitleProperty, $titleProperties)) { - - for ($i = 0, $max = count($languages); $i < $max; ++$i) { - $currentLanguage = $languages[$i]; - - if (($i < $currentBestLanguage) - && isset($titleProperties[$currentTitleProperty][$currentLanguage]) - ) { - $title = $titleProperties[$currentTitleProperty][$currentLanguage]; - $currentBestLanguage = $i; - - if (!$this->_alwaysSearchAllProperties || ($currentBestLanguage === 0)) { - // it won't get better :) - break(2); - } - } - } - } - } + if (defined('_OWDEBUG')) { + $logger = OntoWiki::getInstance()->logger; + $logger->info('TitleHelper: getTitle called for unknown resource. Adding resource before fetch.'); } - // still not found? - if (null === $title) { - $title = OntoWiki_Utils::contractNamespace($resourceUri); - - // not even namespace found? - if ($title == $resourceUri && $this->_alwaysUseLocalNames) { - $title = OntoWiki_Utils::getUriLocalPart($resourceUri); + //If we dont have an entry create one + $this->addResource($resourceUri); + } - // now we have to add this localName to the ResourceTitles array to prevent - // querying of resources without titles all the time - $this->_resourceTitles[$resourceUri]["localname"]["localname"] = $title; - } + //Have a look if we have already a title for the given resourceUri + if ($this->_resources[$resourceUri] === null ) { + $this->_receiveTitles(); + } + //Select the best found title according received titles and order of configured titleproperties + $title = $resourceUri; + + $titles = $this->_resources[$resourceUri]; + $found = false; + foreach ($this->_titleProperties as $titleProperty) { + foreach ($this->_languages as $language) + if (!empty($titles[$titleProperty][$language]) && $found == false) { + $title = $titles[$titleProperty][$language]; + $found = true; + } + if ($found == true) { + break; } - $this->_cache($resourceUri, (string)$this->_model, $title); - } else { - // cached title - $title = $cacheValue; } return $title; } - /** - * Takes the current title query and fetches its result from the RDF store. - * - * @return array + /** + * Resets the title helper, emptying all resources, results and queries stored */ - public function getTitleQueryResult() + public function reset() { - $execObject = $this->_model; - if (null !== $this->_store) { - $execObject = $this->_store; - } - // get results for all queries - $queries = $this->getTitleQueries(); - - foreach ($queries as $key => $currentQuery) { - $queryResults = $execObject->sparqlQuery($currentQuery, array('result_format' => 'extended')); - $this->_titleQueryResults[] = $queryResults; - } - if (defined('_OWDEBUG')) { - $numQueries = count($queries); - - $logger = OntoWiki::getInstance()->logger; - $logger->info( - 'TitleHelper: ' . $numQueries . ' queries executed.' - ); - } - - return $this->_titleQueryResults; + $this->_resources = null; } /** - * Returns the queries for the title properties of all resources. + * operate on _resources array and call the method to fetch the titles + * if no titles found for the respective resource the localname will be extracted * - * @return Erfurt_Sparql_SimpleQuery + * @return void */ - public function getTitleQueries() + private function _receiveTitles() { - $currentQuery = null; - $queries = array(); - $select = 'SELECT DISTINCT ?subject ?property ?value'; - if (empty($this->_resources)) { - return array(); - } - - $resourcesChunks = array_chunk($this->_resources, 50); - - foreach ($resourcesChunks as $key => $chunk) { - $where = 'WHERE {' . - $this->_getTitleWhere($chunk) . '}'; - $currentQuery = new Erfurt_Sparql_SimpleQuery(); - $currentQuery->setProloguePart($select) - ->setWherePart($where); - $queries[] = $currentQuery; + //first we check if there are resourceUris without a title representation + $toBeReceived = array(); + foreach ($this->_resources as $resourceUri => $resource) { + if ($resource == null) { + $toBeReceived[] = $resourceUri; + } } - return $queries; - } + //now we try to receive the Titles from ResourcePool + $this->_fetchTitlesFromResourcePool($toBeReceived); - /** - * Add a new title property on top of the list (most important) - */ - public function prependTitleProperty($propertyUri) - { - // check if we have a valid URI - if (Erfurt_Uri::check($propertyUri)) { - // remove the property from the list if it already exist - foreach ($this->_titleProperties as $key => $value) { - if ($value == $propertyUri) { - unset($this->_titleProperties[$key]); - } + //If we dont find titles then we extract them from LocalName + foreach ($this->_resources as $resourceUri => $resource) { + if ($resource == null) { + $this->_resources[$resourceUri]["localname"]["localname"] = $this->_extractTitleFromLocalName($resourceUri); } - // rewrite the array - $this->_titleProperties = array_values($this->_titleProperties); - // prepend the new URI - array_unshift($this->_titleProperties, $propertyUri); } } /** - * Resets the title helper, emptying all resources, results and queries stored - */ - public function reset() - { - $this->_resources = null; - $this->_resourceQuery = null; - $this->_resourceTitles = array(); - - $this->_titleQuery = null; - $this->_titleQueryResults = array(); - } - - // ------------------------------------------------------------------------ - // --- Protected methods -------------------------------------------------- - // ------------------------------------------------------------------------ - - /** - * Fetches information (e.g. title properties) of resources from a query result set. + * fetches all titles according the given array if Uris * - */ - protected function _fetchResourceTitlesFromQueryResult() + * @param array resourceUris + */ + private function _fetchTitlesFromResourcePool($resourceUris) { - $titleResults = $this->getTitleQueryResult(); - if (count($titleResults) === 0) { - return; + $resourcePool = Erfurt_App::getInstance()->getResourcePool(); + $resources = array(); + if (!empty($this->_model)) { + $modelUri = $this->_model->getModelIri(); + $resources = $resourcePool->getResources($resourceUris, $modelUri); + } else { + $resources = $resourcePool->getResources($resourceUris); } - foreach ($titleResults as $key => $titleQueryResult) { - // fetch result - - if (!(isset($titleQueryResult['head']) && isset($titleQueryResult['results']['bindings']))) { - continue; - } - $queryResult = $titleQueryResult; - $head = $queryResult['head']; - $bindings = $queryResult['results']['bindings']; - - if (empty($bindings)) { - return; - } - - if (defined('_OWDEBUG')) { - $logger = OntoWiki::getInstance()->logger; - - $logger->debug('TitleHelper _fetchResourceTitlesFromQueryResult count(bindings): ' . count($bindings)); - } - - foreach ($bindings as $key => $row) { - if (empty($row)) { - continue; - } - $currentResource = $row['subject']['value']; - $currentProperty = $row['property']['value']; - $titleValue = $row['value']['value']; - - // add the resource to the local title store - if (!array_key_exists($currentResource, (array)$this->_resourceTitles)) { - $this->_resourceTitles[$currentResource] = array(); - } - - // add current title property to resource's title store - if (!array_key_exists($currentProperty, $this->_resourceTitles[$currentResource])) { - $this->_resourceTitles[$currentResource][$currentProperty] = array(); - } - - // fetch the language or use default - $titleLang = ''; - if (isset($row['value']['xml:lang'])) { - $titleLang = $row['value']['xml:lang']; - } - - // don't overwrite previously found title - if (!array_key_exists($titleLang, $this->_resourceTitles[$currentResource][$currentProperty])) { - $this->_resourceTitles[$currentResource][$currentProperty][$titleLang] = $titleValue; + $memoryModel = new Erfurt_Rdf_MemoryModel(); + foreach ($resources as $resourceUri => $resource) { + $resourceDescription = $resource->getDescription(); + $memoryModel->addStatements($resourceDescription); + $found = false ; + foreach ($this->_titleProperties as $titleProperty) { + $values = $memoryModel->getValues($resourceUri, $titleProperty); + foreach ($values as $value) { + if (!empty($value['lang'])) { + $language = $value['lang']; + } else { + $language = ""; + } + $this->_resources[$resourceUri][$titleProperty][$language] = $value['value']; } - unset($this->_resources[$currentResource]); } } } /** - * Returns graph patterns for all title properties for a list of resource URIs. - * - * @param array $resources the array of resources + * extract the localname from given resourceUri * - * @return string - */ - protected function _getTitleWhere($resources = array()) + * @param string resourceUri + * @return string title + */ + private function _extractTitleFromLocalName($resourceUri) { - $where = 'OPTIONAL { ?subject ?property ?value . }'; - - // build title property filters - $propertyFilters = array(); - foreach ($this->_titleProperties as $uri) { - array_push($propertyFilters, '(?property = <' . $uri . '>)'); + $title = OntoWiki_Utils::contractNamespace($resourceUri); + // not even namespace found? + if ($title == $resourceUri && $this->_alwaysUseLocalNames) { + $title = OntoWiki_Utils::getUriLocalPart($resourceUri); } - if (!empty($propertyFilters)) { - $where .= PHP_EOL . 'FILTER(' . implode(' || ', $propertyFilters) . ')'; - } - - // build resource subject filters - $resourceFilters = array(); - foreach ($resources as $uri) { - array_push($resourceFilters, '(?subject = <' . $uri . '>)'); - unset($this->_resources[$uri]); - - } - if (!empty($resourceFilters)) { - $where .= PHP_EOL . 'FILTER(' . implode(' || ', $resourceFilters) . ')'; - } - return $where; - } + return $title; + } private function _cache($resourceUri, $graphUri, $newValue = null) { From 0635903374c18e4389d8f2453a3dd957431c5892 Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Tue, 3 Sep 2013 17:37:38 +0200 Subject: [PATCH 003/156] adding the Erfurt to this branch (forward submodule) --- libraries/Erfurt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Erfurt b/libraries/Erfurt index ab05f3c8d..5eb998bbd 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit ab05f3c8d08ef4fdf233303294ab899b48fe6042 +Subproject commit 5eb998bbd1a98f637d0163bb13f853585414598a From 37a10d9539d7851abc92ee36a58e9e38909bf5be Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Wed, 4 Sep 2013 13:42:26 +0200 Subject: [PATCH 004/156] Update getValues functionality using the ResourcePool - Scalability Improvement --- .../classes/OntoWiki/Model/Instances.php | 83 ++++++++++++++++++- 1 file changed, 81 insertions(+), 2 deletions(-) diff --git a/application/classes/OntoWiki/Model/Instances.php b/application/classes/OntoWiki/Model/Instances.php index 292cd2b54..3cdf73973 100644 --- a/application/classes/OntoWiki/Model/Instances.php +++ b/application/classes/OntoWiki/Model/Instances.php @@ -1207,10 +1207,90 @@ public function getResourceVar() /** * Returns the property values for all resources at once. - * + * This method receives its values from Resources from the ResourcePool. * @return array */ public function getValues() + { + if (empty($this->_resources)) { + return array(); + } + + //first we have to create the list of resources that have to be shown. + $pool = Erfurt_App::getInstance()->getResourcePool(); + $resources = array(); + $valueResults = array(); + foreach ($this->_resources as $item) { + $resourceUri = $item['value']; + $resource = $pool->getResource($resourceUri, (string)$this->_model); + + //secondly we have to walk throw the list of interesting properties to bw shown + $valueResults[$resourceUri] = array(); + foreach ($this->_shownProperties as $key => $property) { + $propertyUri = $property['uri']; + $variable = $property['var']->getName(); + $propertyResource = $pool->getResource($resourceUri, (string)$this->_model); + + //now we have to extract the values according the current property from the resource + $values = $resource->getMemoryModel()->getValues($resourceUri, $propertyUri); + foreach ($values as $value) { + + //initialising the value with the original content + $revisedValue = $value['value']; + + //but we have to do something specific if the value is a resource + if ($value['type'] == 'uri') { + // skip blanknode values here due to backend problems with filters + if (substr($value['value'], 0, 2) == '_:') { + continue; + } + + $url = new OntoWiki_Url(array('route' => 'properties'), array('r')); + $link = (string)$url->setParam('r', $value['value'], true); + $event = new Erfurt_Event('onDisplayObjectPropertyValue'); + $event->property = $propertyUri; + $event->value = $value['value']; + $revisedValue = $event->trigger(); + + // set default if event has not been handled + if (!$event->handled()) { + $revisedValue = $this->_titleHelper->getTitle($value['value']); + } + + } else { // the value is not a resource but a literal value + $event = new Erfurt_Event('onDisplayLiteralPropertyValue'); + $event->property = $propertyUri; + $event->value = $value['value']; + $event->setDefault($value['value']); + $revisedValue = $event->trigger(); + } + //now we have to assign the facts to the result array + $valueResults[$resourceUri][$variable][] = array( + 'value' => $revisedValue, + 'origvalue' => $value['value'], + 'type' => $value['type'], + 'url' => $link, + 'uri' => $value['value'] //TODO: rename (can be literal) + ); + } + } + } + + //some assignments + $this->_values = $valueResults; + $this->_valuesUptodate = true; + + //returning the result + return $valueResults; + } + + /** + * Returns the property values for all resources at once. + * This method generate one SPARQL query to receive all values . + * Original Name was getValues() + * @return array + */ + public function getValuesBySingleQuery() { if ($this->_valuesUptodate) { return $this->_values; @@ -1350,7 +1430,6 @@ public function getValues() $this->_values = $valueResults; $this->_valuesUptodate = true; - return $valueResults; } From 786cc1e3a2bd4c9c7c72a721c04fe5d2628c59df Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Wed, 4 Sep 2013 16:16:08 +0200 Subject: [PATCH 005/156] changing getAllProperties functionality to work with the MemoryModel and ResourcePool --- .../classes/OntoWiki/Model/Instances.php | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/application/classes/OntoWiki/Model/Instances.php b/application/classes/OntoWiki/Model/Instances.php index 3cdf73973..2ba94c590 100644 --- a/application/classes/OntoWiki/Model/Instances.php +++ b/application/classes/OntoWiki/Model/Instances.php @@ -1229,7 +1229,7 @@ public function getValues() foreach ($this->_shownProperties as $key => $property) { $propertyUri = $property['uri']; $variable = $property['var']->getName(); - $propertyResource = $pool->getResource($resourceUri, (string)$this->_model); + $propertyResource = $pool->getResource($propertyUri, (string)$this->_model); //now we have to extract the values according the current property from the resource $values = $resource->getMemoryModel()->getValues($resourceUri, $propertyUri); @@ -1472,7 +1472,43 @@ public function getAllPropertiesQuery($inverse = false) return $query; } + /** + * Returns a list of properties used by the current list of resources. + * Original Name was getValues() + * @return array + */ public function getAllProperties($inverse = false) + { + if ((empty($this->_resources) && $this->_resourcesUptodate) || ($inverse == true)) { + return array(); + } + + $pool = Erfurt_App::getInstance()->getResourcePool(); + $propertyUris = array(); + + $memoryModel = new Erfurt_Rdf_MemoryModel(); + + foreach ($this->_resources as $item) { + $resourceUri = $item['value']; + $resource = $pool->getResource($resourceUri, (string)$this->_model); + $resourceDescription = $resource->getDescription(); + $memoryModel->addStatements($resourceDescription); + } + $predicates = $memoryModel->getPredicates(); + + foreach ($predicates as $uri) { + $propertyUris[] = array('uri' => $uri); + } + return $this->convertProperties($propertyUris); + } + + /** + * Returns the list of properties used by all resources at once. + * This method generate one SPARQL query . + * Original Name was getAllProperties() + * @return array + */ + public function getAllPropertiesBySingleQuery($inverse = false) { if (empty($this->_resources) && $this->_resourcesUptodate) { return array(); From 3e6461a8ae7dd3c6cd639da6e58efe92627fe494 Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Wed, 4 Sep 2013 16:39:26 +0200 Subject: [PATCH 006/156] changing debug workflow with blanknodes on gettitles + cleanup --- .../classes/OntoWiki/Model/TitleHelper.php | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/application/classes/OntoWiki/Model/TitleHelper.php b/application/classes/OntoWiki/Model/TitleHelper.php index f3651506f..2eaae3089 100644 --- a/application/classes/OntoWiki/Model/TitleHelper.php +++ b/application/classes/OntoWiki/Model/TitleHelper.php @@ -38,7 +38,7 @@ class OntoWiki_Model_TitleHelper * @var OntoWiki_Model_TitleHelper */ private static $_instance = null; - + /** * The languages to consider for title properties. * @@ -187,9 +187,8 @@ public function addResource($resource) } else { // throw exeption in debug mode only if (defined('_OWDEBUG')) { - throw new OntoWiki_Model_Exception( - 'Supplied resource ' . htmlentities('<' . $resource . '>') . ' is not a valid URI.' - ); + $logger = OntoWiki::getInstance()->logger; + $logger->error('Supplied resource ' . htmlentities('<' . $resource . '>') . ' is not a valid URI.'); } } return $this; @@ -272,13 +271,11 @@ public function getTitle($resourceUri, $language = null) $titles = $this->_resources[$resourceUri]; $found = false; foreach ($this->_titleProperties as $titleProperty) { - foreach ($this->_languages as $language) - if (!empty($titles[$titleProperty][$language]) && $found == false) { - $title = $titles[$titleProperty][$language]; - $found = true; - } - if ($found == true) { - break; + foreach ($this->_languages as $language) { + if (!empty($titles[$titleProperty][$language]) && $found == false) { + $title = $titles[$titleProperty][$language]; + break; + } } } return $title; @@ -298,7 +295,7 @@ public function reset() * * @return void */ - private function _receiveTitles() + private function _receiveTitles() { //first we check if there are resourceUris without a title representation $toBeReceived = array(); @@ -313,7 +310,8 @@ private function _receiveTitles() //If we dont find titles then we extract them from LocalName foreach ($this->_resources as $resourceUri => $resource) { if ($resource == null) { - $this->_resources[$resourceUri]["localname"]["localname"] = $this->_extractTitleFromLocalName($resourceUri); + $this->_resources[$resourceUri]["localname"]["localname"] + = $this->_extractTitleFromLocalName($resourceUri); } } } @@ -322,8 +320,8 @@ private function _receiveTitles() * fetches all titles according the given array if Uris * * @param array resourceUris - */ - private function _fetchTitlesFromResourcePool($resourceUris) + */ + private function _fetchTitlesFromResourcePool($resourceUris) { $resourcePool = Erfurt_App::getInstance()->getResourcePool(); $resources = array(); @@ -338,7 +336,7 @@ private function _fetchTitlesFromResourcePool($resourceUris) foreach ($resources as $resourceUri => $resource) { $resourceDescription = $resource->getDescription(); $memoryModel->addStatements($resourceDescription); - $found = false ; + $found = false; foreach ($this->_titleProperties as $titleProperty) { $values = $memoryModel->getValues($resourceUri, $titleProperty); foreach ($values as $value) { @@ -358,8 +356,8 @@ private function _fetchTitlesFromResourcePool($resourceUris) * * @param string resourceUri * @return string title - */ - private function _extractTitleFromLocalName($resourceUri) + */ + private function _extractTitleFromLocalName($resourceUri) { $title = OntoWiki_Utils::contractNamespace($resourceUri); // not even namespace found? @@ -367,7 +365,7 @@ private function _extractTitleFromLocalName($resourceUri) $title = OntoWiki_Utils::getUriLocalPart($resourceUri); } return $title; - } + } private function _cache($resourceUri, $graphUri, $newValue = null) { From 3aeb9f231a2e2ad330116e3ad21f9b8f2cba9451 Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Wed, 4 Sep 2013 16:41:16 +0200 Subject: [PATCH 007/156] changing debug workflow on addResource --- application/classes/OntoWiki/Model/TitleHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/classes/OntoWiki/Model/TitleHelper.php b/application/classes/OntoWiki/Model/TitleHelper.php index 2eaae3089..7638fa018 100644 --- a/application/classes/OntoWiki/Model/TitleHelper.php +++ b/application/classes/OntoWiki/Model/TitleHelper.php @@ -188,7 +188,7 @@ public function addResource($resource) // throw exeption in debug mode only if (defined('_OWDEBUG')) { $logger = OntoWiki::getInstance()->logger; - $logger->error('Supplied resource ' . htmlentities('<' . $resource . '>') . ' is not a valid URI.'); + $logger->info('Supplied resource ' . htmlentities('<' . $resource . '>') . ' is not a valid URI.'); } } return $this; From cdf3bd07d8a2752e25aa55262ec32b35615a2382 Mon Sep 17 00:00:00 2001 From: Sebastian Tramp Date: Thu, 5 Sep 2013 09:48:24 +0200 Subject: [PATCH 008/156] forward submodule --- libraries/Erfurt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Erfurt b/libraries/Erfurt index 5eb998bbd..309a1be1c 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit 5eb998bbd1a98f637d0163bb13f853585414598a +Subproject commit 309a1be1c3e074a38b555a88d1bd233cfecd0e79 From 9f855aa0f8d857334e7c58061d663740b3b620ed Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Thu, 5 Sep 2013 09:56:54 +0200 Subject: [PATCH 009/156] Only Uris should be used as links in a List. BugFix --- application/classes/OntoWiki/Model/Instances.php | 1 + 1 file changed, 1 insertion(+) diff --git a/application/classes/OntoWiki/Model/Instances.php b/application/classes/OntoWiki/Model/Instances.php index 2ba94c590..736ed30a1 100644 --- a/application/classes/OntoWiki/Model/Instances.php +++ b/application/classes/OntoWiki/Model/Instances.php @@ -1237,6 +1237,7 @@ public function getValues() //initialising the value with the original content $revisedValue = $value['value']; + $link = null; //but we have to do something specific if the value is a resource if ($value['type'] == 'uri') { From 28652a4eb78b151df1c4b4a2eb96c9b4955b98ee Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Thu, 5 Sep 2013 12:23:13 +0200 Subject: [PATCH 010/156] re-enabling inverse show properties in table view but on a scaleable way --- application/classes/OntoWiki/Model/Instances.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/application/classes/OntoWiki/Model/Instances.php b/application/classes/OntoWiki/Model/Instances.php index 736ed30a1..41f98130e 100644 --- a/application/classes/OntoWiki/Model/Instances.php +++ b/application/classes/OntoWiki/Model/Instances.php @@ -1480,7 +1480,7 @@ public function getAllPropertiesQuery($inverse = false) */ public function getAllProperties($inverse = false) { - if ((empty($this->_resources) && $this->_resourcesUptodate) || ($inverse == true)) { + if ((empty($this->_resources) && $this->_resourcesUptodate)) { return array(); } @@ -1492,7 +1492,12 @@ public function getAllProperties($inverse = false) foreach ($this->_resources as $item) { $resourceUri = $item['value']; $resource = $pool->getResource($resourceUri, (string)$this->_model); - $resourceDescription = $resource->getDescription(); + + if ($inverse == false) { + $resourceDescription = $resource->getDescription(); + } else { + $resourceDescription = $resource->getDescription(array('fetchInverse' => true)); + } $memoryModel->addStatements($resourceDescription); } $predicates = $memoryModel->getPredicates(); From 9a6bbb73f6937dfad8783d920d3cf23bb80c3b62 Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Thu, 5 Sep 2013 13:49:35 +0200 Subject: [PATCH 011/156] removing subjects from inverse relations memory model --- application/classes/OntoWiki/Model/Instances.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/application/classes/OntoWiki/Model/Instances.php b/application/classes/OntoWiki/Model/Instances.php index 41f98130e..ce5933ba1 100644 --- a/application/classes/OntoWiki/Model/Instances.php +++ b/application/classes/OntoWiki/Model/Instances.php @@ -1495,10 +1495,16 @@ public function getAllProperties($inverse = false) if ($inverse == false) { $resourceDescription = $resource->getDescription(); + $memoryModel->addStatements($resourceDescription); } else { $resourceDescription = $resource->getDescription(array('fetchInverse' => true)); + $memoryModel->addStatements($resourceDescription); + //remove s from memory model to extract only inverse relations + //var_dump($memoryModel);die; + $memoryModel->removeS($resourceUri); + } - $memoryModel->addStatements($resourceDescription); + } $predicates = $memoryModel->getPredicates(); From 3721959502255a682a4a48eaa5c69e9d098d67ab Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Thu, 5 Sep 2013 14:21:16 +0200 Subject: [PATCH 012/156] removing comment --- application/classes/OntoWiki/Model/Instances.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/application/classes/OntoWiki/Model/Instances.php b/application/classes/OntoWiki/Model/Instances.php index ce5933ba1..f80b4263c 100644 --- a/application/classes/OntoWiki/Model/Instances.php +++ b/application/classes/OntoWiki/Model/Instances.php @@ -1500,11 +1500,8 @@ public function getAllProperties($inverse = false) $resourceDescription = $resource->getDescription(array('fetchInverse' => true)); $memoryModel->addStatements($resourceDescription); //remove s from memory model to extract only inverse relations - //var_dump($memoryModel);die; $memoryModel->removeS($resourceUri); - } - } $predicates = $memoryModel->getPredicates(); From 9faeec8b3287471322a84a257e135d506f529f48 Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Wed, 11 Sep 2013 12:00:44 +0200 Subject: [PATCH 013/156] prevent Bugs with wrong initalized class attributes --- application/classes/OntoWiki/Model/Instances.php | 2 +- application/classes/OntoWiki/Model/TitleHelper.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/application/classes/OntoWiki/Model/Instances.php b/application/classes/OntoWiki/Model/Instances.php index f80b4263c..f49d3b04f 100644 --- a/application/classes/OntoWiki/Model/Instances.php +++ b/application/classes/OntoWiki/Model/Instances.php @@ -68,7 +68,7 @@ class OntoWiki_Model_Instances extends OntoWiki_Model /** * all resources */ - protected $_resources; + protected $_resources = array(); /** * @var bool diff --git a/application/classes/OntoWiki/Model/TitleHelper.php b/application/classes/OntoWiki/Model/TitleHelper.php index 7638fa018..931771c5f 100644 --- a/application/classes/OntoWiki/Model/TitleHelper.php +++ b/application/classes/OntoWiki/Model/TitleHelper.php @@ -58,7 +58,7 @@ class OntoWiki_Model_TitleHelper * * @var array */ - protected $_resources = null; + protected $_resources = array(); /** * Resource query object @@ -286,7 +286,7 @@ public function getTitle($resourceUri, $language = null) */ public function reset() { - $this->_resources = null; + $this->_resources = array(); } /** From 1df1356e75751aad8b0e746b643b333cbacf7bfe Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Wed, 11 Sep 2013 18:05:08 +0200 Subject: [PATCH 014/156] change sameTerm Filter into Equals constraint in NavigationController --- extensions/navigation/NavigationController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/navigation/NavigationController.php b/extensions/navigation/NavigationController.php index 747a3667c..c9bad0017 100644 --- a/extensions/navigation/NavigationController.php +++ b/extensions/navigation/NavigationController.php @@ -892,7 +892,7 @@ protected function _buildSubCheckQuery($uri, $setup) );*/ // add filter $elements[] = new Erfurt_Sparql_Query2_Filter( - new Erfurt_Sparql_Query2_sameTerm($searchVar, new Erfurt_Sparql_Query2_IriRef($uri)) + new Erfurt_Sparql_Query2_Equals($searchVar, new Erfurt_Sparql_Query2_IriRef($uri)) ); $query->addElements($elements); $query->setLimit(1); From ef4281bfc1ce5bd504b23306cd61024e39d81066 Mon Sep 17 00:00:00 2001 From: Tim Ermilov Date: Thu, 17 Oct 2013 14:45:59 +0200 Subject: [PATCH 015/156] replace sameterm with equals in navbox --- extensions/navigation/NavigationHelper.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/navigation/NavigationHelper.php b/extensions/navigation/NavigationHelper.php index b43429925..78205ebf2 100644 --- a/extensions/navigation/NavigationHelper.php +++ b/extensions/navigation/NavigationHelper.php @@ -130,7 +130,7 @@ public static function getInstancesTriples($uri, $setup) $uriElem = new Erfurt_Sparql_Query2_IriRef($uri); $filterUris[] = $uriElem; - $filterType[] = new Erfurt_Sparql_Query2_sameTerm($classVar, $uriElem); + $filterType[] = new Erfurt_Sparql_Query2_Equals($classVar, $uriElem); // add uri to counted $counted[] = $uri; @@ -317,7 +317,7 @@ public static function getSearchTriples($setup, $forImplicit = false, $backend = foreach ($setup->config->hierarchyTypes as $type) { $uriElem = new Erfurt_Sparql_Query2_IriRef($type); $filterUris[] = $uriElem; - $filterType[] = new Erfurt_Sparql_Query2_sameTerm($classVar, $uriElem); + $filterType[] = new Erfurt_Sparql_Query2_Equals($classVar, $uriElem); } $owApp = OntoWiki::getInstance(); From 6b2ff32fdc46e8a317b06ac2dd1667ad077117a7 Mon Sep 17 00:00:00 2001 From: Tim Ermilov Date: Mon, 21 Oct 2013 18:57:48 +0200 Subject: [PATCH 016/156] use IN where possible --- extensions/navigation/NavigationController.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/extensions/navigation/NavigationController.php b/extensions/navigation/NavigationController.php index c9bad0017..ef78565f2 100644 --- a/extensions/navigation/NavigationController.php +++ b/extensions/navigation/NavigationController.php @@ -279,6 +279,7 @@ protected function _queryNavigationEntries($setup) 'NavigationController _queryNavigationEntries Query: ' . $query->__toString() ); //*/ + // // get extended results $allResults = $this->_model->sparqlQuery( @@ -891,9 +892,17 @@ protected function _buildSubCheckQuery($uri, $setup) $classVar );*/ // add filter - $elements[] = new Erfurt_Sparql_Query2_Filter( - new Erfurt_Sparql_Query2_Equals($searchVar, new Erfurt_Sparql_Query2_IriRef($uri)) - ); + if ($this->_store->isInSyntaxSupported()) { // e.g. Virtuoso + $elements[] = new Erfurt_Sparql_Query2_Filter( + new Erfurt_Sparql_Query2_InExpression($searchVar, array(new Erfurt_Sparql_Query2_IriRef($uri))) + ); + } else { // sameTerm || sameTerm ... as supported by EfZendDb adapter + // add filter + $elements[] = new Erfurt_Sparql_Query2_Filter( + new Erfurt_Sparql_Query2_Equals($searchVar, new Erfurt_Sparql_Query2_IriRef($uri)) + ); + } + // build $query->addElements($elements); $query->setLimit(1); From a233bf10ce939e96537267107ae0e2b2dcffc344 Mon Sep 17 00:00:00 2001 From: Tim Ermilov Date: Wed, 23 Oct 2013 14:36:54 +0200 Subject: [PATCH 017/156] optimize offset/limit usage & refactor js code a bit --- .../navigation/NavigationController.php | 3 +- extensions/navigation/navigation.js | 551 +++++++++--------- 2 files changed, 282 insertions(+), 272 deletions(-) diff --git a/extensions/navigation/NavigationController.php b/extensions/navigation/NavigationController.php index ef78565f2..7ba21c7b3 100644 --- a/extensions/navigation/NavigationController.php +++ b/extensions/navigation/NavigationController.php @@ -671,7 +671,8 @@ protected function _buildQuery($setup, $forImplicit = false) // set offset if (isset($setup->state->offset) && $setup->state->lastEvent == 'more') { - $query->setLimit($this->_limit + $setup->state->offset + 1); + $query->setOffset($setup->state->offset); + $query->setLimit($this->_limit + 1); } else { $query->setLimit($this->_limit + 1); } diff --git a/extensions/navigation/navigation.js b/extensions/navigation/navigation.js index 2fc64f071..d7b19472c 100644 --- a/extensions/navigation/navigation.js +++ b/extensions/navigation/navigation.js @@ -6,267 +6,273 @@ * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) * */ +(function(){ + /** + * The main document.ready assignments and code + */ + $(document).ready(function() { + /* some used variables */ + navigationContainer = $('#navigation-content'); + navigationInput = $('#navigation-input'); + navigationWindow = $('#navigation'); + navigationExploreUrl = urlBase + 'navigation/explore'; + navigationMoreUrl = urlBase + 'navigation/more'; + navigationSaveUrl = urlBase + 'navigation/savestate'; + navigationLoadUrl = urlBase + 'navigation/loadstate'; + navigationListUrl = urlBase + 'list'; + navSetup = ''; + + navigationInput.livequery('keypress', function(event) { + // do not create until user pressed enter + if ((event.which === 13) && (event.currentTarget.value !== '') ) { + navigationEvent('search', event.currentTarget.value); + $(event.currentTarget).val(''); + return false; + } else if ( event.which === 13 ) { + return false; + } + return true; + }); -/** - * The main document.ready assignments and code - */ -$(document).ready(function() { - /* some used variables */ - navigationContainer = $('#navigation-content'); - navigationInput = $("#navigation-input"); - navigationWindow = $("#navigation"); - navigationExploreUrl = urlBase + 'navigation/explore'; - navigationMoreUrl = urlBase + 'navigation/more'; - navigationSaveUrl = urlBase + 'navigation/savestate'; - navigationLoadUrl = urlBase + 'navigation/loadstate'; - navigationListUrl = urlBase + 'list'; - navSetup = ''; - - navigationInput.livequery('keypress', function(event) { - // do not create until user pressed enter - if ((event.which == 13) && (event.currentTarget.value != '') ) { - navigationEvent('search', event.currentTarget.value); - $(event.currentTarget).val(''); - return false; - } else if ( event.which == 13 ) { - return false; + if( typeof navigationStateSetup !== 'undefined'){ + navigationSetup = navigationStateSetup; } - return true; }); - - if( typeof navigationStateSetup != 'undefined'){ - navigationSetup = navigationStateSetup; - } -}); -/** - * Setups the Navgiation Parameters and start the request - */ -function navigationEvent (navEvent, eventParameter) { - var setup, navType; - - /* init config when not existing or resetted by user */ - if ( ( typeof navigationSetup == 'undefined' ) || (navEvent == 'reset') || (navEvent == 'setType') ) { - // set the default or setType config - if (navEvent == 'setType') { - navType = eventParameter; + /** + * Setups the Navgiation Parameters and start the request + */ + var navigationEvent = function (navEvent, eventParameter) { + var setup, navType; + + /* init config when not existing or resetted by user */ + if ((typeof navigationSetup === 'undefined') || (navEvent === 'reset') || (navEvent === 'setType')) { + // set the default or setType config + if (navEvent === 'setType') { + navType = eventParameter; + } else { + navType = navigationConfig.defaults.config; + } + var config = navigationConfig.config[navType]; + + // the limit + var limit = navigationConfig.defaults.limit; + + // set the state + var state = {}; + state.limit = limit; + state.path = []; + // pack state and config into setup value for post + setup = {'state': state, 'config': config}; } else { - navType = navigationConfig['defaults']['config']; + setup = navigationSetup; } - var config = navigationConfig['config'][navType]; - - // the limit - var limit = navigationConfig['defaults']['limit']; - - // set the state - var state = {}; - state['limit'] = limit; - state['path'] = new Array; - // pack state and config into setup value for post - setup = {'state': state, 'config': config}; - } else { - setup = navigationSetup; - } - // delete old search string - delete(setup['state']['searchString']); + // delete old search string + delete(setup.state.searchString); - // nav event - switch (navEvent) { + // nav event + switch (navEvent) { case 'init': // save hidden, implicit and empty to state - if(typeof navigationStateSetup != 'undefined'){ - if(typeof navigationStateSetup['state']['showEmpty'] != 'undefined'){ - setup['state']['showEmpty'] = navigationStateSetup['state']['showEmpty']; + if(typeof navigationStateSetup !== 'undefined'){ + if(typeof navigationStateSetup.state.showEmpty !== 'undefined'){ + setup.state.showEmpty = navigationStateSetup.state.showEmpty; } - if(typeof navigationStateSetup['state']['showImplicit'] != 'undefined'){ - setup['state']['showImplicit'] = navigationStateSetup['state']['showImplicit']; + if(typeof navigationStateSetup.state.showImplicit !== 'undefined'){ + setup.state.showImplicit = navigationStateSetup.state.showImplicit; } - if(typeof navigationStateSetup['state']['showHidden'] != 'undefined'){ - setup['state']['showHidden'] = navigationStateSetup['state']['showHidden']; + if(typeof navigationStateSetup.state.showHidden !== 'undefined'){ + setup.state.showHidden = navigationStateSetup.state.showHidden; } }else{ - if(setup['config']['showEmptyElements'] == '1'){ - setup['state']['showEmpty'] = true; + if(setup.config.showEmptyElements === '1'){ + setup.state.showEmpty = true; } - if(setup['config']['showImplicitElements'] == '1'){ - setup['state']['showImplicit'] = true; + if(setup.config.showImplicitElements === '1'){ + setup.state.showImplicit = true; } - if(setup['config']['showHiddenElements'] == '1'){ - setup['state']['showHidden'] = true; + if(setup.config.showHiddenElements === '1'){ + setup.state.showHidden = true; } } // remove init sign and setup module title navigationContainer.removeClass('init-me-please'); - $('#navigation h1.title').text('Navigation: '+setup['config']['title']); + $('#navigation h1.title').text('Navigation: '+setup.config.title); break; case 'reset': - if(setup['config']['showEmptyElements'] == '1'){ - setup['state']['showEmpty'] = true; + if(setup.config.showEmptyElements === '1'){ + setup.state.showEmpty = true; } - if(setup['config']['showImplicitElements'] == '1'){ - setup['state']['showImplicit'] = true; + if(setup.config.showImplicitElements === '1'){ + setup.state.showImplicit = true; } - if(setup['config']['showHiddenElements'] == '1'){ - setup['state']['showHidden'] = true; + if(setup.config.showHiddenElements === '1'){ + setup.state.showHidden = true; } case 'setType': // remove init sign and setup module title navigationContainer.removeClass('init-me-please'); - $('#navigation h1.title').text('Navigation: '+setup['config']['title']); + $('#navigation h1.title').text('Navigation: '+setup.config.title); break; case 'refresh': break; case 'showResourceList': - setup['state']['parent'] = eventParameter; + setup.state.parent = eventParameter; break; case 'navigateDeeper': // save path element - if ( typeof setup['state']['parent'] != 'undefined' ) { - setup['state']['path'].push(setup['state']['parent']); + if ( typeof setup.state.parent !== 'undefined' ) { + setup.state.path.push(setup.state.parent); } // set new parent - setup['state']['parent'] = eventParameter; + setup.state.parent = eventParameter; break; - + case 'navigateHigher': // count path elements - var pathlength = setup['state']['path'].length; - if ( typeof setup['state']['parent'] == 'undefined' ) { + var pathlength = setup.state.path.length; + if ( typeof setup.state.parent === 'undefined' ) { // we are at root level, so nothing higher than here return; } - if (pathlength == 0) { + if (pathlength === 0) { // we are at the first sublevel (so we go to root) - delete(setup['state']['parent']); + delete(setup.state.parent); } else { // we are somewhere deeper ... // set parent to the last path element - setup['state']['parent'] = setup['state']['path'][pathlength-1]; + setup.state.parent = setup.state.path[pathlength-1]; // and delete the last path element - setup['state']['path'].pop(); + setup.state.path.pop(); } break; case 'navigateRoot': // we are at root level, so nothing higher than here // exception: after a search, it should be also rootable - if ( ( typeof setup['state']['parent'] == 'undefined' ) - && ( setup['state']['lastEvent'] != 'search' ) ){ + if (typeof setup.state.parent === 'undefined' && setup.state.lastEvent !== 'search'){ return; } - delete(setup['state']['parent']); - setup['state']['path'] = new Array; + delete(setup.state.parent); + setup.state.path = []; break; - + case 'search': - setup['state']['searchString'] = eventParameter; + setup.state.searchString = eventParameter; break; case 'setLimit': - setup['state']['limit'] = eventParameter; - delete(setup['state']['offset']); + setup.state.limit = eventParameter; + delete(setup.state.offset); break; case 'toggleHidden': - if ( typeof setup['state']['showHidden'] != 'undefined' ) { - delete(setup['state']['showHidden']); - $("a[href='javascript:navigationEvent(\'toggleHidden\')']").text("Show Hidden Elements"); + if (typeof setup.state.showHidden !== 'undefined') { + delete(setup.state.showHidden); + $('a[href=\'javascript:navigationEvent(\'toggleHidden\')\']').text('Show Hidden Elements'); } else { - setup['state']['showHidden'] = true; - $("a[href='javascript:navigationEvent(\'toggleHidden\')']").text("Hide Hidden Elements"); + setup.state.showHidden = true; + $('a[href=\'javascript:navigationEvent(\'toggleHidden\')\']').text('Hide Hidden Elements'); } break; case 'toggleEmpty': // if no state is set, use default value from config - if ( typeof setup['state']['showEmpty'] == 'undefined' ) { - if ( typeof setup['config']['showEmptyElements'] != 'undefined' ) { - setup['state']['showEmpty'] = setup['config']['showEmptyElements']; - if(setup['state']['showEmpty'] == true){ - $("a[href='javascript:navigationEvent(\'toggleEmpty\')']").text("Hide Empty Elements"); + if ( typeof setup.state.showEmpty === 'undefined' ) { + if ( typeof setup.config.showEmptyElements !== 'undefined' ) { + setup.state.showEmpty = setup.config.showEmptyElements; + if(setup.state.showEmpty === true){ + $('a[href=\'javascript:navigationEvent(\'toggleEmpty\')\']').text('Hide Empty Elements'); } } else { - setup['state']['showEmpty'] = true; - $("a[href='javascript:navigationEvent(\'toggleEmpty\')']").text("Hide Empty Elements"); + setup.state.showEmpty = true; + $('a[href=\'javascript:navigationEvent(\'toggleEmpty\')\']').text('Hide Empty Elements'); } - } else if (setup['state']['showEmpty'] == false) { - setup['state']['showEmpty'] = true; - $("a[href='javascript:navigationEvent(\'toggleEmpty\')']").text("Hide Empty Elements"); + } else if (setup.state.showEmpty === false) { + setup.state.showEmpty = true; + $('a[href=\'javascript:navigationEvent(\'toggleEmpty\')\']').text('Hide Empty Elements'); } else { - setup['state']['showEmpty'] = false; - $("a[href='javascript:navigationEvent(\'toggleEmpty\')']").text("Show Empty Elements"); + setup.state.showEmpty = false; + $('a[href=\'javascript:navigationEvent(\'toggleEmpty\')\']').text('Show Empty Elements'); } break; case 'toggleImplicit': // if no state is set, use default value from config - if ( typeof setup['state']['showImplicit'] == 'undefined' ) { - if ( typeof setup['config']['showImplicitElements'] != 'undefined' ) { - setup['state']['showImplicit'] = setup['config']['showImplicitElements']; - if(setup['state']['showImplicit'] == true){ - $("a[href='javascript:navigationEvent(\'toggleImplicit')']").text("Hide Implicit Elements"); - }else{ - $("a[href='javascript:navigationEvent(\'toggleImplicit')']").text("Show Implicit Elements"); + if (typeof setup.state.showImplicit === 'undefined') { + if (typeof setup.config.showImplicitElements !== 'undefined') { + setup.state.showImplicit = setup.config.showImplicitElements; + if (setup.state.showImplicit === true) { + $('a[href=\'javascript:navigationEvent(\'toggleImplicit\')\']').text('Hide Implicit Elements'); + } else { + $('a[href=\'javascript:navigationEvent(\'toggleImplicit\')\']').text('Show Implicit Elements'); } } else { - setup['state']['showImplicit'] = true; - $("a[href='javascript:navigationEvent(\'toggleImplicit')']").text("Hide Implicit Elements"); + setup.state.showImplicit = true; + $('a[href=\'javascript:navigationEvent(\'toggleImplicit\')\']').text('Hide Implicit Elements'); } - } else if (setup['state']['showImplicit'] == false) { - setup['state']['showImplicit'] = true; - $("a[href='javascript:navigationEvent(\'toggleImplicit')']").text("Hide Implicit Elements"); + } else if (setup.state.showImplicit === false) { + setup.state.showImplicit = true; + $('a[href=\'javascript:navigationEvent(\'toggleImplicit\')\']').text('Hide Implicit Elements'); } else { - setup['state']['showImplicit'] = false; - $("a[href='javascript:navigationEvent(\'toggleImplicit')']").text("Show Implicit Elements"); + setup.state.showImplicit = false; + $('a[href=\'javascript:navigationEvent(\'toggleImplicit\')\']').text('Show Implicit Elements'); } break; case 'more': - if( setup['state']['offset'] !== undefined ){ - setup['state']['offset'] = setup['state']['offset']*2; + if( setup.state.offset !== undefined ){ + setup.state.offset += 10; }else{ - setup['state']['offset'] = parseInt(setup['state']['limit']) + 10; + setup.state.offset = parseInt(setup.state.limit, 10); } - setup['state']['limit'] = setup['state']['offset']; + setup.state.limit = setup.state.offset; break; case 'setSort': - setup['state']['sorting'] = eventParameter; + setup.state.sorting = eventParameter; break; default: alert('error: unknown navigation event: '+navEvent); return; - } - - setup['state']['lastEvent'] = navEvent; - navigationSetup = setup; - navSetup = setup; - navigationLoad (navEvent, setup); - return; -} + } -/** - * request the navigation - */ -function navigationLoad (navEvent, setup) { - if (typeof setup == 'undefined') { - alert('error: No navigation setup given, but navigationLoad requested'); + setup.state.lastEvent = navEvent; + navigationSetup = setup; + navSetup = setup; + navigationLoad (navEvent, setup); return; - } + }; + // expose + window.navigationEvent = navigationEvent; + + /** + * request the navigation + */ + var navigationLoad = function (navEvent, setup) { + if (typeof setup === 'undefined') { + alert('error: No navigation setup given, but navigationLoad requested'); + return; + } + + // preparation of a callback function + var cbAfterLoad = function(){ + $.post(navigationExploreUrl, {setup: $.toJSON(setup)}, + function (data) { + //alert(data); + // only clear when there's no offset + if(typeof setup.state.offset === 'undefined' || setup.state.offset === 0) { + navigationContainer.empty(); + } else if (setup.state.lastEvent === 'init') { // remove "show more" button on init event if we have offset + $('a.minibutton', navigationContainer).remove(); + } + navigationContainer.append(data); + // remove the processing status + navigationInput.removeClass('is-processing'); - // preparation of a callback function - var cbAfterLoad = function(){ - $.post(navigationExploreUrl, {setup: $.toJSON(setup)}, - function (data) { - //alert(data); - navigationContainer.empty(); - navigationContainer.append(data); - // remove the processing status - navigationInput.removeClass('is-processing'); - - switch (navEvent) { + switch (navEvent) { case 'more': navigationMore.remove(); // remove the processing status @@ -282,20 +288,20 @@ function navigationLoad (navEvent, setup) { navigationContainer.css('marginLeft', '100%'); navigationContainer.animate({marginLeft:'0px'},'slow'); break; - } + } - navigationPrepareList(); - } - ); - } + navigationPrepareList(); + } + ); + }; - // first we set the processing status - navigationInput.addClass('is-processing'); - navigationContainer.css('overflow', 'hidden'); + // first we set the processing status + navigationInput.addClass('is-processing'); + navigationContainer.css('overflow', 'hidden'); - switch (navEvent) { + switch (navEvent) { case 'more': - navigationMore = $("#naviganion-more"); + navigationMore = $('#naviganion-more'); navigationMore.html('    '); navigationMore.addClass('is-processing'); case 'refresh': @@ -311,112 +317,115 @@ function navigationLoad (navEvent, setup) { default: //navigationContainer.slideUp('fast', cbAfterLoad); cbAfterLoad(); - } + } - return ; -} + return ; + }; -function navigationPrepareToggles(){ - if (navigationSetup['state']['showHidden'] == true ) { - $("a[href='javascript:navigationEvent(\'toggleHidden\')']").text("Hide Hidden Elements"); - } else { - $("a[href='javascript:navigationEvent(\'toggleHidden\')']").text("Show Hidden Elements"); - } + var navigationPrepareToggles = function(){ + if (navigationSetup.state.showHidden === true ) { + $('a[href=\'javascript:navigationEvent(\'toggleHidden\')\']').text('Hide Hidden Elements'); + } else { + $('a[href=\'javascript:navigationEvent(\'toggleHidden\')\']').text('Show Hidden Elements'); + } - // if no state is set, use default value from config - if (navigationSetup['state']['showEmpty'] == true) { - $("a[href='javascript:navigationEvent(\'toggleEmpty\')']").text("Hide Empty Elements"); - } else { - $("a[href='javascript:navigationEvent(\'toggleEmpty\')']").text("Show Empty Elements"); - } + // if no state is set, use default value from config + if (navigationSetup.state.showEmpty === true) { + $('a[href=\'javascript:navigationEvent(\'toggleEmpty\')\']').text('Hide Empty Elements'); + } else { + $('a[href=\'javascript:navigationEvent(\'toggleEmpty\')\']').text('Show Empty Elements'); + } - // if no state is set, use default value from config - if (navigationSetup['state']['showImplicit'] == true) { - $("a[href='javascript:navigationEvent(\'toggleImplicit')']").text("Hide Implicit Elements"); - } else { - $("a[href='javascript:navigationEvent(\'toggleImplicit')']").text("Show Implicit Elements"); - } -} + // if no state is set, use default value from config + if (navigationSetup.state.showImplicit === true) { + $('a[href=\'javascript:navigationEvent(\'toggleImplicit\')\']').text('Hide Implicit Elements'); + } else { + $('a[href=\'javascript:navigationEvent(\'toggleImplicit\')\']').text('Show Implicit Elements'); + } + }; + + /* + * This function creates navigation events + */ + var navigationPrepareList = function() { + //saveState(); + // the links to deeper navigation entries + $('.navDeeper').click(function(event) { + navigationEvent('navigateDeeper', $(this).parent().attr('about')); + return false; + }); -/* - * This function creates navigation events - */ -function navigationPrepareList () { - //saveState(); - - // the links to deeper navigation entries - $('.navDeeper').click(function(event) { - navigationEvent('navigateDeeper', $(this).parent().attr('about')); - return false; - }); + // the link to the root + $('.navFirst').click(function(event){ + navigationEvent('navigateRoot'); + return false; + }); - // the link to the root - $('.navFirst').click(function(event){ - navigationEvent('navigateRoot'); - return false; - }) - - // the link to higher level - $('.navBack').click(function(event){ - navigationEvent('navigateHigher'); - return false; - }) - - // the link to the instance list - $('.navList').click(function(event){ - window.location.href = $(this).attr('href'); - return false; - }) - - navigationPrepareToggles(); -} - -/* - * Starts RDFauthor with a specific class init depending on position and config - */ -function navigationAddElement(){ - // we use the first configured navigationType to create - var classResource = navigationSetup['config']['hierarchyTypes'][0]; - - // callback which manipulates the data given from the init json service - dataCallback = function(data) { - var config = navigationSetup['config']; // configured navigation setup - var state = navigationSetup['state']; // current navigation state - - // subjectUri is the main resource - for (var newElementUri in data) {break;}; - - // check for parent element - if (typeof state['parent'] != 'undefined') { - var parentUri = state['parent']; - var relations = config['hierarchyRelations']; // configured hierarchy relations - - if (typeof relations['in'] != 'undefined') { - // check for hierarchy relations (incoming eg. subClassOf) - var propertyUri = relations['in'][0] - - // TODO: this should be done by a future RDF/JSON API - data[newElementUri][propertyUri] = [ {"type" : "uri" , "value" : parentUri} ]; - } else if (typeof relations['out'] != 'undefined') { - // check for hierarchy relations (outgoing eg. skos:narrower) - var propertyUri = relations['out'][0]; - - // TODO: this should be done by a future RDF/JSON API - var newStatement = {}; - newStatement[propertyUri] = [{ - "hidden": true , - "type" : "uri" , - "value" : newElementUri - }]; - data[parentUri] = newStatement; + // the link to higher level + $('.navBack').click(function(event){ + navigationEvent('navigateHigher'); + return false; + }); + + // the link to the instance list + $('.navList').click(function(event){ + window.location.href = $(this).attr('href'); + return false; + }); + + navigationPrepareToggles(); + }; + // expose + window.navigationPrepareList = navigationPrepareList; + + /* + * Starts RDFauthor with a specific class init depending on position and config + */ + var navigationAddElement = function(){ + // we use the first configured navigationType to create + var classResource = navigationSetup.config.hierarchyTypes[0]; + + // callback which manipulates the data given from the init json service + dataCallback = function(data) { + var config = navigationSetup.config; // configured navigation setup + var state = navigationSetup.state; // current navigation state + + // subjectUri is the main resource + for (var newElementUri in data) { + break; } - } - // dont forget to return the manipulated data - return data; - } + // check for parent element + if (typeof state.parent !== 'undefined') { + var parentUri = state.parent; + var relations = config.hierarchyRelations; // configured hierarchy relations + + if (typeof relations.in !== 'undefined') { + // check for hierarchy relations (incoming eg. subClassOf) + var propertyUri = relations.in[0]; + + // TODO: this should be done by a future RDF/JSON API + data[newElementUri][propertyUri] = [ {'type' : 'uri' , 'value' : parentUri} ]; + } else if (typeof relations.out !== 'undefined') { + // check for hierarchy relations (outgoing eg. skos:narrower) + var propertyUri = relations.out[0]; + + // TODO: this should be done by a future RDF/JSON API + var newStatement = {}; + newStatement[propertyUri] = [{ + 'hidden': true , + 'type' : 'uri' , + 'value' : newElementUri + }]; + data[parentUri] = newStatement; + } + } + + // dont forget to return the manipulated data + return data; + }; - // start RDFauthor - createInstanceFromClassURI(classResource, dataCallback); - -} + // start RDFauthor + createInstanceFromClassURI(classResource, dataCallback); + } +})(); \ No newline at end of file From 852daa07087bdfc27db821fa5ec7d51b6471553d Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Wed, 22 Jan 2014 23:21:20 +0100 Subject: [PATCH 018/156] Add prependTitleProperty again, remove unused methods and keep a single instance of erfurt --- .../classes/OntoWiki/Model/TitleHelper.php | 72 ++++++++++--------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/application/classes/OntoWiki/Model/TitleHelper.php b/application/classes/OntoWiki/Model/TitleHelper.php index 931771c5f..fe456a024 100644 --- a/application/classes/OntoWiki/Model/TitleHelper.php +++ b/application/classes/OntoWiki/Model/TitleHelper.php @@ -74,6 +74,13 @@ class OntoWiki_Model_TitleHelper */ protected $_store = null; + /** + * Erfurt store object + * + * @var Erfurt_App + */ + protected $_erfurtApp = null; + /** * titleProperties from configuration * @@ -98,10 +105,12 @@ public function __construct(Erfurt_Rdf_Model $model = null, Erfurt_Store $store $this->_model = $model; } + $this->_erfurtApp = Erfurt_App::getInstance(); + if (null !== $store) { $this->_store = $store; } else { - $this->_store = Erfurt_App::getInstance()->getStore(); + $this->_store = $this->_erfurtApp->getStore(); } if (null == $config) { @@ -281,6 +290,33 @@ public function getTitle($resourceUri, $language = null) return $title; } + /** + * Add a new title property on top of the list (most important) of title properties + * + * @param $propertyUri a string with the URI of the property to add + */ + public function prependTitleProperty($propertyUri) + { + // check if we have a valid URI + if (Erfurt_Uri::check($propertyUri)) { + // remove the property from the list if it already exist + foreach ($this->_titleProperties as $key => $value) { + if ($value == $propertyUri) { + unset($this->_titleProperties[$key]); + } + } + + // rewrite the array + $this->_titleProperties = array_values($this->_titleProperties); + + // prepend the new URI + array_unshift($this->_titleProperties, $propertyUri); + + // reset the TitleHelper to fetch resources with new title properties + $this->reset(); + } + } + /** * Resets the title helper, emptying all resources, results and queries stored */ @@ -323,7 +359,7 @@ private function _receiveTitles() */ private function _fetchTitlesFromResourcePool($resourceUris) { - $resourcePool = Erfurt_App::getInstance()->getResourcePool(); + $resourcePool = $this->_erfurtApp->getResourcePool(); $resources = array(); if (!empty($this->_model)) { $modelUri = $this->_model->getModelIri(); @@ -343,7 +379,7 @@ private function _fetchTitlesFromResourcePool($resourceUris) if (!empty($value['lang'])) { $language = $value['lang']; } else { - $language = ""; + $language = ''; } $this->_resources[$resourceUri][$titleProperty][$language] = $value['value']; } @@ -366,34 +402,4 @@ private function _extractTitleFromLocalName($resourceUri) } return $title; } - - private function _cache($resourceUri, $graphUri, $newValue = null) - { - $cacheBucketId = md5(serialize($this->_titleProperties)); - if (null !== $newValue) { - if (!isset(self::$_titleCache[$cacheBucketId])) { - self::$_titleCache[$cacheBucketId] = array(); - } - if (!isset(self::$_titleCache[$cacheBucketId][$graphUri])) { - self::$_titleCache[$cacheBucketId][$graphUri] = array(); - } - self::$_titleCache[$cacheBucketId][$graphUri][$resourceUri] = $newValue; - - return true; - } - - if (isset(self::$_titleCache[$cacheBucketId][$graphUri][$resourceUri])) { - return self::$_titleCache[$cacheBucketId][$graphUri][$resourceUri]; - } - - return false; - } - - private function _resetCache() - { - $cacheBucketId = md5(serialize($this->_titleProperties)); - if (isset(self::$_titleCache[$cacheBucketId])) { - self::$_titleCache[$cacheBucketId] = array(); - } - } } From cb2173dbf8c106af90fe35e7e2cbb9f3159d6df7 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Wed, 22 Jan 2014 23:53:43 +0100 Subject: [PATCH 019/156] Make new TitleHelper aware of languages --- .../classes/OntoWiki/Model/TitleHelper.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/application/classes/OntoWiki/Model/TitleHelper.php b/application/classes/OntoWiki/Model/TitleHelper.php index fe456a024..15e51d1df 100644 --- a/application/classes/OntoWiki/Model/TitleHelper.php +++ b/application/classes/OntoWiki/Model/TitleHelper.php @@ -270,6 +270,14 @@ public function getTitle($resourceUri, $language = null) $this->addResource($resourceUri); } + // prepend the language that is asked for to the array + // of languages we will look for + $languages = $this->_languages; + if (null !== $language) { + array_unshift($languages, (string)$language); + } + $languages = array_values(array_unique($languages)); + //Have a look if we have already a title for the given resourceUri if ($this->_resources[$resourceUri] === null ) { $this->_receiveTitles(); @@ -278,12 +286,11 @@ public function getTitle($resourceUri, $language = null) $title = $resourceUri; $titles = $this->_resources[$resourceUri]; - $found = false; - foreach ($this->_titleProperties as $titleProperty) { - foreach ($this->_languages as $language) { - if (!empty($titles[$titleProperty][$language]) && $found == false) { + foreach ($languages as $language) { + foreach ($this->_titleProperties as $titleProperty) { + if (isset($titles[$titleProperty][$language]) && !empty($titles[$titleProperty][$language])) { $title = $titles[$titleProperty][$language]; - break; + break(2); } } } @@ -346,7 +353,7 @@ private function _receiveTitles() //If we dont find titles then we extract them from LocalName foreach ($this->_resources as $resourceUri => $resource) { if ($resource == null) { - $this->_resources[$resourceUri]["localname"]["localname"] + $this->_resources[$resourceUri]['localname']['localname'] = $this->_extractTitleFromLocalName($resourceUri); } } From 686b3edfa8d1a48d8a0b8251e7095a804dd40721 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Thu, 23 Jan 2014 16:47:42 +0100 Subject: [PATCH 020/156] Add getResources() call and unify testShownPropertiesAddTitles --- .../Model/InstancesIntegrationTest.php | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php b/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php index 9478ba2ea..c14d7bbab 100644 --- a/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php +++ b/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php @@ -31,9 +31,10 @@ class OntoWiki_Model_InstancesIntegrationTest extends Erfurt_TestCase public function setUp() { $this->markTestNeedsDatabase(); - $this->_store = $this->getStore(); $this->authenticateDbUser(); + $this->_store = $this->getStore(); + //create model $model = $this->_store->getNewModel($this->_modelUri, '', Erfurt_Store::MODEL_TYPE_OWL, false); @@ -44,6 +45,8 @@ public function setUp() $this->addTestData(); + $this->_instances->getResources(); + parent::setUp(); } @@ -225,24 +228,17 @@ public function testOrderURI() $this->assertEquals($r[0]['uri'], 'http://model.org/model#i2'); } - public function testShownPropertiesAdd() + /** + * + */ + public function testShownPropertiesAddTitles() { //add $r = $this->_instances->addShownProperty("http://abc"); //test chaining $this->assertSame($this->_instances, $r); - - return $this->_instances; - } - - /** - * - * @depends testShownPropertiesAdd - */ - public function testShownPropertiesAddTitles(OntoWiki_Model_Instances $i) - { //verify triple in value query - $propertiesWithTitles = $i->getShownProperties(); + $propertiesWithTitles = $this->_instances->getShownProperties(); $this->assertCount(2, $propertiesWithTitles); } From 7d0a92a9b2b5127ee9f5a66a294f8afac5849d39 Mon Sep 17 00:00:00 2001 From: Sebastian Tramp Date: Fri, 31 Jan 2014 16:30:04 +0100 Subject: [PATCH 021/156] forward version id --- application/config/default.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/config/default.ini b/application/config/default.ini index 11b7e970f..7518fcd57 100644 --- a/application/config/default.ini +++ b/application/config/default.ini @@ -94,7 +94,7 @@ descriptionHelper.properties.skosEditorialNote = "http://www.w3.org/2004/02/skos ; Version info ;; version.label = "OntoWiki" -version.number = "0.9.11" +version.number = "0.9.12" version.suffix = "git" ;; From 27116c96b73449eaccac371677e36d74e93f19a9 Mon Sep 17 00:00:00 2001 From: Andreas Nareike Date: Fri, 7 Feb 2014 15:46:59 +0100 Subject: [PATCH 022/156] Add a help text for the filter module Add a help menu that displays a help text for the default search of the filter module as changed in Erfurt commit 12fccf078a7adbedaa72ccbc28cf1d594596332c This commit also includes the German translation of the help text. --- extensions/filter/FilterModule.php | 4 +++ extensions/filter/resources/filter.js | 34 +++++++++++-------- .../filter/templates/filter/filter.phtml | 21 +++++++++--- extensions/translations/de/core.csv | 11 ++++++ extensions/translations/en/core.csv | 8 +++++ 5 files changed, 58 insertions(+), 20 deletions(-) diff --git a/extensions/filter/FilterModule.php b/extensions/filter/FilterModule.php index 56f5be9e0..1c06edf4c 100644 --- a/extensions/filter/FilterModule.php +++ b/extensions/filter/FilterModule.php @@ -94,8 +94,12 @@ public function getMenu() $edit->setEntry('Add', 'javascript:showAddFilterBox()') ->setEntry('Remove all', 'javascript:removeAllFilters()'); + $help = new OntoWiki_Menu(); + $help->setEntry('Toggle help', 'javascript:toggleHelp()'); + $main = new OntoWiki_Menu(); $main->setEntry('Edit', $edit); + $main->setEntry('Help', $help); return $main; } diff --git a/extensions/filter/resources/filter.js b/extensions/filter/resources/filter.js index 210b72cfd..4a371aacc 100644 --- a/extensions/filter/resources/filter.js +++ b/extensions/filter/resources/filter.js @@ -4,21 +4,21 @@ function showAddFilterBox(){ // $("#addFilterWindowOverlay").show(); $("#addFilterWindowOverlay").modal({ overlay: 80, - overlayCss: {backgroundColor: '#000'}, + overlayCss: {backgroundColor: '#000'}, overlayClose: true, onOpen: function (dialog) { - dialog.overlay.fadeIn(effectTime, function () { + dialog.overlay.fadeIn(effectTime, function () { dialog.data.show(); - dialog.container.fadeIn(effectTime); - }) - }, - onClose: function (dialog) { - dialog.container.fadeOut(effectTime, function() { - dialog.overlay.fadeOut(effectTime, function() { - $.modal.close(); - }); - }); - } + dialog.container.fadeIn(effectTime); + }) + }, + onClose: function (dialog) { + dialog.container.fadeOut(effectTime, function() { + dialog.overlay.fadeOut(effectTime, function() { + $.modal.close(); + }); + }); + } }); } function updatePossibleValues() { @@ -40,6 +40,10 @@ function removeAllFilters(){ }); } +function toggleHelp(){ + $("#helptext").slideToggle(); +} + $(document).ready(function(){ //initial layout $("#gqbclassrestrictionsexist").hide(); @@ -86,7 +90,7 @@ $(document).ready(function(){ var type = "literal"; var typedata = null; - + // if value entering is possible but nothing entered: check if user selected something in the possible values box if(value1 == "" && $("#valueboxes").children().length == 1){ if($("#addwindow #possiblevalues option:selected").length == 0){ @@ -113,7 +117,7 @@ $(document).ready(function(){ //show possible values for select property $("#property").change(updatePossibleValues); - + //different filter types need different value input fields // bound: none // contains, larger, smaller: one @@ -140,7 +144,7 @@ $(document).ready(function(){ } } }); - + //$.dump(filter); //register the filter box for (other) filter events //filter.addCallback(function(newfilter){ showFilter() }); diff --git a/extensions/filter/templates/filter/filter.phtml b/extensions/filter/templates/filter/filter.phtml index 3b7008b12..79ce62862 100644 --- a/extensions/filter/templates/filter/filter.phtml +++ b/extensions/filter/templates/filter/filter.phtml @@ -3,20 +3,21 @@ * OntoWiki filter module template */ $odd = true; +$translate = OntoWiki::getInstance()->translate; ?>
-

- - -

+

+ + +

filter) : ?> 'properties'), array('r')) ?> _('Active Filters') ?>:
    - filter as $filter) : + filter as $filter) : if ( isset($filter['hidden'] ) && $filter['hidden'] ) { continue; } @@ -80,6 +81,16 @@ $odd = true;
+ diff --git a/extensions/translations/de/core.csv b/extensions/translations/de/core.csv index d78cdd28a..7d8c94d19 100644 --- a/extensions/translations/de/core.csv +++ b/extensions/translations/de/core.csv @@ -151,6 +151,9 @@ Export Knowledge Base as Turtle;Wissensbasis als Turtle exportieren Export Knowledge Base as Notation 3;Wissensbasis als N3 exportieren Delete Knowledge Base;Wissensbasis löschen +Toggle show Permalink;Permalink anzeigen/verstecken +Toggle show Resoure Query;Resource Query anzeigen/verstecken + # Wochentage Monday Tuesday @@ -212,3 +215,11 @@ Add Resource here;Ressource hier anlegen Show Hidden Elements;Versteckte Ressourcen einblenden Hide Hidden Elements;Versteckte Ressourcen ausblenden +# filter extension +Toggle help; Hilfe (de)aktivieren +filter_help1;Wörter die durch Leerzeichen getrennt sind müssen alle im Ergebnis enthalten sein, dabei spielt die eingegebene Reihenfolge keine Rolle. +filter_help2;Phrasen können gesucht werden, indem die Wortgruppe in einfache Anführungszeichen gesetzt wird (Strg + #). +filter_help3;Werden mindestens vier Buchstaben eingegeben, kann anschließend durch Sternchen '*' eine Trunkierung erfolgen. +filter_help4;Sobald die Suche die Wörter AND oder OR enthält, muss die komplette bif:contains-Syntax benutzt werden. +Further info;mehr Informationen + diff --git a/extensions/translations/en/core.csv b/extensions/translations/en/core.csv index 8dfb7daf2..5f05901a1 100644 --- a/extensions/translations/en/core.csv +++ b/extensions/translations/en/core.csv @@ -100,3 +100,11 @@ Render Ressources as OntoWiki Links Create New Knowledge Base FOAFSSL;FOAF+SSL Forgot your password? + +# Filter explanation +Toggle help +filter_help1;Words separated by spaces must all appear, but not necessarily in the given order. +filter_help2;Phrases can be searched by enclosing them in single quotes. +filter_help3;It is possible to use * as wildcard, but only with a minimum of four preceding letters. +filter_help4;As soon the search includes one of the keywords AND or OR, the full bif:contains syntax must be used. +Further info From 6c4df40e4ff9109498c54b4ea42cc78cfb923cdc Mon Sep 17 00:00:00 2001 From: Andreas Nareike Date: Wed, 12 Feb 2014 14:58:17 +0100 Subject: [PATCH 023/156] Fix type handling in rdfauthor popover controller Old behaviour: When creating instances, RDFauthor empties all fields that might contain values, except or the rdfs:type field. rdfs:type was tested by doing a regex match on the label. Why changed: This test might fail when someone includes an additional label, since the test just uses any label, not every label. Moreover, the regex might yield a false positive as it would match also sub-strings. New behaviour: We do a simple string comparison of the URIs. --- extensions/themes/silverblue/scripts/support.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/themes/silverblue/scripts/support.js b/extensions/themes/silverblue/scripts/support.js index ffa304dc2..d10a03340 100644 --- a/extensions/themes/silverblue/scripts/support.js +++ b/extensions/themes/silverblue/scripts/support.js @@ -463,7 +463,7 @@ function populateRDFauthor(data, protect, resource, graph, workingmode) { if (workingmode == 'class') { // remove all values except for type - if ( !/type/gi.test(stmt._predicateLabel) ) { + if ( stmt.predicateURI() !== 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' ) { stmt._object.value = ""; } } From 1f9d7e9e690f20469feb3d6cba126594bfd7651e Mon Sep 17 00:00:00 2001 From: Andreas Nareike Date: Thu, 20 Feb 2014 15:47:59 +0100 Subject: [PATCH 024/156] Fix #278 Add Property not working properly --- extensions/themes/silverblue/scripts/support.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/extensions/themes/silverblue/scripts/support.js b/extensions/themes/silverblue/scripts/support.js index d10a03340..ed8c89598 100644 --- a/extensions/themes/silverblue/scripts/support.js +++ b/extensions/themes/silverblue/scripts/support.js @@ -523,6 +523,12 @@ function createInstanceFromClassURI(type, dataCallback) { window.setTimeout(function () { window.location.href = newLocation; }, 500); + }, + onCancel: function () { + // HACK: reload whole page after 500 ms + window.setTimeout(function () { + window.location.href = window.location.href; + }, 500); } }); @@ -565,6 +571,12 @@ function editResourceFromURI(resource) { window.setTimeout(function () { window.location.href = window.location.href; }, 500); + }, + onCancel: function () { + // HACK: reload whole page after 500 ms + window.setTimeout(function () { + window.location.href = window.location.href; + }, 500); } }); From 8b9d403767ea8c44e4f78d708a86ac1c0376690d Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Fri, 21 Feb 2014 12:11:34 +0000 Subject: [PATCH 025/156] Fix try to get property of non-object, when deleting model --- extensions/datagathering/DatagatheringPlugin.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/extensions/datagathering/DatagatheringPlugin.php b/extensions/datagathering/DatagatheringPlugin.php index 69109d2d6..9f5ab3100 100644 --- a/extensions/datagathering/DatagatheringPlugin.php +++ b/extensions/datagathering/DatagatheringPlugin.php @@ -57,7 +57,9 @@ class DatagatheringPlugin extends OntoWiki_Plugin public function init() { parent::init(); - //$this->_properties = $this->_privateConfig->properties->toArray(); + if ($this->_privateConfig->sync->enabled && isset($this->_privateConfig->properties)) { + $this->_properties = $this->_privateConfig->properties->toArray(); + } $this->_syncModelUri = $this->_privateConfig->syncModelUri; // Translation hack in order to enable the plugin to translate... @@ -92,7 +94,8 @@ public function onCreateMenu($event) // We only add entries to the menu, if all params are given and the // model is editable. - if ((null === $resource) || (null === $model) || !$model->isEditable() + if ( + (null === $resource) || (null === $model) || !$model->isEditable() || !$owApp->erfurt->getAc()->isModelAllowed('edit', $owApp->selectedModel) ) { return; @@ -292,7 +295,7 @@ public function onPreTabsContentAction($event) */ public function onDeleteResources($event) { - if ($this->_properties->sync->enabled) { + if ($this->_privateConfig->sync->enabled) { $modelUri = $event->modelUri; $uriArray = $event->resourceArray; @@ -337,7 +340,7 @@ public function onDeleteResources($event) */ public function onPreDeleteModel($event) { - if ($this->_properties->sync->enabled) { + if ($this->_privateConfig->sync->enabled) { $modelUri = $event->modelUri; require_once 'Erfurt/Sparql/SimpleQuery.php'; From 6f56c5e51b15a0593521e6b88631b37dfd0ed79c Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Fri, 21 Feb 2014 13:21:28 +0000 Subject: [PATCH 026/156] Fix pingback takes for ever Replace PHP's get_headers method by a curl substitute. This also solves problems, when importing a new model. --- extensions/pingback/PingbackPlugin.php | 42 ++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/extensions/pingback/PingbackPlugin.php b/extensions/pingback/PingbackPlugin.php index 51d2a1495..30413bef7 100644 --- a/extensions/pingback/PingbackPlugin.php +++ b/extensions/pingback/PingbackPlugin.php @@ -89,7 +89,8 @@ public function onAddMultipleStatements($event) public function onDeleteMultipleStatements($event) { // If pingOnDelete is configured, we also ping on statement delete, otherwise we skip. - if (!isset($this->_privateConfig->pingOnDelete) + if ( + !isset($this->_privateConfig->pingOnDelete) || ((boolean)$this->_privateConfig->pingOnDelete === false) ) { @@ -198,7 +199,7 @@ protected function _checkAndPingback($subject, $predicate, $object) protected function _discoverPingbackServer($targetUri) { // 1. Retrieve HTTP-Header and check for X-Pingback - $headers = get_headers($targetUri, 1); + $headers = self::_get_headers($targetUri); if (!is_array($headers)) { return null; } @@ -345,4 +346,41 @@ private function _log($msg) $logger->debug($msg); } + /** + * This method provides and alternative to PHP's get_headers method, which has no timeout. + * It is inspired by: http://snipplr.com/view/61985/ + */ + private static function _get_headers($url) + { + $connection = curl_init(); + + $options = array( + CURLOPT_URL => $url, + CURLOPT_NOBODY => true, + CURLOPT_HEADER => true, + CURLOPT_TIMEOUT => 10, + CURLOPT_RETURNTRANSFER => true + ); + + curl_setopt_array($connection, $options); + $result = curl_exec($connection); + curl_close($connection); + + if ($result !== false) { + $resultArray = explode("\n", $result); + + $header = array(); + foreach ($resultArray as $headerLine) { + $match = preg_match('#(.*?)\:\s(.*)#', $headerLine, $part); + if ($match) { + $header[$part[1]] = trim($part[2]); + } + } + + return $header; + } else { + return false; + } + } + } From ac0d9664d7f078f35cd32c6419a0de186f04042b Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Thu, 27 Feb 2014 13:55:54 +0000 Subject: [PATCH 027/156] Fix #286. Also consider colon in OntoWiki_Utils::compactUri method. --- application/classes/OntoWiki/Utils.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/classes/OntoWiki/Utils.php b/application/classes/OntoWiki/Utils.php index 53936af0a..7376e24e9 100644 --- a/application/classes/OntoWiki/Utils.php +++ b/application/classes/OntoWiki/Utils.php @@ -51,9 +51,9 @@ public static function compactUri($uri, $saveMode = false) $compactUri = null; $prefix = null; - // split URI in namespace and local part at "/" or "#" + // split URI in namespace and local part at "/", "#" or ":" $matches = array(); - preg_match('/^(.+[#\/])(.+[^#\/])$/', $uri, $matches); + preg_match('/^(.+[#\/\:])(.+[^#\/\:])$/', $uri, $matches); if (count($matches) == 3) { $namespace = $matches[1]; From 5500550dae8d5d53bc2863c05401424d66a56ac5 Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 3 Mar 2014 17:08:40 +0100 Subject: [PATCH 028/156] Forward Erfurt --- libraries/Erfurt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Erfurt b/libraries/Erfurt index cc2ac86e4..f2df458d4 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit cc2ac86e4553b680937c1b50135c1e9fb6722ad8 +Subproject commit f2df458d4ef43686109b816d2deec5c9342b8bd2 From 09b045a69906a6f6d9cf70b29f777d8671ea55de Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 3 Mar 2014 18:14:11 +0100 Subject: [PATCH 029/156] Forward Erfurt --- libraries/Erfurt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Erfurt b/libraries/Erfurt index f2df458d4..70c72a020 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit f2df458d4ef43686109b816d2deec5c9342b8bd2 +Subproject commit 70c72a0205b9e9a6b07db74aea39fece5ddf4f7a From 860021eb1d3b65ba2cd5f7e6402353e298313bb7 Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 3 Mar 2014 18:18:05 +0100 Subject: [PATCH 030/156] Fix skipped test --- .../integration/OntoWiki/Extension/ManagerIntegrationTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application/tests/integration/OntoWiki/Extension/ManagerIntegrationTest.php b/application/tests/integration/OntoWiki/Extension/ManagerIntegrationTest.php index 704380a26..a2b2cbea9 100644 --- a/application/tests/integration/OntoWiki/Extension/ManagerIntegrationTest.php +++ b/application/tests/integration/OntoWiki/Extension/ManagerIntegrationTest.php @@ -45,7 +45,8 @@ protected function setUp() */ public function testScan() { - $this->markTestSkipped('TODO: test with new caching backend'); + Erfurt_App::getInstance(false)->getCache()->clean(); + // clear cache, since otherwise the extension manager may have the real extensions loaded if (function_exists('apc_clear_cache')) { apc_clear_cache('user'); From 02b68d4e9c24d360449b40f0df24ab188a367bea Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 3 Mar 2014 18:37:42 +0100 Subject: [PATCH 031/156] Fix integration tests to fit new result format --- .../OntoWiki/Model/InstancesIntegrationTest.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php b/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php index c14d7bbab..c463cb2da 100644 --- a/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php +++ b/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php @@ -110,14 +110,14 @@ public function testGetValues() $this->assertArrayHasKey('http://model.org/model#i2', $v); // the __TYPE and resourceUri - $this->assertCount(2, $v['http://model.org/model#i1']); + $this->assertCount(1, $v['http://model.org/model#i1']); $this->assertArrayHasKey('__TYPE', $v['http://model.org/model#i1']); - $this->assertArrayHasKey('resourceUri', $v['http://model.org/model#i1']); + //this->assertArrayHasKey('resourceUri', $v['http://model.org/model#i1']); $this->assertContains($this->_class, self::_onlyValues($v['http://model.org/model#i1']['__TYPE'])); - $this->assertContains( + /*$this->assertContains( 'http://model.org/model#i1', self::_onlyValues($v['http://model.org/model#i1']['resourceUri']) - ); + );*/ } /** @@ -128,8 +128,9 @@ public function testAddShownProperties() //add properties $this->_instances->addShownProperty('http://model.org/prop'); $v = $this->_instances->getValues(); + //var_dump($v); //count values - $this->assertCount(3, $v['http://model.org/model#i1']); + $this->assertCount(2, $v['http://model.org/model#i1']); //test variable creation $this->assertArrayHasKey('prop', $v['http://model.org/model#i1']); @@ -141,7 +142,7 @@ public function testAddShownProperties() //another one $this->_instances->addShownProperty('http://www.w3.org/2000/01/rdf-schema#label'); $v = $this->_instances->getValues(); - $this->assertCount(4, $v['http://model.org/model#i1']); + $this->assertCount(3, $v['http://model.org/model#i1']); $this->assertArrayHasKey('label', $v['http://model.org/model#i1']); } From f42771b5d05701e1d9e4e809db6816b7c4f5619f Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 3 Mar 2014 18:48:45 +0100 Subject: [PATCH 032/156] Reset Erfurt submodule to develop branch --- libraries/Erfurt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Erfurt b/libraries/Erfurt index 70c72a020..3084dff5f 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit 70c72a0205b9e9a6b07db74aea39fece5ddf4f7a +Subproject commit 3084dff5fb31fd1e6981353ff86a3b11a10fd610 From f259421813fd9a2873a60df7509eeff9ccacffb2 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 4 Mar 2014 00:12:53 +0000 Subject: [PATCH 033/156] Fix #258. Forward Erfurt. --- libraries/Erfurt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Erfurt b/libraries/Erfurt index 3084dff5f..fc9c58460 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit 3084dff5fb31fd1e6981353ff86a3b11a10fd610 +Subproject commit fc9c584603f00bade227b392647d2a02a5df044f From f1f15becfa3ce51cdba7a200a2bc777e1fdbd324 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 4 Mar 2014 00:49:18 +0000 Subject: [PATCH 034/156] Forward to not failing Erfurt --- libraries/Erfurt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Erfurt b/libraries/Erfurt index fc9c58460..325577c33 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit fc9c584603f00bade227b392647d2a02a5df044f +Subproject commit 325577c33a8f041327438998d40169f27ad75961 From b0e9a4e21e3b5a9779353c2028d882e08528f532 Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Tue, 4 Mar 2014 12:04:31 +0100 Subject: [PATCH 035/156] Forward Erfurt, fix test case for latest Erfurt --- application/tests/unit/OntoWiki/Model/InstancesTest.php | 2 ++ libraries/Erfurt | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/application/tests/unit/OntoWiki/Model/InstancesTest.php b/application/tests/unit/OntoWiki/Model/InstancesTest.php index f56de93d7..a859a98a5 100644 --- a/application/tests/unit/OntoWiki/Model/InstancesTest.php +++ b/application/tests/unit/OntoWiki/Model/InstancesTest.php @@ -44,6 +44,8 @@ public function setUp() 'Test' ); + $this->_store->setAc(new Erfurt_Ac_Test()); + $this->_instances = new OntoWiki_Model_Instances( $this->_store, new Erfurt_Rdf_Model('http://graph.com/123/', null, $this->_store) diff --git a/libraries/Erfurt b/libraries/Erfurt index 325577c33..58baa5141 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit 325577c33a8f041327438998d40169f27ad75961 +Subproject commit 58baa5141b26bf147b8fe2f9a0256f09de43a129 From c21e0b5b84143ce8c3755c8044d891c40e056a29 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 4 Mar 2014 17:25:31 +0000 Subject: [PATCH 036/156] Fix community tab Remove relience on resourceUri value in community. Since the resourceUri value was removed from instances->getValues consequently also remove the disabled testlines. --- .../OntoWiki/Model/InstancesIntegrationTest.php | 7 +------ .../community/templates/partials/list_community_main.phtml | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php b/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php index c463cb2da..2425005da 100644 --- a/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php +++ b/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php @@ -109,15 +109,10 @@ public function testGetValues() $this->assertArrayHasKey('http://model.org/model#i1', $v); $this->assertArrayHasKey('http://model.org/model#i2', $v); - // the __TYPE and resourceUri + // the __TYPE $this->assertCount(1, $v['http://model.org/model#i1']); $this->assertArrayHasKey('__TYPE', $v['http://model.org/model#i1']); - //this->assertArrayHasKey('resourceUri', $v['http://model.org/model#i1']); $this->assertContains($this->_class, self::_onlyValues($v['http://model.org/model#i1']['__TYPE'])); - /*$this->assertContains( - 'http://model.org/model#i1', - self::_onlyValues($v['http://model.org/model#i1']['resourceUri']) - );*/ } /** diff --git a/extensions/community/templates/partials/list_community_main.phtml b/extensions/community/templates/partials/list_community_main.phtml index 543207d8d..7573e6ca6 100644 --- a/extensions/community/templates/partials/list_community_main.phtml +++ b/extensions/community/templates/partials/list_community_main.phtml @@ -5,7 +5,7 @@ foreach ($this->instanceInfo as $instance){ $options = array( 'author' => $this->instanceData[$instance['uri']]['creator'][0]['value'], 'comment' => $instance['uri'], - 'commentUrl' => $this->instanceData[$instance['uri']]['resourceUri'][0]['url'], + 'commentUrl' => $instance['url'], 'content' => $this->instanceData[$instance['uri']]['content'][0]['value'], 'date' => OntoWiki_Utils::dateDifference(strtotime($this->instanceData[$instance['uri']]['date'][0]['value']), time()), 'odd' => $odd, From bd35c57f99c2b347b987e1da53ecf0ede3a08333 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 11 Mar 2014 11:57:49 +0000 Subject: [PATCH 037/156] Add showHiddenElements to naviagtion config --- extensions/navigation/doap.n3 | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/navigation/doap.n3 b/extensions/navigation/doap.n3 index 96aef3cf9..4dba492ac 100644 --- a/extensions/navigation/doap.n3 +++ b/extensions/navigation/doap.n3 @@ -105,6 +105,7 @@ :hiddenRelation (
- author ?> + resource)) : ?> on instanceInfo as $instance){ + $author = null; + if (isset($this->instanceData[$instance['uri']]['creator'][0]['value'])) { + $author = $this->instanceData[$instance['uri']]['creator'][0]['value']; + } $options = array( - 'author' => $this->instanceData[$instance['uri']]['creator'][0]['value'], + 'author' => $author, 'comment' => $instance['uri'], 'commentUrl' => $instance['url'], 'content' => $this->instanceData[$instance['uri']]['content'][0]['value'], From e98414854b93981688db017c50a89a4f5255a539 Mon Sep 17 00:00:00 2001 From: Andreas Nareike Date: Fri, 4 Jul 2014 08:42:31 +0200 Subject: [PATCH 054/156] First draft (incomplete) to provide french --- extensions/selectlanguage/doap.n3 | 1 + extensions/translations/fr/core.csv | 225 ++++++++++++++++++++++++++++ 2 files changed, 226 insertions(+) create mode 100644 extensions/translations/fr/core.csv diff --git a/extensions/selectlanguage/doap.n3 b/extensions/selectlanguage/doap.n3 index dabb8883b..b4834ccab 100644 --- a/extensions/selectlanguage/doap.n3 +++ b/extensions/selectlanguage/doap.n3 @@ -22,6 +22,7 @@ owconfig:id "languages"; :en "english (en)" ; :de "deutsch (de)" ; + :fr "français (fr)" ; :zh "汉语 (zh)" ; :ru "русский язык (ru)" ] . diff --git a/extensions/translations/fr/core.csv b/extensions/translations/fr/core.csv new file mode 100644 index 000000000..21d46d5b6 --- /dev/null +++ b/extensions/translations/fr/core.csv @@ -0,0 +1,225 @@ +# +# OntoWiki German language translation +# Encoding: UTF-8 +# Separator: ; +# +Back;Retour +Submit;Envoyer +Cancel;Terminer +Save Changes;"Sauvegarder les modificitions" +Reset Form;Reculer formulaire +Edit Instances;TODO +Edit Properties;TODO +Add Property;"Ajouter propriété" +Rendered in %1$d microseconds using %2$d SPARQL queries.;Gerendert in %1$d Mikrosekunden mit %2$d SPARQL-Anfragen. +more;mehr + +moments ago;TODO +approx. 1 minute ago;il y'a une minute +approx. %d minutes ago;il y'a %d minutes +approx. 1 hour ago;il y'a une heure +approx. %d hours ago;il y'a %d heures +approx. %d days ago;il y'a %d jours + +# test +page1;Page 1 +page2;Page 2 + + +# Module +Search all Knowledge Bases;Chercher tous les bases de connaissance +Search Text;TODO +Knowledge Bases;Bases de connaissance +Create Knowledge Base;"Créer une base de connaissance" +Show Hidden Knowledge Bases;"Afficher bases de connaissance cachées" +Hide Hidden Knowledge Bases;"Cacher bases de connaissance cachées" +Languages (Tagged Literals);Sprachen (ausgezeichnete Labels) +none;aucun +Classes;Classes +Create Class;"Créer une classe" +Show Empty Classes;Afficher des classes vides +Hide Empty Classes;Cacher des classes vides +Show System Classes;Afficher des classes TODO +Hide System Classes;TODO +Show Hidden Classes;Afficher des classes cachées +Hide Hidden Classes;Cacher des classes cachées +Most Popular | Most Active;Populär | Aktiv +Rec. Changes;"Modifications" +Rec. Comments;Commentaires +Login;Connecter +No matches.;Keine Entsprechungen. +Predicates;Prädikate +Similar Instances;"Des instances similaires" +Instances Linking Here;Verlinkte Ressourcen +Usage as Property;Auftreten als Prädikat +Not implemented yet.;Noch nicht implementiert. +Latest Changes;Aktuelle Änderungen +Latest Discussions;Aktuelle Diskussionen +Comments, Descriptions and Notes;Kurzbeschreibung +Actions; Aktionen +There are no comments, descriptions or notes on this knowledge base.; Es sind keine Kommentare, Beschreibungen oder Anmerkungen in der Wissensbasis enthalten. +view all resources; Alle Ressourcen anzeigen +Search for Resources;Suche nach Ressourcen +Source;Code source +by;von +Objects;Objekte +Subjects;Subjekte + + +# Komponenten +# TODO: sollten Komponenten ihre Übersetzung selbst verwalten? +Properties;"Propriétés" +Instances;Instances +Calendar;Calendrier +History;ChangeLog +Map;Carte + +# application menu +User;Utilisateur +Register New User;Enregistrer nouvel utilisateur +Preferences;"Préférences" +Logout;Annuler +View;"Aperçu" +Edit;"Éditer" +Extras;Extras +SPARQL Query Editor;SPARQL-Anfrage-Editor +File Resource Manager;Dateiressourcen-Manager +News;Nouvelles +Clear Cache;Vider cache +Help;Aide +Documentation;Documentation +Bug Report;Fehler melden +Version Info;Versionsinfo +About;"Über" + +#Pager +First;Erste +Previous;Vorherige +Next;Nächste +Last;Letzte + +Create New Knowledge Base;Neue Wissensbasis anlegen +Model URI;Modell-URI +Create an Empty Knowledge Base; Eine leere Wissensbasis anlegen +Base URI;Basis-URI +Type;Typ +Import From the Web;Aus dem WWW importieren +Upload a File;Eine Datei hochladen +File Type;Dateityp +File (max. %1$sB);Datei (max. %1$sB) +Paste Source;Quelltext eingeben +Source Code;Quelltext +Enter the URL where the model should be downloaded from. If you leave the field empty the model URI will be used.;Geben Sie die URL zur Modelldatei an. Wenn Sie dieses Feld leer lassen, wird stattdessen die Modell-URI benutzt. +Location;URL zur Datei +Instances of %1$s;Instanzen von %1$s +Properties of %1$s;Eigenschaften von %1$s + +Register User;Enregister utilisateur +Username;Nom d'utilisateur +Email Address;Adresse e-mail +Password;Mot de passe +Password (repeat);"Mot de passe (répéter)" +Unknown user identifier.;Unbekannte Benutzerkennung. +Forgot your password?;Passwort vergessen? + +Predefined namespaces;Vordefinierte Namensräume +SPARQL Options;SPARQL-Optionen +Plain;Einfach +Submit Query;Anfrage absenden +result;Ergebnis +results;Ergebnisse +Search returned %1$d %2$s.;Die Suche lieferte %1$d %2$s. +Query execution took %1$d ms.;Die Bearbeitung der Anfrage dauerte %1$d ms. + +# Menüs +View Resource;Regarder ressource +Edit Resource;"Éditer ressource" +Delete Resource;Effacer ressource + +List Instances;Lister les instances +Create Instance;"Créer instance" +Create Subclass;"Créer sous-classe" + +Select Knowledge Base;"Sélectionner base de connaissance" +Configure Knowledge Base;"Configurer base de connaissance" +Add Data to Knowledge Base;"Ajouter des données à base de connaissance" +Export Knowledge Base as RDF/XML;Exporter base de connaissance comme RDF/XML +Export Knowledge Base as RDF/JSON;Exporter base de connaissance comme RDF/JSON +Export Knowledge Base as RDF/N3;Exorter base de connaissance comme RDF/N3 +Export Knowledge Base as RDF/JSON (Talis);Exporter base de connaisssance comme RDF/JSON (Talis) +Export Knowledge Base as Turtle;Exporter base de connaissance comme Turtle +Export Knowledge Base as Notation 3;Exporter base de connaissance comme N3 +Delete Knowledge Base;Supprimer base de connaissance + +Toggle show Permalink;Afficher/cacher Permalien +Toggle show Resoure Query;Afficher/cacher Resource Query + +# Wochentage +Monday;Lundi +Tuesday;Mardi +Wednesday;Mercredi +Thursday;Jeudi +Friday;Vendredi +Saturday;Samedi +Sunday;Dimance + +Add Class;Ajouter classe +Add Instance;Ajouter instance + +Show Properties;"Afficher propriétés" + +Filter;Filter +Combine Filters (Conjunction);Filter kombinieren (Konjunktion) + +Merge;Fusionner +Visit resource on the web;Ressource im Netz aufsuchen + +Create instances from property value by regexp +Similar Instances +Rating +Average Rating +Your Rating +Instances Linking Here +Usage as Property +Instances +Values +Search | OntoWiki +Search Text +Submit +Search All Knowledge Bases +Search +Add Property +Submit Values +SPARQL Query Editor +Result Options +Table +SPARQL Query Results XML Format +Render Ressources as OntoWiki Links +Create New Knowledge Base +FOAFSSL;FOAF+SSL + +# explore tags module +Explore Tags;Schlagwörter / Tag-Wolken +Reset Explore Tags Box;Modul zurücksetzen +Reset selected tags;Tag-Auswahl zurücksetzen +Number of showed tags;Anzahl Tags +Sort;Triage +by name; par nom +by frequency;"par quantité" + +# navigation module +Number of Elements;Anzahl Ressourcen +Toggle Elements;Spezielle Elemente +Reset Navigation;Navigation zurücksetzen +Add Resource here;Ajouter ressource ici +Show Hidden Elements;Versteckte Ressourcen einblenden +Hide Hidden Elements;Versteckte Ressourcen ausblenden + +# filter extension +Toggle help; Hilfe (de)aktivieren +filter_help1;Wörter die durch Leerzeichen getrennt sind müssen alle im Ergebnis enthalten sein, dabei spielt die eingegebene Reihenfolge keine Rolle. +filter_help2;Phrasen können gesucht werden, indem die Wortgruppe in einfache Anführungszeichen gesetzt wird (Strg + #). +filter_help3;Werden mindestens vier Buchstaben eingegeben, kann anschließend durch Sternchen '*' eine Trunkierung erfolgen. +filter_help4;Sobald die Suche die Wörter AND oder OR enthält, muss die komplette bif:contains-Syntax benutzt werden. +Further info;mehr Informationen + From cf30518ca56f3b1e4e6e040217d612af4e88b7ea Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 15 Jul 2014 11:24:54 +0200 Subject: [PATCH 055/156] Add hugarian to language selection --- extensions/selectlanguage/default.ini | 1 + extensions/selectlanguage/doap.n3 | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/extensions/selectlanguage/default.ini b/extensions/selectlanguage/default.ini index 48eed1efb..478185ade 100644 --- a/extensions/selectlanguage/default.ini +++ b/extensions/selectlanguage/default.ini @@ -10,6 +10,7 @@ author = "Michael Martin" [private] languages.en = "english (en)" languages.de = "deutsch (de)" +languages.hu = "magyar (hu)" languages.zh = "汉语 (zh)" languages.ru = "русский язык (ru)" ;languages.nl = dutch diff --git a/extensions/selectlanguage/doap.n3 b/extensions/selectlanguage/doap.n3 index b4834ccab..223bd8ebe 100644 --- a/extensions/selectlanguage/doap.n3 +++ b/extensions/selectlanguage/doap.n3 @@ -20,9 +20,10 @@ owconfig:config [ a owconfig:Config; owconfig:id "languages"; - :en "english (en)" ; - :de "deutsch (de)" ; - :fr "français (fr)" ; + :en "English (en)" ; + :de "Deutsch (de)" ; + :fr "Français (fr)" ; + :hu "Magyar (hu)" ; :zh "汉语 (zh)" ; :ru "русский язык (ru)" ] . From ca9bef142fb6ff0afd311becdc3241b8f83e468b Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 15 Jul 2014 12:02:41 +0200 Subject: [PATCH 056/156] Forward RDFauthor and Erfurt --- libraries/Erfurt | 2 +- libraries/RDFauthor | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/Erfurt b/libraries/Erfurt index 7fc1c5ae3..98c128da5 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit 7fc1c5ae342ac15b14e637b31e93bc425423f44e +Subproject commit 98c128da5992db85b2d4ff80f01c177011c276b2 diff --git a/libraries/RDFauthor b/libraries/RDFauthor index 250fdba0f..415ac249f 160000 --- a/libraries/RDFauthor +++ b/libraries/RDFauthor @@ -1 +1 @@ -Subproject commit 250fdba0f6f8687f0adc6fe58b65770cef4859fa +Subproject commit 415ac249f4369ef91c1e878d95a82b6d80abf48a From e35799d2a21dc16f4db553f4942b7c58e2a392e8 Mon Sep 17 00:00:00 2001 From: Sebastian Tramp Date: Thu, 17 Jul 2014 13:12:06 +0200 Subject: [PATCH 057/156] add an onRegisterUser Event --- application/controllers/ApplicationController.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/application/controllers/ApplicationController.php b/application/controllers/ApplicationController.php index de0750d31..52c70db4c 100644 --- a/application/controllers/ApplicationController.php +++ b/application/controllers/ApplicationController.php @@ -310,6 +310,10 @@ public function registerAction() $this->_owApp->appendMessage( new OntoWiki_Message($message, OntoWiki_Message::SUCCESS) ); + + $event = new Erfurt_Event('onRegisterUser'); + $event->username = $username; + $event->trigger(); } else { $message = 'A registration error occured. Please refer to the log entries.'; $this->_owApp->appendMessage( From 6bbe280df1543d38bb6766950cbed09316c56778 Mon Sep 17 00:00:00 2001 From: Sebastian Tramp Date: Thu, 17 Jul 2014 17:26:42 +0200 Subject: [PATCH 058/156] add an onRegisterUserFailed Event --- .../controllers/ApplicationController.php | 20 +++++++++++++++---- libraries/Erfurt | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/application/controllers/ApplicationController.php b/application/controllers/ApplicationController.php index 52c70db4c..1c6a4b172 100644 --- a/application/controllers/ApplicationController.php +++ b/application/controllers/ApplicationController.php @@ -225,6 +225,8 @@ public function registerAction() ); if ($post) { + /* status var in order to fire corresponding events */ + $registrationError = true; $registeredUsernames = array(); $registeredEmailAddresses = array(); @@ -310,10 +312,7 @@ public function registerAction() $this->_owApp->appendMessage( new OntoWiki_Message($message, OntoWiki_Message::SUCCESS) ); - - $event = new Erfurt_Event('onRegisterUser'); - $event->username = $username; - $event->trigger(); + $registrationError = false; } else { $message = 'A registration error occured. Please refer to the log entries.'; $this->_owApp->appendMessage( @@ -327,6 +326,19 @@ public function registerAction() } } } + + /* + * fire events for success and error + */ + if ($registrationError === false) { + $event = new Erfurt_Event('onRegisterUser'); + $event->username = $username; + $event->trigger(); + } else { + $event = new Erfurt_Event('onRegisterUserFailed'); + $event->username = $username; + $event->trigger(); + } } } diff --git a/libraries/Erfurt b/libraries/Erfurt index 98c128da5..45ce14ec3 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit 98c128da5992db85b2d4ff80f01c177011c276b2 +Subproject commit 45ce14ec38daef6e682cbc90d07f332754d27b00 From 654c3d9487fe39af32d528e5e89842b840e24ad7 Mon Sep 17 00:00:00 2001 From: Henri Knochenhauer Date: Fri, 18 Jul 2014 11:01:46 +0200 Subject: [PATCH 059/156] additional fixes while firing onRegisterUser and onRegisterUserFailed event add response to event add message to event --- application/controllers/ApplicationController.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/application/controllers/ApplicationController.php b/application/controllers/ApplicationController.php index 1c6a4b172..55ede661b 100644 --- a/application/controllers/ApplicationController.php +++ b/application/controllers/ApplicationController.php @@ -333,10 +333,13 @@ public function registerAction() if ($registrationError === false) { $event = new Erfurt_Event('onRegisterUser'); $event->username = $username; + $event->response = $this->_response; $event->trigger(); } else { $event = new Erfurt_Event('onRegisterUserFailed'); $event->username = $username; + $event->message = $message; + $event->response = $this->_response; $event->trigger(); } } From 32916c0ebe7a424a5200233658d5ba3bd3883b83 Mon Sep 17 00:00:00 2001 From: Henri Knochenhauer Date: Sat, 19 Jul 2014 14:27:43 +0200 Subject: [PATCH 060/156] add json-support for registrationAction --- application/controllers/ApplicationController.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/application/controllers/ApplicationController.php b/application/controllers/ApplicationController.php index 55ede661b..376635610 100644 --- a/application/controllers/ApplicationController.php +++ b/application/controllers/ApplicationController.php @@ -223,6 +223,13 @@ public function registerAction() array('escape' => false, 'translate' => false) ) ); + + $contentType = $this->_request->getHeader('Content-Type'); + if(strstr($contentType, 'application/json')){ + $rawBody = $this->_request->getRawBody(); + echo $rawBody; + $post = Zend_Json::decode($rawBody); + } if ($post) { /* status var in order to fire corresponding events */ From 11c0e496fb77fefb825f62e4086467348ab627cf Mon Sep 17 00:00:00 2001 From: Andreas Nareike Date: Thu, 31 Jul 2014 14:42:20 +0200 Subject: [PATCH 061/156] Do an additional check if triples is existant The remove function of the jQuery.rdf library does not check if a triple that is to be removed is actually in the triplestore and will happily remove any triple if it's not the case. --- .../scripts/libraries/jquery.rdfquery.rdfa-1.0.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/extensions/themes/silverblue/scripts/libraries/jquery.rdfquery.rdfa-1.0.js b/extensions/themes/silverblue/scripts/libraries/jquery.rdfquery.rdfa-1.0.js index 1ddb82e71..afc6993cb 100644 --- a/extensions/themes/silverblue/scripts/libraries/jquery.rdfquery.rdfa-1.0.js +++ b/extensions/themes/silverblue/scripts/libraries/jquery.rdfquery.rdfa-1.0.js @@ -2668,7 +2668,11 @@ if (typeof triple === 'string') { triple = $.rdf.triple(triple, { namespaces: namespaces, base: base, source: triple }); } - this.tripleStore.splice($.inArray(triple, this.tripleStore), 1); + var pos = $.inArray(triple, this.tripleStore); + if (pos === -1) { + return this; + } + this.tripleStore.splice(pos, 1); striples = this.subjectIndex[triple.subject]; if (striples !== undefined) { striples.splice($.inArray(triple, striples), 1); From 31ab20aa6c1992300e6b3f1b65c06722abe1122d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20W=C3=BCrker?= Date: Fri, 1 Aug 2014 15:09:22 +0200 Subject: [PATCH 062/156] Complete license and copyright information in doc blocks. --- extensions/community/rating.js | 19 +- extensions/community/styles/community.css | 4 + extensions/datagathering/datagathering.js | 4 + extensions/exconf/resources/exconf.css | 15 +- extensions/exconf/resources/exconf.js | 4 + extensions/exconf/resources/outline.js | 14 +- extensions/exconf/resources/togglebutton.css | 15 +- extensions/filter/resources/FilterAPI.js | 281 ++++----- extensions/filter/resources/filter.css | 4 + extensions/filter/resources/filter.js | 5 + extensions/filter/resources/jquery.dump.js | 588 +++++++++--------- extensions/listmodules/showproperties.js | 40 +- extensions/modellist/modellist.js | 10 +- extensions/navigation/navigation.css | 24 +- .../queries/resources/querieseditor.css | 4 + extensions/queries/resources/savepartial.js | 142 +++-- .../themes/darkorange/styles/default.css | 6 +- extensions/themes/silverblue/scripts/main.js | 6 + .../silverblue/scripts/serialize-php.js | 5 + .../themes/silverblue/scripts/support.js | 2 +- .../themes/silverblue/styles/clickmenu.css | 5 + .../themes/silverblue/styles/default.css | 9 +- .../themes/silverblue/styles/default.dev.css | 19 +- .../silverblue/styles/deprecated.dev.css | 22 +- extensions/themes/silverblue/styles/old.css | 4 + .../styles/patches/ie6.clickmenu.css | 4 + .../themes/silverblue/styles/patches/ie6.css | 4 + .../themes/silverblue/styles/patches/ie7.css | 5 + 28 files changed, 681 insertions(+), 583 deletions(-) diff --git a/extensions/community/rating.js b/extensions/community/rating.js index e3024a1f8..8dcf3ae5b 100644 --- a/extensions/community/rating.js +++ b/extensions/community/rating.js @@ -1,3 +1,7 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ $(document).ready(function() { var rating_disp = document.getElementsByName('rating'); @@ -71,8 +75,6 @@ $(document).ready(function() { tab5.style.display = ''; } - - $('#changebutton').click(function(){ tab0.style.display = ''; tab1.style.display = ''; @@ -85,11 +87,11 @@ $(document).ready(function() { }); $('#ratingfield').mouseout(function(){ - + $('#submit').val(getCheckedValue(rating_in)); - + }); - + }); function getCheckedValue(radioObj) { @@ -107,9 +109,4 @@ function getCheckedValue(radioObj) { } } return ""; -} - - - - - +} \ No newline at end of file diff --git a/extensions/community/styles/community.css b/extensions/community/styles/community.css index 4f7ea5de7..f3ea7f8c6 100644 --- a/extensions/community/styles/community.css +++ b/extensions/community/styles/community.css @@ -1,3 +1,7 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ .comment { background-image: ; } \ No newline at end of file diff --git a/extensions/datagathering/datagathering.js b/extensions/datagathering/datagathering.js index 8c31a3a62..765b23545 100644 --- a/extensions/datagathering/datagathering.js +++ b/extensions/datagathering/datagathering.js @@ -1,3 +1,7 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ $(document).ready(function() { // ------------------------------------------------------------------------ diff --git a/extensions/exconf/resources/exconf.css b/extensions/exconf/resources/exconf.css index e493e90c8..298ce6056 100644 --- a/extensions/exconf/resources/exconf.css +++ b/extensions/exconf/resources/exconf.css @@ -1,11 +1,10 @@ -/* - Document : exconf - Created on : 03.02.2011, 19:29:44 - Author : haschek - Description: - defines special elements for the extension configurator -*/ - +/** + * Defines special elements for the extension configurator + * @author haschek + * @since 03.02.2011, 19:29:44 + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ #show_extension input, legend { position:absolute; diff --git a/extensions/exconf/resources/exconf.js b/extensions/exconf/resources/exconf.js index 6f3f5f4ad..249b1fcb1 100644 --- a/extensions/exconf/resources/exconf.js +++ b/extensions/exconf/resources/exconf.js @@ -1,3 +1,7 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ $(function() { diff --git a/extensions/exconf/resources/outline.js b/extensions/exconf/resources/outline.js index 92e764370..5b39025b8 100644 --- a/extensions/exconf/resources/outline.js +++ b/extensions/exconf/resources/outline.js @@ -1,15 +1,19 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ $(document).ready(function() { extensionOutline(); }); function extensionOutline() { - target=$('div.outline').empty(); - target=target.append('
    ').children('ol'); - + var target = $('div.outline').empty(); + target = target.append('
      ').children('ol'); + var even = true; $('div.extension:visible').each(function(){ - title=$(this).find('.name').text(); - id=$(this).attr('id'); + var title = $(this).find('.name').text(); + var id = $(this).attr('id'); if(even){ target.append('
    1. ' +title+ '
    2. '); } else { diff --git a/extensions/exconf/resources/togglebutton.css b/extensions/exconf/resources/togglebutton.css index ddc072a98..f349f8dd8 100644 --- a/extensions/exconf/resources/togglebutton.css +++ b/extensions/exconf/resources/togglebutton.css @@ -1,11 +1,10 @@ -/* - Document : togglebutton - Created on : 21.08.205, 21:39:53 - Author : jonas - Description: - style for the jquery.togglebutton plugin -*/ - +/** + * Style for the jquery.togglebutton plugin. + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * @author jonas + * @since 21.08.205, 21:39:53 + */ .togglebutton { border: none; background: transparent; diff --git a/extensions/filter/resources/FilterAPI.js b/extensions/filter/resources/FilterAPI.js index 93306eb78..cd070345e 100644 --- a/extensions/filter/resources/FilterAPI.js +++ b/extensions/filter/resources/FilterAPI.js @@ -1,162 +1,163 @@ /** * @class + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ function FilterAPI(){ - /* - * @var - */ - this.uri = reloadUrl; - /* - *@var array - */ - this.callbacks = new Array(); - - /** - * @var array - */ - this.filters = filtersFromSession; - - /** - * @var int - */ - this.count = 0; - for(onefilter in filtersFromSession){ - this.count++; - } + /* + * @var + */ + + this.uri = reloadUrl; + /* + *@var array + */ + + this.callbacks = new Array(); + /** + * @var array + */ + this.filters = filtersFromSession; + + /** + * @var int + */ + this.count = 0; + for(onefilter in filtersFromSession){ + this.count++; + } + + /** + *@method + * + */ + this.addCallback = function(callback){ + if(typeof callback == 'function' || typeof callback == 'object') + this.callbacks.push(callback); + }; + + /** + *@method + * + */ + this.removeAllFiltersOfProperty = function(uri){ + var data = { filter: [] } + for(afilterName in this.filters){ + if(this.filters[afilterName].property == uri){ + data.filter.push({ + "mode" : "box", + "action" : "remove", + "id" : this.filters[afilterName].id + }) + } + } + var dataserialized = $.toJSON(data); + var url = this.uri + "?instancesconfig=" + encodeURIComponent(dataserialized)+"&list="+listName; + //alert(dataserialized) + window.location = url; + }; + + /** + * add a filter + * @method + * @param id int,string + * @param property string an iri (predicate) which values should be filtered + * @param isInverse boolean if the property is inverse + * @param propertyLabel string a label for the property (will be displayed instead) + * @param filter string can be "contains" or "equals" . going to be enhanced + * @param value1 mixed the value applied to the filter + * @param value2 mixed the value applied to the filter. often optional (used for "between") + * @param valuetype string may be "uri" or "literal" or "typedliteral" or "langtaggedliteral" + * @param literaltype string if valuetype is "typedliteral" or "langtaggedliteral": you can put stuff like "de" or "xsd:int" here... + * @param callback function will be called on success + * @param hidden boolean will not show up in filterbox if true + * @param negate + * @param dontReload prevent page reloading + */ + this.add = function(id, property, isInverse, propertyLabel, filter, value1, value2, valuetype, literaltype, callback, hidden, negate, dontReload){ + if(typeof callback != 'function' && typeof callback != 'object'){ + callback = function(){}; + } - /** - *@method - * - */ - this.addCallback = function(callback){ - if(typeof callback == 'function' || typeof callback == 'object') - this.callbacks.push(callback); - }; - - /** - *@method - * - */ - this.removeAllFiltersOfProperty = function(uri){ - var data = { filter: [] } - for(afilterName in this.filters){ - if(this.filters[afilterName].property == uri){ - data.filter.push({ + if(id == null){ + id = "filterbox"+this.count + } + var data = + { + filter: + [ + { "mode" : "box", - "action" : "remove", - "id" : this.filters[afilterName].id - }) - } - } - var dataserialized = $.toJSON(data); - var url = this.uri + "?instancesconfig=" + encodeURIComponent(dataserialized)+"&list="+listName; - //alert(dataserialized) - window.location = url; + "action" : "add", + "id" : id, + "property" : property, + "isInverse" : typeof isInverse != 'undefined' ? isInverse : false, + "propertyLabel" : typeof propertyLabel != 'undefined' ? propertyLabel : null, + "filter" : filter, + "value1": value1, + "value2": typeof value2 != 'undefined' ? value2 : null, + "valuetype": typeof valuetype != 'undefined' ? valuetype : null, + "literaltype" : typeof literaltype != 'undefined' ? literaltype : null, + "hidden" : typeof hidden != 'undefined' ? hidden : false, + "negate" : typeof negate != 'undefined' ? negate : false + } + ] }; - /** - * add a filter - * @method - * @param id int,string - * @param property string an iri (predicate) which values should be filtered - * @param isInverse boolean if the property is inverse - * @param propertyLabel string a label for the property (will be displayed instead) - * @param filter string can be "contains" or "equals" . going to be enhanced - * @param value1 mixed the value applied to the filter - * @param value2 mixed the value applied to the filter. often optional (used for "between") - * @param valuetype string may be "uri" or "literal" or "typedliteral" or "langtaggedliteral" - * @param literaltype string if valuetype is "typedliteral" or "langtaggedliteral": you can put stuff like "de" or "xsd:int" here... - * @param callback function will be called on success - * @param hidden boolean will not show up in filterbox if true - * @param negate - * @param dontReload prevent page reloading - */ - this.add = function(id, property, isInverse, propertyLabel, filter, value1, value2, valuetype, literaltype, callback, hidden, negate, dontReload){ - if(typeof callback != 'function' && typeof callback != 'object'){ - callback = function(){}; - } + var dataserialized = $.toJSON(data); + var url = this.uri + "?instancesconfig=" + encodeURIComponent(dataserialized)+"&list="+listName; - if(id == null){ - id = "filterbox"+this.count - } - var data = - { - filter: - [ - { - "mode" : "box", - "action" : "add", - "id" : id, - "property" : property, - "isInverse" : typeof isInverse != 'undefined' ? isInverse : false, - "propertyLabel" : typeof propertyLabel != 'undefined' ? propertyLabel : null, - "filter" : filter, - "value1": value1, - "value2": typeof value2 != 'undefined' ? value2 : null, - "valuetype": typeof valuetype != 'undefined' ? valuetype : null, - "literaltype" : typeof literaltype != 'undefined' ? literaltype : null, - "hidden" : typeof hidden != 'undefined' ? hidden : false, - "negate" : typeof negate != 'undefined' ? negate : false - } - ] - }; - - var dataserialized = $.toJSON(data); - var url = this.uri + "?instancesconfig=" + encodeURIComponent(dataserialized)+"&list="+listName; - - this.count++; - - if(dontReload == true){ - $.ajax( - { - "url": url, - "type" : "POST" - } - ); - } else { - window.location = url; - } - }; + this.count++; - this.reloadInstances = function(){ - //$('.content .innercontent').load(document.URL); - //window.location = this.uri; - }; - - this.filterExists = function(id){ - return (typeof this.filters[id] != 'undefined'); + if(dontReload == true){ + $.ajax( + { + "url": url, + "type" : "POST" + } + ); + } else { + window.location = url; } + }; - this.getFilterById = function(id){ - return this.filters[id]; - } + this.reloadInstances = function(){ + //$('.content .innercontent').load(document.URL); + //window.location = this.uri; + }; + this.filterExists = function(id){ + return (typeof this.filters[id] != 'undefined'); + } - this.remove = function(id, callback){ - if(typeof callback != 'function' && typeof callback != 'object') - callback = function(){}; + this.getFilterById = function(id){ + return this.filters[id]; + } - var data = { - filter: [ - { - "action" : "remove", - "id" : id - } - ] - }; + this.remove = function(id, callback){ + if(typeof callback != 'function' && typeof callback != 'object') + callback = function(){}; + + var data = { + filter: [ + { + "action" : "remove", + "id" : id + } + ] + }; - var dataserialized = $.toJSON(data); + var dataserialized = $.toJSON(data); - this.count--; - - window.location = this.uri + "?instancesconfig=" + encodeURIComponent(dataserialized); - }; + this.count--; + window.location = this.uri + "?instancesconfig=" + encodeURIComponent(dataserialized); + }; - this.removeAll = function(){ - this.count = 0; - window.location = this.uri+"?init" - }; + this.removeAll = function(){ + this.count = 0; + window.location = this.uri+"?init" + }; } var filter = new FilterAPI(); \ No newline at end of file diff --git a/extensions/filter/resources/filter.css b/extensions/filter/resources/filter.css index d3c998ba6..6cd9e9adf 100644 --- a/extensions/filter/resources/filter.css +++ b/extensions/filter/resources/filter.css @@ -1,3 +1,7 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ #cancelrestrictionbutton { color: red; } diff --git a/extensions/filter/resources/filter.js b/extensions/filter/resources/filter.js index 4a371aacc..48db7c2f2 100644 --- a/extensions/filter/resources/filter.js +++ b/extensions/filter/resources/filter.js @@ -1,3 +1,8 @@ +/* + * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ + var filterboxcounter = 0; // dont overwrite previous filters function showAddFilterBox(){ diff --git a/extensions/filter/resources/jquery.dump.js b/extensions/filter/resources/jquery.dump.js index 43a05a4e7..851ab6cf5 100644 --- a/extensions/filter/resources/jquery.dump.js +++ b/extensions/filter/resources/jquery.dump.js @@ -1,301 +1,305 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ jQuery.fn.dump = function(showTypes, showAttributes) { - jQuery.dump($(this), showTypes, showAttributes); - return this; + jQuery.dump($(this), showTypes, showAttributes); + return this; }; jQuery.dump = function(object, showTypes, showAttributes) { - var dump = ''; - var st = typeof showTypes == 'undefined' ? true : showTypes; - var sa = typeof showAttributes == 'undefined' ? true : showAttributes; - var winName = 'dumpWin'; - var w = 760; - var h = 500; - var leftPos = screen.width ? (screen.width - w) / 2 : 0; - var topPos = screen.height ? (screen.height - h) / 2 : 0; - var settings = 'height=' + h + ',width=' + w + ',top=' + topPos + ',left=' + leftPos + ',scrollbars=yes,menubar=yes,status=yes,resizable=yes'; - var title = 'Dump'; - var script = 'function tRow(s) {t = s.parentNode.lastChild;tTarget(t, tSource(s)) ;}function tTable(s) {var switchToState = tSource(s) ;var table = s.parentNode.parentNode;for (var i = 1; i < table.childNodes.length; i++) {t = table.childNodes[i] ;if (t.style) {tTarget(t, switchToState);}}}function tSource(s) {if (s.style.fontStyle == "italic" || s.style.fontStyle == null) {s.style.fontStyle = "normal";s.title = "click to collapse";return "open";} else {s.style.fontStyle = "italic";s.title = "click to expand";return "closed" ;}}function tTarget (t, switchToState) {if (switchToState == "open") {t.style.display = "";} else {t.style.display = "none";}}'; - - var _recurse = function (o, type) { - var i; - var j = 0; - var r = ''; - type = _dumpType(o); - switch (type) { - case 'regexp': - var t = type; - r += '' + t + ''; - r += 'RegExp: ' + o + ''; - j++; - break; - case 'date': - var t = type; - r += '' + t + ''; - r += 'Date: ' + o + ''; - j++; - break; - case 'function': - var t = type; - var a = o.toString().match(/^.*function.*?\((.*?)\)/im); - var args = (a == null || typeof a[1] == 'undefined' || a[1] == '') ? 'none' : a[1]; - r += '' + t + ''; - r += 'Arguments: ' + args + 'Function: ' + o + ''; - j++; - break; - case 'domelement': - var t = type; - var attr = ''; - if (sa) { - for (i in o) {if (!/innerHTML|outerHTML/i.test(i)) {attr += i + ': ' + o[i] + '
      ';}} - } - r += '' + t + ''; - r += 'Node Name: ' + o.nodeName.toLowerCase() + ''; - r += 'Node Type: ' + o.nodeType + ''; - r += 'Node Value: ' + o.nodeValue + ''; - if (sa) { - r += 'Attributes: ' + attr + ''; - r += 'innerHTML: ' + o.innerHTML + ''; - if (typeof o.outerHTML != 'undefined') { - r += 'outerHTML: ' + o.outerHTML + ''; - } - } - j++; - break; - } - if (/object|array/.test(type)) { - for (i in o) { - var t = _dumpType(o[i]); - if (j < 1) { - r += '' + type + ''; - j++; - } - if (typeof o[i] == 'object' && o[i] != null) { - r += '' + i + (st ? ' [' + t + ']' : '') + '' + _recurse(o[i], t) + ''; - } else if (typeof o[i] == 'function') { - r += '' + i + (st ? ' [' + t + ']' : '') + '' + _recurse(o[i], t) + ''; - } else { - r += '' + i + (st ? ' [' + t + ']' : '') + '' + o[i] + ''; - } - } - } - if (j == 0) { - r += '' + type + ' [empty]'; - } - r += ''; - return r; - }; - var _dumpStyles = function(type, use) { - var r = ''; - var table = 'font-size:xx-small;font-family:verdana,arial,helvetica,sans-serif;cell-spacing:2px;'; - var th = 'font-size:xx-small;font-family:verdana,arial,helvetica,sans-serif;text-align:left;color: white;padding: 5px;vertical-align :top;cursor:hand;cursor:pointer;'; - var td = 'font-size:xx-small;font-family:verdana,arial,helvetica,sans-serif;vertical-align:top;padding:3px;'; - var thScript = 'onClick="tTable(this);" title="click to collapse"'; - var tdScript = 'onClick="tRow(this);" title="click to collapse"'; - switch (type) { - case 'string': - case 'number': - case 'boolean': - case 'undefined': - case 'object': - switch (use) { - case 'table': - r = ' style="' + table + 'background-color:#0000cc;"'; - break; - case 'th': - r = ' style="' + th + 'background-color:#4444cc;"' + thScript; - break; - case 'td-key': - r = ' style="' + td + 'background-color:#ccddff;cursor:hand;cursor:pointer;"' + tdScript; - break; - case 'td-value': - r = ' style="' + td + 'background-color:#fff;"'; - break; - } - break; - case 'array': - switch (use) { - case 'table': - r = ' style="' + table + 'background-color:#006600;"'; - break; - case 'th': - r = ' style="' + th + 'background-color:#009900;"' + thScript; - break; - case 'td-key': - r = ' style="' + td + 'background-color:#ccffcc;cursor:hand;cursor:pointer;"' + tdScript; - break; - case 'td-value': - r = ' style="' + td + 'background-color:#fff;"'; - break; - } - break; - case 'function': - switch (use) { - case 'table': - r = ' style="' + table + 'background-color:#aa4400;"'; - break; - case 'th': - r = ' style="' + th + 'background-color:#cc6600;"' + thScript; - break; - case 'td-key': - r = ' style="' + td + 'background-color:#fff;cursor:hand;cursor:pointer;"' + tdScript; - break; - case 'td-value': - r = ' style="' + td + 'background-color:#fff;"'; - break; - } - break; - case 'arguments': - switch (use) { - case 'table': - r = ' style="' + table + 'background-color:#dddddd;cell-spacing:3;"'; - break; - case 'td-key': - r = ' style="' + th + 'background-color:#eeeeee;color:#000000;cursor:hand;cursor:pointer;"' + tdScript; - break; - } - break; - case 'regexp': - switch (use) { - case 'table': - r = ' style="' + table + 'background-color:#CC0000;cell-spacing:3;"'; - break; - case 'th': - r = ' style="' + th + 'background-color:#FF0000;"' + thScript; - break; - case 'td-key': - r = ' style="' + th + 'background-color:#FF5757;color:#000000;cursor:hand;cursor:pointer;"' + tdScript; - break; - case 'td-value': - r = ' style="' + td + 'background-color:#fff;"'; - break; - } - break; - case 'date': - switch (use) { - case 'table': - r = ' style="' + table + 'background-color:#663399;cell-spacing:3;"'; - break; - case 'th': - r = ' style="' + th + 'background-color:#9966CC;"' + thScript; - break; - case 'td-key': - r = ' style="' + th + 'background-color:#B266FF;color:#000000;cursor:hand;cursor:pointer;"' + tdScript; - break; - case 'td-value': - r = ' style="' + td + 'background-color:#fff;"'; - break; - } - break; - case 'domelement': - case 'document': - case 'window': - switch (use) { - case 'table': - r = ' style="' + table + 'background-color:#FFCC33;cell-spacing:3;"'; - break; - case 'th': - r = ' style="' + th + 'background-color:#FFD966;"' + thScript; - break; - case 'td-key': - r = ' style="' + th + 'background-color:#FFF2CC;color:#000000;cursor:hand;cursor:pointer;"' + tdScript; - break; - case 'td-value': - r = ' style="' + td + 'background-color:#fff;"'; - break; - } - break; - } - return r; - }; - var _dumpType = function (obj) { - var t = typeof(obj); - if (t == 'function') { - var f = obj.toString(); - if ( ( /^\/.*\/[gi]??[gi]??$/ ).test(f)) { - return 'regexp'; - } else if ((/^\[object.*\]$/i ).test(f)) { - t = 'object' - } - } - if (t != 'object') { - return t; - } - switch (obj) { - case null: - return 'null'; - case window: - return 'window'; - case document: - return 'document'; - case window.event: - return 'event'; - } - if (window.event && (event.type == obj.type)) { - return 'event'; - } - var c = obj.constructor; - if (c != null) { - switch(c) { - case Array: - t = 'array'; - break; - case Date: - return 'date'; - case RegExp: - return 'regexp'; - case Object: - t = 'object'; - break; - case ReferenceError: - return 'error'; - default: - var sc = c.toString(); - var m = sc.match(/\s*function (.*)\(/); - if (m != null) { - return 'object'; - } - } - } - var nt = obj.nodeType; - if (nt != null) { - switch(nt) { - case 1: - return 'domelement'; - case 3: - return 'string'; - } + var dump = ''; + var st = typeof showTypes == 'undefined' ? true : showTypes; + var sa = typeof showAttributes == 'undefined' ? true : showAttributes; + var winName = 'dumpWin'; + var w = 760; + var h = 500; + var leftPos = screen.width ? (screen.width - w) / 2 : 0; + var topPos = screen.height ? (screen.height - h) / 2 : 0; + var settings = 'height=' + h + ',width=' + w + ',top=' + topPos + ',left=' + leftPos + ',scrollbars=yes,menubar=yes,status=yes,resizable=yes'; + var title = 'Dump'; + var script = 'function tRow(s) {t = s.parentNode.lastChild;tTarget(t, tSource(s)) ;}function tTable(s) {var switchToState = tSource(s) ;var table = s.parentNode.parentNode;for (var i = 1; i < table.childNodes.length; i++) {t = table.childNodes[i] ;if (t.style) {tTarget(t, switchToState);}}}function tSource(s) {if (s.style.fontStyle == "italic" || s.style.fontStyle == null) {s.style.fontStyle = "normal";s.title = "click to collapse";return "open";} else {s.style.fontStyle = "italic";s.title = "click to expand";return "closed" ;}}function tTarget (t, switchToState) {if (switchToState == "open") {t.style.display = "";} else {t.style.display = "none";}}'; + + var _recurse = function (o, type) { + var i; + var j = 0; + var r = ''; + type = _dumpType(o); + switch (type) { + case 'regexp': + var t = type; + r += '' + t + ''; + r += 'RegExp: ' + o + ''; + j++; + break; + case 'date': + var t = type; + r += '' + t + ''; + r += 'Date: ' + o + ''; + j++; + break; + case 'function': + var t = type; + var a = o.toString().match(/^.*function.*?\((.*?)\)/im); + var args = (a == null || typeof a[1] == 'undefined' || a[1] == '') ? 'none' : a[1]; + r += '' + t + ''; + r += 'Arguments: ' + args + 'Function: ' + o + ''; + j++; + break; + case 'domelement': + var t = type; + var attr = ''; + if (sa) { + for (i in o) {if (!/innerHTML|outerHTML/i.test(i)) {attr += i + ': ' + o[i] + '
      ';}} + } + r += '' + t + ''; + r += 'Node Name: ' + o.nodeName.toLowerCase() + ''; + r += 'Node Type: ' + o.nodeType + ''; + r += 'Node Value: ' + o.nodeValue + ''; + if (sa) { + r += 'Attributes: ' + attr + ''; + r += 'innerHTML: ' + o.innerHTML + ''; + if (typeof o.outerHTML != 'undefined') { + r += 'outerHTML: ' + o.outerHTML + ''; + } + } + j++; + break; + } + if (/object|array/.test(type)) { + for (i in o) { + var t = _dumpType(o[i]); + if (j < 1) { + r += '' + type + ''; + j++; + } + if (typeof o[i] == 'object' && o[i] != null) { + r += '' + i + (st ? ' [' + t + ']' : '') + '' + _recurse(o[i], t) + ''; + } else if (typeof o[i] == 'function') { + r += '' + i + (st ? ' [' + t + ']' : '') + '' + _recurse(o[i], t) + ''; + } else { + r += '' + i + (st ? ' [' + t + ']' : '') + '' + o[i] + ''; + } + } + } + if (j == 0) { + r += '' + type + ' [empty]'; + } + r += ''; + return r; + }; + var _dumpStyles = function(type, use) { + var r = ''; + var table = 'font-size:xx-small;font-family:verdana,arial,helvetica,sans-serif;cell-spacing:2px;'; + var th = 'font-size:xx-small;font-family:verdana,arial,helvetica,sans-serif;text-align:left;color: white;padding: 5px;vertical-align :top;cursor:hand;cursor:pointer;'; + var td = 'font-size:xx-small;font-family:verdana,arial,helvetica,sans-serif;vertical-align:top;padding:3px;'; + var thScript = 'onClick="tTable(this);" title="click to collapse"'; + var tdScript = 'onClick="tRow(this);" title="click to collapse"'; + switch (type) { + case 'string': + case 'number': + case 'boolean': + case 'undefined': + case 'object': + switch (use) { + case 'table': + r = ' style="' + table + 'background-color:#0000cc;"'; + break; + case 'th': + r = ' style="' + th + 'background-color:#4444cc;"' + thScript; + break; + case 'td-key': + r = ' style="' + td + 'background-color:#ccddff;cursor:hand;cursor:pointer;"' + tdScript; + break; + case 'td-value': + r = ' style="' + td + 'background-color:#fff;"'; + break; + } + break; + case 'array': + switch (use) { + case 'table': + r = ' style="' + table + 'background-color:#006600;"'; + break; + case 'th': + r = ' style="' + th + 'background-color:#009900;"' + thScript; + break; + case 'td-key': + r = ' style="' + td + 'background-color:#ccffcc;cursor:hand;cursor:pointer;"' + tdScript; + break; + case 'td-value': + r = ' style="' + td + 'background-color:#fff;"'; + break; + } + break; + case 'function': + switch (use) { + case 'table': + r = ' style="' + table + 'background-color:#aa4400;"'; + break; + case 'th': + r = ' style="' + th + 'background-color:#cc6600;"' + thScript; + break; + case 'td-key': + r = ' style="' + td + 'background-color:#fff;cursor:hand;cursor:pointer;"' + tdScript; + break; + case 'td-value': + r = ' style="' + td + 'background-color:#fff;"'; + break; + } + break; + case 'arguments': + switch (use) { + case 'table': + r = ' style="' + table + 'background-color:#dddddd;cell-spacing:3;"'; + break; + case 'td-key': + r = ' style="' + th + 'background-color:#eeeeee;color:#000000;cursor:hand;cursor:pointer;"' + tdScript; + break; + } + break; + case 'regexp': + switch (use) { + case 'table': + r = ' style="' + table + 'background-color:#CC0000;cell-spacing:3;"'; + break; + case 'th': + r = ' style="' + th + 'background-color:#FF0000;"' + thScript; + break; + case 'td-key': + r = ' style="' + th + 'background-color:#FF5757;color:#000000;cursor:hand;cursor:pointer;"' + tdScript; + break; + case 'td-value': + r = ' style="' + td + 'background-color:#fff;"'; + break; + } + break; + case 'date': + switch (use) { + case 'table': + r = ' style="' + table + 'background-color:#663399;cell-spacing:3;"'; + break; + case 'th': + r = ' style="' + th + 'background-color:#9966CC;"' + thScript; + break; + case 'td-key': + r = ' style="' + th + 'background-color:#B266FF;color:#000000;cursor:hand;cursor:pointer;"' + tdScript; + break; + case 'td-value': + r = ' style="' + td + 'background-color:#fff;"'; + break; + } + break; + case 'domelement': + case 'document': + case 'window': + switch (use) { + case 'table': + r = ' style="' + table + 'background-color:#FFCC33;cell-spacing:3;"'; + break; + case 'th': + r = ' style="' + th + 'background-color:#FFD966;"' + thScript; + break; + case 'td-key': + r = ' style="' + th + 'background-color:#FFF2CC;color:#000000;cursor:hand;cursor:pointer;"' + tdScript; + break; + case 'td-value': + r = ' style="' + td + 'background-color:#fff;"'; + break; + } + break; } - if (obj.toString != null) { - var ex = obj.toString(); - var am = ex.match(/^\[object (.*)\]$/i); - if (am != null) { - var am = am[1]; - switch(am.toLowerCase()) { - case 'event': + return r; + }; + var _dumpType = function (obj) { + var t = typeof(obj); + if (t == 'function') { + var f = obj.toString(); + if ( ( /^\/.*\/[gi]??[gi]??$/ ).test(f)) { + return 'regexp'; + } else if ((/^\[object.*\]$/i ).test(f)) { + t = 'object' + } + } + if (t != 'object') { + return t; + } + switch (obj) { + case null: + return 'null'; + case window: + return 'window'; + case document: + return 'document'; + case window.event: + return 'event'; + } + if (window.event && (event.type == obj.type)) { return 'event'; - case 'nodelist': - case 'htmlcollection': - case 'elementarray': - return 'array'; - case 'htmldocument': - return 'htmldocument'; } - } + var c = obj.constructor; + if (c != null) { + switch(c) { + case Array: + t = 'array'; + break; + case Date: + return 'date'; + case RegExp: + return 'regexp'; + case Object: + t = 'object'; + break; + case ReferenceError: + return 'error'; + default: + var sc = c.toString(); + var m = sc.match(/\s*function (.*)\(/); + if (m != null) { + return 'object'; + } + } + } + var nt = obj.nodeType; + if (nt != null) { + switch(nt) { + case 1: + return 'domelement'; + case 3: + return 'string'; + } + } + if (obj.toString != null) { + var ex = obj.toString(); + var am = ex.match(/^\[object (.*)\]$/i); + if (am != null) { + var am = am[1]; + switch(am.toLowerCase()) { + case 'event': + return 'event'; + case 'nodelist': + case 'htmlcollection': + case 'elementarray': + return 'array'; + case 'htmldocument': + return 'htmldocument'; + } + } + } + return t; + }; + dump += (/string|number|undefined|boolean/.test(typeof(object)) || object == null) ? object : _recurse(object, typeof object); + winName = window.open('', '', settings); + if (jQuery.browser.msie || jQuery.browser.browser == 'opera' || jQuery.browser.browser == 'safari') { + winName.document.write(' ' + title + ' '); + winName.document.write('' + dump + ''); + } else { + winName.document.body.innerHTML = dump; + winName.document.title = title; + var ffs = winName.document.createElement('script'); + ffs.setAttribute('type', 'text/javascript'); + ffs.appendChild(document.createTextNode(script)); + winName.document.getElementsByTagName('head')[0].appendChild(ffs); } - return t; - }; - dump += (/string|number|undefined|boolean/.test(typeof(object)) || object == null) ? object : _recurse(object, typeof object); - winName = window.open('', '', settings); - if (jQuery.browser.msie || jQuery.browser.browser == 'opera' || jQuery.browser.browser == 'safari') { - winName.document.write(' ' + title + ' '); - winName.document.write('' + dump + ''); - } else { - winName.document.body.innerHTML = dump; - winName.document.title = title; - var ffs = winName.document.createElement('script'); - ffs.setAttribute('type', 'text/javascript'); - ffs.appendChild(document.createTextNode(script)); - winName.document.getElementsByTagName('head')[0].appendChild(ffs); - } - winName.focus(); + winName.focus(); }; \ No newline at end of file diff --git a/extensions/listmodules/showproperties.js b/extensions/listmodules/showproperties.js index 3366d1138..df35a39de 100644 --- a/extensions/listmodules/showproperties.js +++ b/extensions/listmodules/showproperties.js @@ -1,12 +1,16 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ $(document).ready(function() { //Set up drag- and drop-functionality $('.show-property').draggable({ - scope: 'Resource', - helper: 'clone', - zIndex: 10000, - scroll: false, - appendTo: 'body' - }); + scope: 'Resource', + helper: 'clone', + zIndex: 10000, + scroll: false, + appendTo: 'body' +}); // highlight previously selected properties $('.show-property').each(function() { @@ -16,29 +20,25 @@ $(document).ready(function() { } else { var pos = $.inArray(propUri, shownInverseProperties); } - if (pos > -1) { $(this).addClass('selected'); } }) + function handleNewSelect() { var propUri = $(this).attr('about'); $(this).toggleClass('selected'); var action = $(this).hasClass('selected')? "add" : "remove"; - var inverse = $(this).hasClass('InverseProperty'); - var label = $(this).attr("title"); - var data = { shownProperties : [{ - "uri" : propUri, - "label" : label, - "action" : action, - "inverse" : inverse - }] - }; - + "uri" : propUri, + "label" : label, + "action" : action, + "inverse" : inverse + }]}; + var serialized = $.toJSON(data); // //reload page @@ -57,7 +57,6 @@ $(document).ready(function() { $('body').trigger('ontowiki.resource-list.reloaded'); showPropertiesAddDroppableToListTable(); }); - }; function showPropertiesAddDroppableToListTable() { @@ -69,10 +68,9 @@ $(document).ready(function() { drop: function(event, ui) {$(ui.draggable).each(handleNewSelect);} }); - } - + } + //set click handler for the properties $('.show-property').click(handleNewSelect); - showPropertiesAddDroppableToListTable(); }) diff --git a/extensions/modellist/modellist.js b/extensions/modellist/modellist.js index 6925156c5..a702fbd22 100644 --- a/extensions/modellist/modellist.js +++ b/extensions/modellist/modellist.js @@ -1,3 +1,7 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ $(document).ready(function() { $('.modellist_hidden_button').livequery('click', function() { if ($(this).hasClass('show')) { @@ -24,17 +28,17 @@ function updateModellistModule() $('.contextmenu-enhanced .contextmenu').fadeOut(effectTime, function(){ $(this).remove(); }) - + var options = { url: urlBase + 'module/get/name/modellist/id/modellist' }; - + $.get(options.url, function(data) { $('#modellist').replaceWith(data); $('#modellist').addClass('has-contextmenus-block') .addClass('windowbuttonscount-right-1') .addClass('windowbuttonscount-left-1'); - + $('#modellist').enhanceWindow(); }); } diff --git a/extensions/navigation/navigation.css b/extensions/navigation/navigation.css index caec7ccbd..b151e0a6a 100644 --- a/extensions/navigation/navigation.css +++ b/extensions/navigation/navigation.css @@ -1,3 +1,7 @@ +/* + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ .content h2.navRoot { font-size:1em; @@ -21,12 +25,28 @@ } #navigation .icon.icon-arrow-previous { background-image:url(icon-previous.png); width:12px; } + #navigation .icon.icon-arrow-first { background-image:url(icon-first.png); width:8px; } #navigation .navRoot.fancybuttons .icon.icon-arrow-previous -{ background-color:#999; width:1.2em; height:1.2em; -moz-border-radius:0.6em; border-radius:0.6em; position:relative; left:-0.25em; } +{ + background-color:#999; + width:1.2em; + height:1.2em; + -moz-border-radius:0.6em; + border-radius:0.6em; + position:relative; + left:-0.25em; +} + #navigation .navRoot.fancybuttons .icon.icon-arrow-first -{ background-color:#bbb; width:0.9em; height:0.9em; -moz-border-radius:0.45em; border-radius:0.45em; } +{ + background-color:#bbb; + width:0.9em; + height:0.9em; + -moz-border-radius:0.45em; + border-radius:0.45em; +} /* set contextmenu more left */ #navigation .has-contextmenus-block li a:hover span.button diff --git a/extensions/queries/resources/querieseditor.css b/extensions/queries/resources/querieseditor.css index 8ca5f2422..bbe75d108 100644 --- a/extensions/queries/resources/querieseditor.css +++ b/extensions/queries/resources/querieseditor.css @@ -1,3 +1,7 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ .configModules { clear: left; } diff --git a/extensions/queries/resources/savepartial.js b/extensions/queries/resources/savepartial.js index 9644bc05a..9f3d3bfa3 100644 --- a/extensions/queries/resources/savepartial.js +++ b/extensions/queries/resources/savepartial.js @@ -1,74 +1,78 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ $(document).ready(function() { - $("#savequerybutton").click(function(){ - var box = $("#editortype"); - if(box.val() == "querybuilder"){ - $.get(urlBase+"querybuilder/updatesparql", {json: $('#hidden_json').val() , limit: $("#limit").val()}, function(query){ - $.ajax({ - url: urlBase + "queries/savequery", - type: "POST", - data: ({ - json: $('#hidden_json').val(), - name: $('#qname').val(), - qdesc: $('#qdesc').val(), - "query": query, - generator: "qb", - share: $("#savequerysharecheckbox").is(':checked') ? "true" : "false" - }), - dataType: "text", - success: function(msg){ - //TODO check for status - if(msg != "All OK") - alert("Fehler "+msg); - //open(urlBase + "querybuilding/listquery"); - } - }); + $("#savequerybutton").click(function(){ + var box = $("#editortype"); + if(box.val() == "querybuilder"){ + $.get(urlBase+"querybuilder/updatesparql", {json: $('#hidden_json').val() , limit: $("#limit").val()}, function(query){ + $.ajax({ + url: urlBase + "queries/savequery", + type: "POST", + data: ({ + json: $('#hidden_json').val(), + name: $('#qname').val(), + qdesc: $('#qdesc').val(), + "query": query, + generator: "qb", + share: $("#savequerysharecheckbox").is(':checked') ? "true" : "false" + }), + dataType: "text", + success: function(msg){ + //TODO check for status + if(msg != "All OK") + alert("Fehler "+msg); + //open(urlBase + "querybuilding/listquery"); + } + }); - }); + }); - } else if(box.val() == "graphicalquerybuilder"){ - if (!GQB.view.selectedViewClass) {alert(GQB.translate("noPatternSelMsg"));return;} - var modelPattern = GQB.view.selectedViewClass.parentViewPattern.modelPattern; - if (!modelPattern) return; // sollte nicht passieren, ist schwerer Fehler - modelPattern.name = $('#qname').val(); - modelPattern.description= $('#qdesc').val(); - modelPattern.save(); + } else if(box.val() == "graphicalquerybuilder"){ + if (!GQB.view.selectedViewClass) {alert(GQB.translate("noPatternSelMsg"));return;} + var modelPattern = GQB.view.selectedViewClass.parentViewPattern.modelPattern; + if (!modelPattern) return; // sollte nicht passieren, ist schwerer Fehler + modelPattern.name = $('#qname').val(); + modelPattern.description= $('#qdesc').val(); + modelPattern.save(); - } else if(box.val() == "queryeditor"){ - $.ajax({ - url: urlBase + "queries/savequery", - type: "POST", - data: ({ - json: "", - name: $('#qname').val(), - "query": editor.getValue(), - generator: "qe", - //share: $("#savequerysharecheckbox").is(':checked') ? "true" : "false" - share: "true" - }), - dataType: "text", - error: function(xmlHttpObj, type, error){ - alert ("error"); - }, - success: function(msg){ - //TODO check for status - if (msg != "All OK") { - alert("Fehler " + msg); - } else { - $('.innercontent').prepend("

      The Query was saved

      "); - - setTimeout(function (){ - $("#savequerynotification").remove(); - }, 5000); - } - //open(urlBase + "querybuilding/listquery"); - } - }); - } else { - alert("error: dont know which builder this is"); - } - - - - }); - $('#qname').innerLabel(); + } else if(box.val() == "queryeditor"){ + $.ajax({ + url: urlBase + "queries/savequery", + type: "POST", + data: ({ + json: "", + name: $('#qname').val(), + "query": editor.getValue(), + generator: "qe", + //share: $("#savequerysharecheckbox").is(':checked') ? "true" : "false" + share: "true" + }), + dataType: "text", + error: function(xmlHttpObj, type, error){ + alert ("error"); + }, + success: function(msg){ + //TODO check for status + if (msg != "All OK") { + alert("Fehler " + msg); + } else { + $('.innercontent').prepend("

      The Query was saved

      "); + + setTimeout(function (){ + $("#savequerynotification").remove(); + }, 5000); + } + //open(urlBase + "querybuilding/listquery"); + } + }); + } else { + alert("error: dont know which builder this is"); + } + + + + }); + $('#qname').innerLabel(); }); \ No newline at end of file diff --git a/extensions/themes/darkorange/styles/default.css b/extensions/themes/darkorange/styles/default.css index 02405b86a..6486cdd49 100644 --- a/extensions/themes/darkorange/styles/default.css +++ b/extensions/themes/darkorange/styles/default.css @@ -3,8 +3,10 @@ * OntoWiki Extra Styles * DARK ORANGE * - * @depends OntoWiki Silverblue Theme - * @author http://michael.haschke.biz/ + * @depends OntoWiki Silverblue Theme + * @author http://michael.haschke.biz/ + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) * *************************************************************************/ diff --git a/extensions/themes/silverblue/scripts/main.js b/extensions/themes/silverblue/scripts/main.js index c3edd3541..22ad030b6 100644 --- a/extensions/themes/silverblue/scripts/main.js +++ b/extensions/themes/silverblue/scripts/main.js @@ -1,3 +1,9 @@ +/** + * + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ + // namespace for script variables var OntoWiki = {}; diff --git a/extensions/themes/silverblue/scripts/serialize-php.js b/extensions/themes/silverblue/scripts/serialize-php.js index 598a4e442..1e7121301 100644 --- a/extensions/themes/silverblue/scripts/serialize-php.js +++ b/extensions/themes/silverblue/scripts/serialize-php.js @@ -1,3 +1,8 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ + function serialize (mixed_value) { // Returns a string representation of variable (which can later be unserialized by php) // diff --git a/extensions/themes/silverblue/scripts/support.js b/extensions/themes/silverblue/scripts/support.js index ed8c89598..a026e48f3 100644 --- a/extensions/themes/silverblue/scripts/support.js +++ b/extensions/themes/silverblue/scripts/support.js @@ -3,7 +3,7 @@ * This file is part of the {@link http://ontowiki.net OntoWiki} project. * * @copyright Copyright (c) 2009, {@link http://aksw.org AKSW} - * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ /** diff --git a/extensions/themes/silverblue/styles/clickmenu.css b/extensions/themes/silverblue/styles/clickmenu.css index 00c25ee80..8c583ea34 100644 --- a/extensions/themes/silverblue/styles/clickmenu.css +++ b/extensions/themes/silverblue/styles/clickmenu.css @@ -1,3 +1,8 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ + div.cmDiv { /* border-top: 1px solid #000;*/ border-bottom: 0.1em solid #ddd; diff --git a/extensions/themes/silverblue/styles/default.css b/extensions/themes/silverblue/styles/default.css index aff3f467b..1b495abaf 100644 --- a/extensions/themes/silverblue/styles/default.css +++ b/extensions/themes/silverblue/styles/default.css @@ -1,7 +1,10 @@ /** - * default.css - * Ontowiki main style sheet, advanced theme - * @author: http://michael.haschke.biz/ + * default.css + * Ontowiki main style sheet, advanced theme + * @author http://michael.haschke.biz/ + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * CONTENT diff --git a/extensions/themes/silverblue/styles/default.dev.css b/extensions/themes/silverblue/styles/default.dev.css index 985a03507..9ab2d8063 100644 --- a/extensions/themes/silverblue/styles/default.dev.css +++ b/extensions/themes/silverblue/styles/default.dev.css @@ -1,12 +1,15 @@ /** - * default.dev.css - * Ontowiki developer/experimental style sheet, advanced theme - * - * ATTENTION, since this file contains of development styles, it only included in - * debug mode. See more infos on CSS Development on - * http://code.google.com/p/ontowiki/wiki/CSSDevelopment - * - */ + * default.dev.css + * Ontowiki developer/experimental style sheet, advanced theme + * + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * + * ATTENTION, since this file contains of development styles, it only included in + * debug mode. See more infos on CSS Development on + * http://code.google.com/p/ontowiki/wiki/CSSDevelopment + * + */ /* form stuff ****************************************************************/ diff --git a/extensions/themes/silverblue/styles/deprecated.dev.css b/extensions/themes/silverblue/styles/deprecated.dev.css index d5c4e23b8..ebcba77ba 100644 --- a/extensions/themes/silverblue/styles/deprecated.dev.css +++ b/extensions/themes/silverblue/styles/deprecated.dev.css @@ -1,14 +1,16 @@ /** - * deprecated.dev.css - * - * - it makes deprecated gui elements visible - * - should be only included in development environments - * - * @see http://code.google.com/p/ontowiki/wiki/CSSDevelopment - * - * @since 0.9.5 - * @author Michael Haschke - */ + * deprecated.dev.css + * + * - it makes deprecated gui elements visible + * - should be only included in development environments + * + * @see http://code.google.com/p/ontowiki/wiki/CSSDevelopment + * @since 0.9.5 + * @author Michael Haschke + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * + */ diff --git a/extensions/themes/silverblue/styles/old.css b/extensions/themes/silverblue/styles/old.css index c42ed1ad6..43b9162e3 100644 --- a/extensions/themes/silverblue/styles/old.css +++ b/extensions/themes/silverblue/styles/old.css @@ -1,3 +1,7 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ table * { vertical-align: top; } diff --git a/extensions/themes/silverblue/styles/patches/ie6.clickmenu.css b/extensions/themes/silverblue/styles/patches/ie6.clickmenu.css index c2286ade0..80375c939 100644 --- a/extensions/themes/silverblue/styles/patches/ie6.clickmenu.css +++ b/extensions/themes/silverblue/styles/patches/ie6.clickmenu.css @@ -1,3 +1,7 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ .clickMenu ul { float: left; width: 100%; diff --git a/extensions/themes/silverblue/styles/patches/ie6.css b/extensions/themes/silverblue/styles/patches/ie6.css index bf428b30f..a14ed6f39 100644 --- a/extensions/themes/silverblue/styles/patches/ie6.css +++ b/extensions/themes/silverblue/styles/patches/ie6.css @@ -1,3 +1,7 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ /* Zoom it, baby! (and give layout to elements) */ diff --git a/extensions/themes/silverblue/styles/patches/ie7.css b/extensions/themes/silverblue/styles/patches/ie7.css index 8f185493b..956b93d68 100644 --- a/extensions/themes/silverblue/styles/patches/ie7.css +++ b/extensions/themes/silverblue/styles/patches/ie7.css @@ -1,3 +1,8 @@ +/** + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ + /* Tabs */ div.window .tabs { From c9d0b1375a3fade73ce9f7c00c247ac45793b3c1 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Wed, 13 Aug 2014 10:12:41 +0200 Subject: [PATCH 063/156] Fix #285. Forward Erfurt. --- libraries/Erfurt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Erfurt b/libraries/Erfurt index 45ce14ec3..14c8046e4 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit 45ce14ec38daef6e682cbc90d07f332754d27b00 +Subproject commit 14c8046e4377c72c8317bb800094830db66800df From 30b2a4c44bb76c3eaa6550013816bee097b47a8b Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Wed, 13 Aug 2014 17:50:51 +0200 Subject: [PATCH 064/156] Move responsibility for contentType and fileExtension to Erfurt --- application/controllers/ModelController.php | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/application/controllers/ModelController.php b/application/controllers/ModelController.php index dee5a349a..553236592 100644 --- a/application/controllers/ModelController.php +++ b/application/controllers/ModelController.php @@ -633,24 +633,9 @@ public function exportAction() $filename = 'export' . date('Y-m-d_Hi'); - switch ($format) { - case 'rdfxml': - $contentType = 'application/rdf+xml'; - $filename .= '.rdf'; - break; - case 'rdfn3': - $contentType = 'text/rdf+n3'; - $filename .= '.n3'; - break; - case 'rdfjson': - $contentType = 'application/json'; - $filename .= '.json'; - break; - case 'turtle': - $contentType = 'application/x-turtle'; - $filename .= '.ttl'; - break; - } + $description = Erfurt_Syntax_RdfSerializer::getFormatDescription($format); + $contentType = $description['contentType']; + $filename .= $description['fileExtension']; $this->_helper->viewRenderer->setNoRender(); $this->_helper->layout->disableLayout(); From ed65f0eea73754cfd4338cc69d3c83ff3824d68e Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Thu, 14 Aug 2014 18:24:12 +0200 Subject: [PATCH 065/156] Add initial ResourceJsonrpcAdapter --- extensions/jsonrpc/MetaJsonrpcAdapter.php | 1 + extensions/jsonrpc/ResourceJsonrpcAdapter.php | 178 ++++++++++++++++++ 2 files changed, 179 insertions(+) create mode 100644 extensions/jsonrpc/ResourceJsonrpcAdapter.php diff --git a/extensions/jsonrpc/MetaJsonrpcAdapter.php b/extensions/jsonrpc/MetaJsonrpcAdapter.php index fa878c32b..d4838e5a7 100644 --- a/extensions/jsonrpc/MetaJsonrpcAdapter.php +++ b/extensions/jsonrpc/MetaJsonrpcAdapter.php @@ -23,6 +23,7 @@ class MetaJsonrpcAdapter 'meta' => 'methods to query the json service itself', 'store' => 'methods to manipulate and query the store', 'model' => 'methods to manipulate and query a specific model', + 'resource' => 'methods to manipulate and query a specific resource', //'evolution' => 'methods to manage and use the evolution engine', ); diff --git a/extensions/jsonrpc/ResourceJsonrpcAdapter.php b/extensions/jsonrpc/ResourceJsonrpcAdapter.php new file mode 100644 index 000000000..874353b41 --- /dev/null +++ b/extensions/jsonrpc/ResourceJsonrpcAdapter.php @@ -0,0 +1,178 @@ +_store = Erfurt_App::getInstance()->getStore(); + $this->_erfurt = Erfurt_App::getInstance(); + $this->_config = $this->_erfurt->getConfig(); + } + + /** + * @desc get a resource as RDF/JSON + * + * @param string modelIri + * @param string resourceIri + * @param string format + * + * @return string + */ + public function get($modelIri, $resourceIri, $format = 'rdfjson') + { + if (!$this->_store->isModelAvailable($modelIri)) { + return 'Error: Model "' . $modelIri . '" is not available.'; + } + $editable = $this->_store->getModel($modelIri)->isEditable(); + $supportedFormats = Erfurt_Syntax_RdfSerializer::getSupportedFormats(); + if (!isset($supportedFormats[$format])) { + return 'Error: Format "' . $format . '" is not supported by serializer.'; + } + $serializer = Erfurt_Syntax_RdfSerializer::rdfSerializerWithFormat($format); + // create hash for current status of resource + $currentDataHash = $this->_getCurrentResourceHash($modelIri, $resourceIri); + $return = new stdClass(); + $return->dataHash = $currentDataHash; + $return->editable = $editable; + $return->data = $serializer->serializeResourceToString($resourceIri, $modelIri); + return $return; + } + + /** + * @desc update a modified resource + * + * @param string modelIri + * @param string resourceIri + * @param string data + * @param string format + * @param string origDataHash + * + * @return string + */ + public function update($modelIri, $resourceIri, $data, $origDataHash, $format = 'rdfjson') + { + $model = $this->_store->getModel($modelIri); + if (!$model->isEditable()) { + return 'Error: Model "' . $modelIri . '" is not available.'; + } + // TODO check for formats supported by the parser (not yet implemented) + + // calculate hash of current status and compare to commited hash + $currentDataHash = $this->_getCurrentResourceHash($modelIri, $resourceIri); + + if ($currentDataHash !== $origDataHash) { + return 'Error: Resource "' . $resourceIri . '" was edited during your session.'; + } + + // get current statements of resource + $resource = $model->getResource($resourceIri); + $originalStatements = $resource->getDescription(); + + // get new statements of resource + $parser = Erfurt_Syntax_RdfParser::rdfParserWithFormat($format); + $modifiedStatements = $parser->parse($data, Erfurt_Syntax_RdfParser::LOCATOR_DATASTRING); + + $model->updateWithMutualDifference($originalStatements, $modifiedStatements); + + return true; + } + + /** + * @desc counts the number of statements of a model + * + * @param string modelIri + * @param string whereSpec + * @param string countSpec + * + * @return string + */ + public function count($modelIri, $whereSpec = '{?s ?p ?o}', $countSpec = '*') + { + return $this->_store->countWhereMatches($modelIri, $whereSpec, $countSpec); + } + + /** + * @desc add all input statements to the model + * + * @param string $modelIri + * @param string $inputModel + * + * @return bool + */ + public function add($modelIri, $inputModel) + { + $model = $this->_store->getModel($modelIri); + $versioning = $this->_erfurt->getVersioning(); + $actionSpec = array(); + $actionSpec['type'] = 80201; + $actionSpec['modeluri'] = (string)$model; + $actionSpec['resourceuri'] = (string)$model; + + $versioning->startAction($actionSpec); + $model->addMultipleStatements($inputModel); + $versioning->endAction(); + + return true; + } + + /** + * @desc create a new knowledge base + * + * @param string $modelIri + * + * @return bool + */ + public function create($modelIri) + { + $this->_store->getNewModel($modelIri); + + return true; + } + + /** + * @desc drop an existing knowledge base + * + * @param string $modelIri + * + * @return bool + */ + public function drop($modelIri) + { + $this->_store->deleteModel($modelIri); + + return true; + } + + /** + * This methid calculates a hash value for a resource including its IRI and all its properties. + * + * @param string $modelIri the IRI of the model + * @param string $resourceIri the IRI of the resource + * + * @return string with the hash value + */ + private function _getCurrentResourceHash ($modelIri, $resourceIri) + { + $resource = $this->_store->getModel($modelIri)->getResource($resourceIri); + $statements = $resource->getDescription(); + return md5(serialize($statements)); + } +} From c89c1ff5517f114914c8dd3747df955d8434dc5e Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Fri, 15 Aug 2014 11:14:13 +0200 Subject: [PATCH 066/156] Fix coding standard for ApplicationController --- .../controllers/ApplicationController.php | 58 +++++++++++-------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/application/controllers/ApplicationController.php b/application/controllers/ApplicationController.php index 376635610..433d5a7ea 100644 --- a/application/controllers/ApplicationController.php +++ b/application/controllers/ApplicationController.php @@ -30,12 +30,17 @@ public function aboutAction() $version .= ' ' . $this->_config->version->suffix; } - $cacheWritable = is_writable($this->_config->cache->path) - ? ' (writable)' - : ' (not writable!)'; - $logWritable = is_writable($this->_config->log->path) - ? ' (writable)' - : ' (not writable!)'; + if (is_writable($this->_config->cache->path)) { + $cacheWritable = ' (writable)'; + } else { + $cacheWritable = ' (not writable!)'; + } + + if (is_writable($this->_config->log->path)) { + $logWritable = ' (writable)'; + } else { + $logWritable = ' (not writable!)'; + } $cacheBackend = $this->_config->cache->backend->type; $cacheBackendOptions = array(); @@ -84,15 +89,12 @@ public function aboutAction() ); // check if the git comand exists and ontowiki is a working directory - if (file_exists(".git") - && substr(@exec("git --version"), 0, 11) == "git version" - ) { + if (file_exists('.git') && substr(@exec('git --version'), 0, 11) == 'git version') { @exec('git status', $arr); $data['Git Versioning'] = array( - 'Version' => @exec("git describe"), + 'Version' => @exec('git describe'), 'Branch' => substr($arr[0], 12), 'last commit' => @exec("git log --pretty=format:'%ar' -n 1") - //'Git Version' => substr(@exec("git --version"),12), ); } @@ -223,9 +225,9 @@ public function registerAction() array('escape' => false, 'translate' => false) ) ); - + $contentType = $this->_request->getHeader('Content-Type'); - if(strstr($contentType, 'application/json')){ + if (strstr($contentType, 'application/json')) { $rawBody = $this->_request->getRawBody(); echo $rawBody; $post = Zend_Json::decode($rawBody); @@ -256,7 +258,8 @@ public function registerAction() $emailValidator = new Zend_Validate_EmailAddress(); - if (!$this->_erfurt->isActionAllowed('RegisterNewUser') + if ( + !$this->_erfurt->isActionAllowed('RegisterNewUser') || !($actionConfig = $this->_erfurt->getActionConfig('RegisterNewUser')) ) { $message = 'Action not permitted for the current user.'; @@ -270,20 +273,23 @@ public function registerAction() $message = 'Email address is already registered.'; $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR)); } else { - if (isset($actionConfig['mailvalidation']) + if ( + isset($actionConfig['mailvalidation']) && $actionConfig['mailvalidation'] == 'yes' && !$emailValidator->isValid($email) ) { $message = 'Email address validation failed.'; $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR)); } else { - if (in_array($username, $registeredUsernames) + if ( + in_array($username, $registeredUsernames) || ($username == $this->_owApp->erfurt->getStore()->getDbUser()) ) { $message = 'Username already registered.'; $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR)); } else { - if (isset($actionConfig['uidregexp']) + if ( + isset($actionConfig['uidregexp']) && !preg_match($actionConfig['uidregexp'], $username) ) { $message = 'Username contains illegal characters.'; @@ -299,7 +305,8 @@ public function registerAction() new OntoWiki_Message($message, OntoWiki_Message::ERROR) ); } else { - if (isset($actionConfig['passregexp']) + if ( + isset($actionConfig['passregexp']) && $actionConfig['passregexp'] != '' && !@preg_match($actionConfig['passregexp'], $password) ) { @@ -382,7 +389,8 @@ public function openidregAction() $emailValidator = new Zend_Validate_EmailAddress(); // Is register action allowed for current user? - if (!$this->_erfurt->isActionAllowed('RegisterNewUser') + if ( + !$this->_erfurt->isActionAllowed('RegisterNewUser') || !($actionConfig = $this->_erfurt->getActionConfig('RegisterNewUser')) ) { @@ -396,7 +404,9 @@ public function openidregAction() // Does user already exist? $message = 'A user with the given OpenID is already registered.'; $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR)); - } else if (!empty($email) && isset($actionConfig['mailvalidation']) + } else if ( + !empty($email) + && isset($actionConfig['mailvalidation']) && $actionConfig['mailvalidation'] === 'yes' && !$emailValidator->isValid($email) ) { @@ -654,10 +664,10 @@ public function webidregAction() $emailValidator = new Zend_Validate_EmailAddress(); // Is register action allowed for current user? - if (!$this->_erfurt->isActionAllowed('RegisterNewUser') + if ( + !$this->_erfurt->isActionAllowed('RegisterNewUser') || !($actionConfig = $this->_erfurt->getActionConfig('RegisterNewUser')) ) { - $message = 'Action not permitted for the current user.'; $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR)); } else if (empty($webId)) { @@ -668,7 +678,9 @@ public function webidregAction() // Does user already exist? $message = 'A user with the given WebID is already registered.'; $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR)); - } else if (!empty($email) && isset($actionConfig['mailvalidation']) + } else if ( + !empty($email) + && isset($actionConfig['mailvalidation']) && $actionConfig['mailvalidation'] === 'yes' && !$emailValidator->isValid($email) ) { From 28d9c2ecdb24b5be61ce09fc97c4ebf53ea4a785 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Fri, 15 Aug 2014 11:15:24 +0200 Subject: [PATCH 067/156] Fix getting branch name (wasn't language independent) --- .../controllers/ApplicationController.php | 3 +- .../basicimporter/BasicimporterPlugin.php | 36 +++++++++++++++++++ extensions/basicimporter/doap.n3 | 2 +- libraries/Erfurt | 2 +- 4 files changed, 39 insertions(+), 4 deletions(-) diff --git a/application/controllers/ApplicationController.php b/application/controllers/ApplicationController.php index 433d5a7ea..ffa9e2091 100644 --- a/application/controllers/ApplicationController.php +++ b/application/controllers/ApplicationController.php @@ -90,10 +90,9 @@ public function aboutAction() // check if the git comand exists and ontowiki is a working directory if (file_exists('.git') && substr(@exec('git --version'), 0, 11) == 'git version') { - @exec('git status', $arr); $data['Git Versioning'] = array( 'Version' => @exec('git describe'), - 'Branch' => substr($arr[0], 12), + 'Branch' => @exec('git rev-parse --abbrev-ref HEAD'), 'last commit' => @exec("git log --pretty=format:'%ar' -n 1") ); } diff --git a/extensions/basicimporter/BasicimporterPlugin.php b/extensions/basicimporter/BasicimporterPlugin.php index 5f540e3f1..32c1414ee 100644 --- a/extensions/basicimporter/BasicimporterPlugin.php +++ b/extensions/basicimporter/BasicimporterPlugin.php @@ -23,6 +23,14 @@ public function onProvideImportActions($event) $this->provideImportActions($event); } + /** + * Listen for the store initialization event + */ + public function onSetupStore($event) + { + // $this->importModels(); + } + /* * here we add new import actions */ @@ -57,4 +65,32 @@ private function provideImportActions($event) $event->importActions = array_merge($event->importActions, $myImportActions); return $event; } + + private function importModels () + { + // read config for models to import + $owApp = OntoWiki::getInstance(); + $models = $this->_privateConfig->setup->model->toArray(); + foreach ($models as $info) { + // import models + $path = ONTOWIKI_ROOT . '/' . $info['path']; + $uri = $info['uri']; + $hidden = $info['hidden']; + $this->_import($uri, $path); + } + } + + private function _import($modelIri, $fileOrUrl) + { + try { + Erfurt_App::getInstance()->getStore()->importRdf($modelIri, $fileOrUrl); + } catch (Erfurt_Exception $e) { + // re-throw + throw new OntoWiki_Controller_Exception( + 'Could not import given model: ' . $e->getMessage(), + 0, + $e + ); + } + } } diff --git a/extensions/basicimporter/doap.n3 b/extensions/basicimporter/doap.n3 index 63f21c34b..7da85ede4 100644 --- a/extensions/basicimporter/doap.n3 +++ b/extensions/basicimporter/doap.n3 @@ -11,7 +11,7 @@ :extension a doap:Project ; doap:name "basicimporter" ; owconfig:privateNamespace ; - owconfig:pluginEvent event:onProvideImportActions ; + owconfig:pluginEvent event:onProvideImportActions, event:onSetupStore ; owconfig:enabled "true"^^xsd:boolean ; rdfs:label "Basic Data Import Actions" ; doap:description "provides import from web an RDF files" ; diff --git a/libraries/Erfurt b/libraries/Erfurt index 14c8046e4..0ae94ce54 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit 14c8046e4377c72c8317bb800094830db66800df +Subproject commit 0ae94ce54fe0cc4da4176d4215f9ee7bb1687590 From f1f2ef85e41e68901b859ee9fa58ab8990d11462 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Fri, 15 Aug 2014 15:25:52 +0200 Subject: [PATCH 068/156] Fix #226. Forward Erfurt. --- libraries/Erfurt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Erfurt b/libraries/Erfurt index 0ae94ce54..83ba7c2f1 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit 0ae94ce54fe0cc4da4176d4215f9ee7bb1687590 +Subproject commit 83ba7c2f12fc7f400122bbb30c9c6913a4b390d8 From 66825d7ccf35e7ec31a73d0b7f7a66414e5bf048 Mon Sep 17 00:00:00 2001 From: Clemens Hoffmann Date: Wed, 27 Aug 2014 14:30:26 +0200 Subject: [PATCH 069/156] add hide type when using add instance --- extensions/themes/silverblue/scripts/support.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/themes/silverblue/scripts/support.js b/extensions/themes/silverblue/scripts/support.js index a026e48f3..1c324ff12 100644 --- a/extensions/themes/silverblue/scripts/support.js +++ b/extensions/themes/silverblue/scripts/support.js @@ -465,6 +465,8 @@ function populateRDFauthor(data, protect, resource, graph, workingmode) { // remove all values except for type if ( stmt.predicateURI() !== 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' ) { stmt._object.value = ""; + } else { + stmt._hidden = true; } } From 97d2a559bdbca63ac7400e4d3cbc5901d70e1ba5 Mon Sep 17 00:00:00 2001 From: Clemens Hoffmann Date: Wed, 27 Aug 2014 14:32:05 +0200 Subject: [PATCH 070/156] forward rdfauthor --- libraries/RDFauthor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/RDFauthor b/libraries/RDFauthor index 415ac249f..e87cf9eb6 160000 --- a/libraries/RDFauthor +++ b/libraries/RDFauthor @@ -1 +1 @@ -Subproject commit 415ac249f4369ef91c1e878d95a82b6d80abf48a +Subproject commit e87cf9eb63aeae87a8893d9457ca1556d440b211 From 730a23a12a041e090b19d004cb5f8d3034a1df74 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Wed, 24 Sep 2014 11:54:47 +0200 Subject: [PATCH 071/156] Forward Erfurt --- libraries/Erfurt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Erfurt b/libraries/Erfurt index 83ba7c2f1..9a0f00a6f 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit 83ba7c2f12fc7f400122bbb30c9c6913a4b390d8 +Subproject commit 9a0f00a6f41687afac7118dbdb069f3ee034a345 From 3326e6194f56e305862a205cc360a32c7ba8e6ad Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 28 Oct 2014 14:59:18 +0100 Subject: [PATCH 072/156] Add getTitle method to ModelJsonrpcAdapter --- extensions/jsonrpc/ModelJsonrpcAdapter.php | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/extensions/jsonrpc/ModelJsonrpcAdapter.php b/extensions/jsonrpc/ModelJsonrpcAdapter.php index 19d78e8c1..66f22db8f 100644 --- a/extensions/jsonrpc/ModelJsonrpcAdapter.php +++ b/extensions/jsonrpc/ModelJsonrpcAdapter.php @@ -136,6 +136,30 @@ public function deletePrefix($modelIri, $prefix = 'rdf') } } + /** + * @desc get the titles for a given array of resources + * + * @param string modelIri + * @param array resources + * + * @return array An associative array of resources and their titles + */ + public function getTitles($modelIri, $resources) + { + // ["http://pfarrerbuch.comiles.eu/sachsen/"] + $resources = json_decode($resources); + + $model = $this->_store->getModel($modelIri); + $titleHelper = new OntoWiki_Model_TitleHelper($model, $this->_store); + $titleHelper->addResources($resources); + $titles = array(); + foreach ($resources as $resourceUri) { + $titles[$resourceUri] = $titleHelper->getTitle($resourceUri); + } + + return $titles; + } + /** * @desc counts the number of statements of a model * From c9ace75c86a448c858011144cdb0d7968f1c5a30 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 28 Oct 2014 16:40:18 +0100 Subject: [PATCH 073/156] Forward zend version to avoid deprecated methods --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d71056377..97699e874 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -ZENDVERSION=1.12.7 +ZENDVERSION=1.12.9 ZEND2VERSION=2.2.2 default: From 08d659938c3f4f3b040aee2d6ba3a5c911229fbb Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 28 Oct 2014 23:38:08 +0100 Subject: [PATCH 074/156] Fix #145. Fix special chars in Linked Data request URIs. --- application/classes/OntoWiki/Dispatcher.php | 1 + 1 file changed, 1 insertion(+) diff --git a/application/classes/OntoWiki/Dispatcher.php b/application/classes/OntoWiki/Dispatcher.php index bcd62c3d7..133cd90c2 100644 --- a/application/classes/OntoWiki/Dispatcher.php +++ b/application/classes/OntoWiki/Dispatcher.php @@ -163,6 +163,7 @@ public function isDispatchable(Zend_Controller_Request_Abstract $request) // URI may not contain a whitespace character! $pathInfo = str_replace(' ', '+', $pathInfo); + $pathInfo = urldecode($pathInfo); if (class_exists($className, false)) { // give a chance to let class handle (e.g. index controller news action default) From f2b23699c6094f3bd0d5730e8c92f037554c8562 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Fri, 14 Nov 2014 23:24:33 +0100 Subject: [PATCH 075/156] Forward Erfurt --- libraries/Erfurt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Erfurt b/libraries/Erfurt index 9a0f00a6f..e014c884b 160000 --- a/libraries/Erfurt +++ b/libraries/Erfurt @@ -1 +1 @@ -Subproject commit 9a0f00a6f41687afac7118dbdb069f3ee034a345 +Subproject commit e014c884bac928acb7b576abc7730d8edfbe1dc9 From b4181fbf8647ac150b2829feb1ca42e3bab55e5a Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Mon, 17 Nov 2014 21:34:28 +0100 Subject: [PATCH 076/156] Fix testing for extensions --- Makefile | 2 +- application/tests/BootstrapExtensions.php | 71 +++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 application/tests/BootstrapExtensions.php diff --git a/Makefile b/Makefile index 97699e874..6c5964e5f 100644 --- a/Makefile +++ b/Makefile @@ -199,7 +199,7 @@ test-integration-mysql-cc: test-directories @cd application/tests/integration && EF_STORE_ADAPTER=zenddb phpunit test-extensions: directories - @phpunit --bootstrap application/tests/Bootstrap.php extensions + @phpunit --bootstrap application/tests/BootstrapExtensions.php extensions test: make test-unit diff --git a/application/tests/BootstrapExtensions.php b/application/tests/BootstrapExtensions.php new file mode 100644 index 000000000..eaa6e03f2 --- /dev/null +++ b/application/tests/BootstrapExtensions.php @@ -0,0 +1,71 @@ +registerNamespace('OntoWiki_'); +$loader->registerNamespace('Erfurt_'); +//$loader->registerNamespace('PHPUnit_'); + +// Access Erfurt app for constant loading etc. +Erfurt_App::getInstance(false); + +/** OntoWiki */ +require_once 'OntoWiki.php'; From dae0867d3d9716d07be42b270d810d7fbbed5cae Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Mon, 17 Nov 2014 21:39:47 +0100 Subject: [PATCH 077/156] Remove useless add-method from ResourceJsonrpcAdapter --- extensions/jsonrpc/ResourceJsonrpcAdapter.php | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/extensions/jsonrpc/ResourceJsonrpcAdapter.php b/extensions/jsonrpc/ResourceJsonrpcAdapter.php index 874353b41..888341758 100644 --- a/extensions/jsonrpc/ResourceJsonrpcAdapter.php +++ b/extensions/jsonrpc/ResourceJsonrpcAdapter.php @@ -109,30 +109,6 @@ public function count($modelIri, $whereSpec = '{?s ?p ?o}', $countSpec = '*') return $this->_store->countWhereMatches($modelIri, $whereSpec, $countSpec); } - /** - * @desc add all input statements to the model - * - * @param string $modelIri - * @param string $inputModel - * - * @return bool - */ - public function add($modelIri, $inputModel) - { - $model = $this->_store->getModel($modelIri); - $versioning = $this->_erfurt->getVersioning(); - $actionSpec = array(); - $actionSpec['type'] = 80201; - $actionSpec['modeluri'] = (string)$model; - $actionSpec['resourceuri'] = (string)$model; - - $versioning->startAction($actionSpec); - $model->addMultipleStatements($inputModel); - $versioning->endAction(); - - return true; - } - /** * @desc create a new knowledge base * From a18d54fdd84dab0d6d0e694b4f29714a36788b5f Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Mon, 17 Nov 2014 21:40:53 +0100 Subject: [PATCH 078/156] Applice coding standards to Pager.php --- application/classes/OntoWiki/Pager.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/application/classes/OntoWiki/Pager.php b/application/classes/OntoWiki/Pager.php index 58cc07e58..dce20fb4c 100644 --- a/application/classes/OntoWiki/Pager.php +++ b/application/classes/OntoWiki/Pager.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2014, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ @@ -11,7 +11,7 @@ * * @category OntoWiki * @package OntoWiki_Classes - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) * @author Norman Heino */ @@ -74,9 +74,7 @@ public static function get( self::$_url = new OntoWiki_Url(array(), $paramsToKeep); self::$_url->setParam("list", $listName); - $limit = isset(self::$_url->limit) - ? self::$_url->limit - : self::$_options['default_limit']; + $limit = isset(self::$_url->limit) ? self::$_url->limit : self::$_options['default_limit']; if ($limit == 0) { // means no limit @@ -84,9 +82,11 @@ public static function get( return ""; } - $page = isset(self::$_url->{self::$_options['page_param']}) - ? self::$_url->{self::$_options['page_param']} - : ($page != null ? $page : 1); + if (isset(self::$_url->{self::$_options['page_param']})) { + $page = self::$_url->{self::$_options['page_param']}; + } else { + $page = ($page != null ? $page : 1); + } // self::$_url->limit = $limit; $pagerLinks = array(); @@ -161,7 +161,7 @@ public static function get( $i = max(1 + $offset, $page - $maxLinksAsym); $i <= $forLoopTest; ++$i) { self::$_url->{self::$_options['page_param']} = $i; self::$_url->limit = $limit; - + if ($page == $i) { $pagerLinks[] = '' . $i . ''; } else { From b013150592dcd5102b96358cb784dc50d5737d4e Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 18 Nov 2014 10:35:21 +0100 Subject: [PATCH 079/156] Fix coding standard for Bootstrap.php --- application/Bootstrap.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/application/Bootstrap.php b/application/Bootstrap.php index 9ba90fcc4..3aacd489c 100644 --- a/application/Bootstrap.php +++ b/application/Bootstrap.php @@ -382,9 +382,7 @@ public function _initNavigation() } // get last route or default - $route = isset($session->lastRoute) - ? $session->lastRoute - : $config->route->default->name; + $route = isset($session->lastRoute) ? $session->lastRoute : $config->route->default->name; // register with navigation if (isset($config->routes->{$route})) { From f14669a32bcbbdc0b45a134305d6ac4cf8c21cf5 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 18 Nov 2014 10:36:14 +0100 Subject: [PATCH 080/156] Fix handling of protocols forwarded by proxy. Fix #313. --- application/Bootstrap.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/application/Bootstrap.php b/application/Bootstrap.php index 3aacd489c..92da2e82b 100644 --- a/application/Bootstrap.php +++ b/application/Bootstrap.php @@ -163,7 +163,16 @@ public function _initConfig() // set path variables $rewriteBase = substr($_SERVER['PHP_SELF'], 0, strpos($_SERVER['PHP_SELF'], BOOTSTRAP_FILE)); - $protocol = (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') ? 'https' : 'http'; + + // set protocol and read headers send by proxies + $protocol = 'http'; + if (isset($_SERVER['X-Forwarded-Protocol'])) { + $protocol = strtolower($_SERVER['X-Forwarded-Protocol']); + } else if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) { + $protocol = strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']); + } else if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') { + $protocol = 'https'; + } if (isset($_SERVER['HTTP_HOST'])) { $httpHost = $_SERVER['HTTP_HOST']; From 1f75b45dcfd182c59220eac3d06028ab14f0d2dc Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 18 Nov 2014 10:40:28 +0100 Subject: [PATCH 081/156] Fix typo in Bootstrap comment --- application/Bootstrap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/Bootstrap.php b/application/Bootstrap.php index 92da2e82b..18d0a6193 100644 --- a/application/Bootstrap.php +++ b/application/Bootstrap.php @@ -164,7 +164,7 @@ public function _initConfig() // set path variables $rewriteBase = substr($_SERVER['PHP_SELF'], 0, strpos($_SERVER['PHP_SELF'], BOOTSTRAP_FILE)); - // set protocol and read headers send by proxies + // set protocol and read headers sent by proxies $protocol = 'http'; if (isset($_SERVER['X-Forwarded-Protocol'])) { $protocol = strtolower($_SERVER['X-Forwarded-Protocol']); From 2b545172261e0b503d8ab85ab4320cd4e45dd4ad Mon Sep 17 00:00:00 2001 From: Andreas Nareike Date: Mon, 2 Dec 2013 21:31:25 +0100 Subject: [PATCH 082/156] add option to export result to CSV This will add an option to export a result of a SPARQL query as CSV. --- extensions/queries/QueriesController.php | 7 ++++++- extensions/queries/templates/sparqloptions.phtml | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/extensions/queries/QueriesController.php b/extensions/queries/QueriesController.php index 014369984..3acd9d440 100644 --- a/extensions/queries/QueriesController.php +++ b/extensions/queries/QueriesController.php @@ -187,6 +187,7 @@ public function editorAction() $query = $prefixString . PHP_EOL . $query; } } + if ($format == 'list') { $url = new OntoWiki_Url(array('controller' => 'list'), array()); $query = str_replace("\r\n", ' ', $query); @@ -240,7 +241,7 @@ public function editorAction() } //this is for the "output to file option - if (($format == 'json' || $format == 'xml') + if (($format == 'json' || $format == 'xml' || $format == 'csv') && ($this->_request->getParam('result_outputfile') == 'true') ) { $this->_helper->viewRenderer->setNoRender(); @@ -256,6 +257,10 @@ public function editorAction() $contentType = 'application/json'; $filename = 'query-result.json'; break; + case 'csv': + $contentType = 'text/csv'; + $filename = 'query-result.csv'; + break; } $response->setHeader('Content-Type', $contentType, true); diff --git a/extensions/queries/templates/sparqloptions.phtml b/extensions/queries/templates/sparqloptions.phtml index c3d0fe406..2c0002452 100644 --- a/extensions/queries/templates/sparqloptions.phtml +++ b/extensions/queries/templates/sparqloptions.phtml @@ -35,6 +35,13 @@ />
      + placeholder('sparql.result.format') == 'csv'): ?> + + + /> + +
      placeholder('sparql.result.file') == 'true'): ?> From de32fca6dda943e49dfd624d45eef37efeccd0df Mon Sep 17 00:00:00 2001 From: Konrad Hoeffner Date: Wed, 14 Jan 2015 12:59:08 +0100 Subject: [PATCH 083/156] enabled owconfig and corrected model --- extensions/defaultmodel/doap.n3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/defaultmodel/doap.n3 b/extensions/defaultmodel/doap.n3 index 1c066ae9e..575ff6c3f 100644 --- a/extensions/defaultmodel/doap.n3 +++ b/extensions/defaultmodel/doap.n3 @@ -11,12 +11,12 @@ :defaultmodel a doap:Project ; doap:name "defaultmodel" ; owconfig:privateNamespace ; - owconfig:enabled "false"^^xsd:boolean ; + owconfig:enabled "true"^^xsd:boolean ; rdfs:label "Default Model" ; doap:description "Plugin to select default model if only one available or always" ; owconfig:authorLabel "Christoph Rieß" ; owconfig:pluginEvent event:onAfterInitController ; - :modelUri ; + :modelUri ; :setOnce "true"^^xsd:boolean ; :modelsHide "true"^^xsd:boolean ; :modelsExclusiveRight "ModelManagement" ; From d558c2d83a9ca1a93f5659814fb5fcc409e7ba79 Mon Sep 17 00:00:00 2001 From: Konrad Hoeffner Date: Wed, 14 Jan 2015 12:59:32 +0100 Subject: [PATCH 084/156] added gz and zip to .htaccess --- .htaccess | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.htaccess b/.htaccess index 491d87274..eaa2ddd68 100644 --- a/.htaccess +++ b/.htaccess @@ -37,7 +37,7 @@ # do not rewrite requests on files with the whitelisted extensions under extensions (if file exists) RewriteCond %{REQUEST_FILENAME} !-f [OR] - RewriteCond %{REQUEST_URI} !/extensions/.*/.*\.(js|css|gif|ico|png|jpg|svg)$ + RewriteCond %{REQUEST_URI} !/extensions/.*/.*\.(js|css|gif|ico|png|jpg|svg|gz|zip)$ # do not rewrite requests on files with the whitelisted extensions under libraries/RDFauthor (if file exists) RewriteCond %{REQUEST_FILENAME} !-f [OR] From bd959abf6fe9eb682fb4bb45e85ba52750d18cc8 Mon Sep 17 00:00:00 2001 From: Konrad Hoeffner Date: Wed, 14 Jan 2015 13:00:16 +0100 Subject: [PATCH 085/156] added custom blue white theme --- .../themes/bluewhite/images/arrow_right.gif | Bin 0 -> 55 bytes extensions/themes/bluewhite/images/blank.gif | Bin 0 -> 42 bytes .../bluewhite/images/button-contextmenu.png | Bin 0 -> 201 bytes .../images/button-drop-down-closed.png | Bin 0 -> 187 bytes .../bluewhite/images/button-drop-down.png | Bin 0 -> 172 bytes .../images/button-resizer-horizontal.png | Bin 0 -> 195 bytes .../images/button-resizer-vertical.png | Bin 0 -> 196 bytes .../bluewhite/images/button-windowclose.png | Bin 0 -> 181 bytes .../images/button-windowminimize.png | Bin 0 -> 117 bytes .../bluewhite/images/button-windowrestore.png | Bin 0 -> 175 bytes .../bluewhite/images/cluster-marker.png | Bin 0 -> 425 bytes .../themes/bluewhite/images/east-mini.png | Bin 0 -> 371 bytes .../themes/bluewhite/images/icon-add-grey.png | Bin 0 -> 689 bytes .../themes/bluewhite/images/icon-add.png | Bin 0 -> 758 bytes .../themes/bluewhite/images/icon-cancel.png | Bin 0 -> 587 bytes .../themes/bluewhite/images/icon-clear.png | Bin 0 -> 289 bytes .../bluewhite/images/icon-comment-add.png | Bin 0 -> 530 bytes .../themes/bluewhite/images/icon-comment.png | Bin 0 -> 413 bytes .../bluewhite/images/icon-contextwidget.png | Bin 0 -> 441 bytes .../bluewhite/images/icon-delete-grey.png | Bin 0 -> 676 bytes .../bluewhite/images/icon-delete.old.png | Bin 0 -> 522 bytes .../themes/bluewhite/images/icon-delete.png | Bin 0 -> 705 bytes .../bluewhite/images/icon-edit-grey.png | Bin 0 -> 476 bytes .../themes/bluewhite/images/icon-edit.old.png | Bin 0 -> 516 bytes .../themes/bluewhite/images/icon-edit.png | Bin 0 -> 518 bytes .../themes/bluewhite/images/icon-editadd.png | Bin 0 -> 589 bytes .../themes/bluewhite/images/icon-error.png | Bin 0 -> 706 bytes .../themes/bluewhite/images/icon-ext-link.png | Bin 0 -> 279 bytes .../themes/bluewhite/images/icon-failure.png | Bin 0 -> 715 bytes .../themes/bluewhite/images/icon-feed.png | Bin 0 -> 715 bytes .../themes/bluewhite/images/icon-first.png | Bin 0 -> 522 bytes .../themes/bluewhite/images/icon-go.png | Bin 0 -> 410 bytes .../themes/bluewhite/images/icon-go2.png | Bin 0 -> 706 bytes .../themes/bluewhite/images/icon-go3.png | Bin 0 -> 698 bytes .../themes/bluewhite/images/icon-help.png | Bin 0 -> 797 bytes .../bluewhite/images/icon-hidden-mini.png | Bin 0 -> 533 bytes .../bluewhite/images/icon-implicit-mini.png | Bin 0 -> 435 bytes .../themes/bluewhite/images/icon-info.png | Bin 0 -> 783 bytes .../themes/bluewhite/images/icon-last.png | Bin 0 -> 524 bytes .../themes/bluewhite/images/icon-list.png | Bin 0 -> 333 bytes .../themes/bluewhite/images/icon-next.png | Bin 0 -> 395 bytes .../themes/bluewhite/images/icon-previous.png | Bin 0 -> 389 bytes .../themes/bluewhite/images/icon-reset.png | Bin 0 -> 335 bytes .../themes/bluewhite/images/icon-save.png | Bin 0 -> 620 bytes .../themes/bluewhite/images/icon-save2.png | Bin 0 -> 755 bytes .../themes/bluewhite/images/icon-save3.png | Bin 0 -> 774 bytes .../themes/bluewhite/images/icon-search.png | Bin 0 -> 615 bytes .../themes/bluewhite/images/icon-success.png | Bin 0 -> 816 bytes .../bluewhite/images/icon-system-mini.png | Bin 0 -> 656 bytes .../bluewhite/images/icon-toggle-minus.png | Bin 0 -> 1015 bytes .../bluewhite/images/icon-toggle-plus.png | Bin 0 -> 1018 bytes .../themes/bluewhite/images/icon-warning.png | Bin 0 -> 671 bytes .../themes/bluewhite/images/icons/add.png | Bin 0 -> 733 bytes .../bluewhite/images/icons/arrow-bottom.png | Bin 0 -> 192 bytes .../bluewhite/images/icons/arrow-down.png | Bin 0 -> 177 bytes .../bluewhite/images/icons/arrow-first.png | Bin 0 -> 205 bytes .../bluewhite/images/icons/arrow-last.png | Bin 0 -> 208 bytes .../bluewhite/images/icons/arrow-next.png | Bin 0 -> 189 bytes .../bluewhite/images/icons/arrow-previous.png | Bin 0 -> 189 bytes .../bluewhite/images/icons/arrow-top.png | Bin 0 -> 193 bytes .../bluewhite/images/icons/arrow-up.png | Bin 0 -> 171 bytes .../themes/bluewhite/images/icons/cancel.png | Bin 0 -> 775 bytes .../themes/bluewhite/images/icons/cancel.svg | 204 + .../themes/bluewhite/images/icons/close.png | Bin 0 -> 181 bytes .../themes/bluewhite/images/icons/context.png | Bin 0 -> 762 bytes .../themes/bluewhite/images/icons/context.svg | 63 + .../themes/bluewhite/images/icons/copy.png | Bin 0 -> 309 bytes .../themes/bluewhite/images/icons/delete.png | Bin 0 -> 695 bytes .../themes/bluewhite/images/icons/edit.png | Bin 0 -> 334 bytes .../images/icons/icon-not-available.png | Bin 0 -> 173 bytes .../themes/bluewhite/images/icons/list.png | Bin 0 -> 333 bytes .../themes/bluewhite/images/icons/save.png | Bin 0 -> 620 bytes .../bluewhite/images/icons/toggle-off.png | Bin 0 -> 180 bytes .../bluewhite/images/icons/toggle-on.png | Bin 0 -> 188 bytes .../themes/bluewhite/images/icons/trash.svg | 289 + .../images/layer-switcher-maximize.png | Bin 0 -> 219 bytes .../images/layer-switcher-minimize.png | Bin 0 -> 249 bytes .../images/layout-background-black-20.png | Bin 0 -> 869 bytes .../images/layout-background-body.png | Bin 0 -> 14509 bytes .../images/layout-background-modal.png | Bin 0 -> 853 bytes .../images/layout-button-menu-gradient.png | Bin 0 -> 305 bytes .../layout-button-menu-hover-gradient.png | Bin 0 -> 223 bytes .../bluewhite/images/layout-tab-gradient.png | Bin 0 -> 561 bytes .../images/layout-tabactive-gradient.png | Bin 0 -> 580 bytes .../images/layout-window-gradient.png | Bin 0 -> 11027 bytes .../images/layout-windowtitle-gradient.png | Bin 0 -> 161 bytes .../themes/bluewhite/images/logo-ontowiki.png | Bin 0 -> 3028 bytes extensions/themes/bluewhite/images/marker.png | Bin 0 -> 301 bytes .../themes/bluewhite/images/north-mini.png | Bin 0 -> 339 bytes .../themes/bluewhite/images/ontowiki-logo.png | Bin 0 -> 5939 bytes .../bluewhite/images/openid-logo-wordmark.png | Bin 0 -> 7743 bytes extensions/themes/bluewhite/images/openid.gif | Bin 0 -> 1239 bytes extensions/themes/bluewhite/images/slider.png | Bin 0 -> 189 bytes .../themes/bluewhite/images/south-mini.png | Bin 0 -> 372 bytes .../themes/bluewhite/images/spinner.gif | Bin 0 -> 3519 bytes .../bluewhite/images/submenu-indicator.png | Bin 0 -> 3561 bytes .../themes/bluewhite/images/tree-closed.png | Bin 0 -> 3712 bytes .../themes/bluewhite/images/tree-open.png | Bin 0 -> 3723 bytes .../themes/bluewhite/images/tree-toggle.png | Bin 0 -> 3944 bytes .../themes/bluewhite/images/tree_closed.png | Bin 0 -> 2848 bytes .../themes/bluewhite/images/tree_open.png | Bin 0 -> 2853 bytes .../bluewhite/images/virtuoso-powered.png | Bin 0 -> 2649 bytes .../themes/bluewhite/images/west-mini.png | Bin 0 -> 371 bytes .../bluewhite/images/zoom-minus-mini.png | Bin 0 -> 197 bytes .../bluewhite/images/zoom-plus-mini.png | Bin 0 -> 219 bytes .../bluewhite/images/zoom-world-mini.png | Bin 0 -> 1095 bytes .../themes/bluewhite/images/zoombar.png | Bin 0 -> 463 bytes .../themes/bluewhite/sandbox/detailview.html | 581 ++ .../themes/bluewhite/sandbox/filter.html | 68 + .../themes/bluewhite/sandbox/forms.html | 367 ++ .../themes/bluewhite/sandbox/listview.html | 714 +++ .../themes/bluewhite/sandbox/tables.html | 519 ++ .../themes/bluewhite/sandbox/uitest.html | 76 + .../themes/bluewhite/sandbox/uitestow.html | 533 ++ .../bluewhite/scripts/jquery.ontowiki.js | 260 + .../bluewhite/scripts/libraries/jquery-ui.js | 781 +++ .../scripts/libraries/jquery.clickmenu.js | 515 ++ .../scripts/libraries/jquery.dimensions.js | 119 + .../scripts/libraries/jquery.interface.js | 12 + .../bluewhite/scripts/libraries/jquery.js | 4 + .../scripts/libraries/jquery.json.js | 178 + .../scripts/libraries/jquery.livequery.js | 226 + .../libraries/jquery.rdfquery.rdfa-1.0.js | 4953 +++++++++++++++++ .../scripts/libraries/jquery.simplemodal.js | 8 + .../scripts/libraries/jquery.tablesorter.js | 852 +++ extensions/themes/bluewhite/scripts/main.js | 795 +++ .../themes/bluewhite/scripts/serialize-php.js | 99 + .../themes/bluewhite/scripts/support.js | 735 +++ .../themes/bluewhite/styles/clickmenu.css | 122 + .../themes/bluewhite/styles/default.css | 2577 +++++++++ .../themes/bluewhite/styles/default.dev.css | 120 + .../bluewhite/styles/deprecated.dev.css | 97 + .../ui-icons_000000_256x240.png | Bin 0 -> 4369 bytes .../ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../ui-icons_333333_256x240.png | Bin 0 -> 4369 bytes .../ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../ui-icons_ffffff_256x240.png | Bin 0 -> 1883 bytes .../themes/bluewhite/styles/jquery-ui.css | 633 +++ extensions/themes/bluewhite/styles/old.css | 188 + .../styles/patches/ie6.clickmenu.css | 19 + .../themes/bluewhite/styles/patches/ie6.css | 344 ++ .../themes/bluewhite/styles/patches/ie7.css | 65 + 143 files changed, 17116 insertions(+) create mode 100644 extensions/themes/bluewhite/images/arrow_right.gif create mode 100644 extensions/themes/bluewhite/images/blank.gif create mode 100644 extensions/themes/bluewhite/images/button-contextmenu.png create mode 100644 extensions/themes/bluewhite/images/button-drop-down-closed.png create mode 100644 extensions/themes/bluewhite/images/button-drop-down.png create mode 100644 extensions/themes/bluewhite/images/button-resizer-horizontal.png create mode 100644 extensions/themes/bluewhite/images/button-resizer-vertical.png create mode 100644 extensions/themes/bluewhite/images/button-windowclose.png create mode 100644 extensions/themes/bluewhite/images/button-windowminimize.png create mode 100644 extensions/themes/bluewhite/images/button-windowrestore.png create mode 100644 extensions/themes/bluewhite/images/cluster-marker.png create mode 100644 extensions/themes/bluewhite/images/east-mini.png create mode 100644 extensions/themes/bluewhite/images/icon-add-grey.png create mode 100644 extensions/themes/bluewhite/images/icon-add.png create mode 100644 extensions/themes/bluewhite/images/icon-cancel.png create mode 100644 extensions/themes/bluewhite/images/icon-clear.png create mode 100644 extensions/themes/bluewhite/images/icon-comment-add.png create mode 100644 extensions/themes/bluewhite/images/icon-comment.png create mode 100644 extensions/themes/bluewhite/images/icon-contextwidget.png create mode 100644 extensions/themes/bluewhite/images/icon-delete-grey.png create mode 100644 extensions/themes/bluewhite/images/icon-delete.old.png create mode 100644 extensions/themes/bluewhite/images/icon-delete.png create mode 100644 extensions/themes/bluewhite/images/icon-edit-grey.png create mode 100644 extensions/themes/bluewhite/images/icon-edit.old.png create mode 100644 extensions/themes/bluewhite/images/icon-edit.png create mode 100644 extensions/themes/bluewhite/images/icon-editadd.png create mode 100644 extensions/themes/bluewhite/images/icon-error.png create mode 100644 extensions/themes/bluewhite/images/icon-ext-link.png create mode 100644 extensions/themes/bluewhite/images/icon-failure.png create mode 100644 extensions/themes/bluewhite/images/icon-feed.png create mode 100644 extensions/themes/bluewhite/images/icon-first.png create mode 100644 extensions/themes/bluewhite/images/icon-go.png create mode 100644 extensions/themes/bluewhite/images/icon-go2.png create mode 100644 extensions/themes/bluewhite/images/icon-go3.png create mode 100644 extensions/themes/bluewhite/images/icon-help.png create mode 100644 extensions/themes/bluewhite/images/icon-hidden-mini.png create mode 100644 extensions/themes/bluewhite/images/icon-implicit-mini.png create mode 100644 extensions/themes/bluewhite/images/icon-info.png create mode 100644 extensions/themes/bluewhite/images/icon-last.png create mode 100644 extensions/themes/bluewhite/images/icon-list.png create mode 100644 extensions/themes/bluewhite/images/icon-next.png create mode 100644 extensions/themes/bluewhite/images/icon-previous.png create mode 100644 extensions/themes/bluewhite/images/icon-reset.png create mode 100644 extensions/themes/bluewhite/images/icon-save.png create mode 100644 extensions/themes/bluewhite/images/icon-save2.png create mode 100644 extensions/themes/bluewhite/images/icon-save3.png create mode 100644 extensions/themes/bluewhite/images/icon-search.png create mode 100644 extensions/themes/bluewhite/images/icon-success.png create mode 100644 extensions/themes/bluewhite/images/icon-system-mini.png create mode 100644 extensions/themes/bluewhite/images/icon-toggle-minus.png create mode 100644 extensions/themes/bluewhite/images/icon-toggle-plus.png create mode 100644 extensions/themes/bluewhite/images/icon-warning.png create mode 100644 extensions/themes/bluewhite/images/icons/add.png create mode 100644 extensions/themes/bluewhite/images/icons/arrow-bottom.png create mode 100644 extensions/themes/bluewhite/images/icons/arrow-down.png create mode 100644 extensions/themes/bluewhite/images/icons/arrow-first.png create mode 100644 extensions/themes/bluewhite/images/icons/arrow-last.png create mode 100644 extensions/themes/bluewhite/images/icons/arrow-next.png create mode 100644 extensions/themes/bluewhite/images/icons/arrow-previous.png create mode 100644 extensions/themes/bluewhite/images/icons/arrow-top.png create mode 100644 extensions/themes/bluewhite/images/icons/arrow-up.png create mode 100644 extensions/themes/bluewhite/images/icons/cancel.png create mode 100644 extensions/themes/bluewhite/images/icons/cancel.svg create mode 100644 extensions/themes/bluewhite/images/icons/close.png create mode 100644 extensions/themes/bluewhite/images/icons/context.png create mode 100644 extensions/themes/bluewhite/images/icons/context.svg create mode 100644 extensions/themes/bluewhite/images/icons/copy.png create mode 100644 extensions/themes/bluewhite/images/icons/delete.png create mode 100644 extensions/themes/bluewhite/images/icons/edit.png create mode 100644 extensions/themes/bluewhite/images/icons/icon-not-available.png create mode 100644 extensions/themes/bluewhite/images/icons/list.png create mode 100644 extensions/themes/bluewhite/images/icons/save.png create mode 100644 extensions/themes/bluewhite/images/icons/toggle-off.png create mode 100644 extensions/themes/bluewhite/images/icons/toggle-on.png create mode 100644 extensions/themes/bluewhite/images/icons/trash.svg create mode 100644 extensions/themes/bluewhite/images/layer-switcher-maximize.png create mode 100644 extensions/themes/bluewhite/images/layer-switcher-minimize.png create mode 100644 extensions/themes/bluewhite/images/layout-background-black-20.png create mode 100644 extensions/themes/bluewhite/images/layout-background-body.png create mode 100644 extensions/themes/bluewhite/images/layout-background-modal.png create mode 100644 extensions/themes/bluewhite/images/layout-button-menu-gradient.png create mode 100644 extensions/themes/bluewhite/images/layout-button-menu-hover-gradient.png create mode 100644 extensions/themes/bluewhite/images/layout-tab-gradient.png create mode 100644 extensions/themes/bluewhite/images/layout-tabactive-gradient.png create mode 100644 extensions/themes/bluewhite/images/layout-window-gradient.png create mode 100644 extensions/themes/bluewhite/images/layout-windowtitle-gradient.png create mode 100644 extensions/themes/bluewhite/images/logo-ontowiki.png create mode 100644 extensions/themes/bluewhite/images/marker.png create mode 100644 extensions/themes/bluewhite/images/north-mini.png create mode 100644 extensions/themes/bluewhite/images/ontowiki-logo.png create mode 100644 extensions/themes/bluewhite/images/openid-logo-wordmark.png create mode 100644 extensions/themes/bluewhite/images/openid.gif create mode 100644 extensions/themes/bluewhite/images/slider.png create mode 100644 extensions/themes/bluewhite/images/south-mini.png create mode 100644 extensions/themes/bluewhite/images/spinner.gif create mode 100644 extensions/themes/bluewhite/images/submenu-indicator.png create mode 100644 extensions/themes/bluewhite/images/tree-closed.png create mode 100644 extensions/themes/bluewhite/images/tree-open.png create mode 100644 extensions/themes/bluewhite/images/tree-toggle.png create mode 100644 extensions/themes/bluewhite/images/tree_closed.png create mode 100644 extensions/themes/bluewhite/images/tree_open.png create mode 100644 extensions/themes/bluewhite/images/virtuoso-powered.png create mode 100644 extensions/themes/bluewhite/images/west-mini.png create mode 100644 extensions/themes/bluewhite/images/zoom-minus-mini.png create mode 100644 extensions/themes/bluewhite/images/zoom-plus-mini.png create mode 100644 extensions/themes/bluewhite/images/zoom-world-mini.png create mode 100644 extensions/themes/bluewhite/images/zoombar.png create mode 100644 extensions/themes/bluewhite/sandbox/detailview.html create mode 100644 extensions/themes/bluewhite/sandbox/filter.html create mode 100644 extensions/themes/bluewhite/sandbox/forms.html create mode 100644 extensions/themes/bluewhite/sandbox/listview.html create mode 100644 extensions/themes/bluewhite/sandbox/tables.html create mode 100644 extensions/themes/bluewhite/sandbox/uitest.html create mode 100644 extensions/themes/bluewhite/sandbox/uitestow.html create mode 100644 extensions/themes/bluewhite/scripts/jquery.ontowiki.js create mode 100644 extensions/themes/bluewhite/scripts/libraries/jquery-ui.js create mode 100644 extensions/themes/bluewhite/scripts/libraries/jquery.clickmenu.js create mode 100644 extensions/themes/bluewhite/scripts/libraries/jquery.dimensions.js create mode 100644 extensions/themes/bluewhite/scripts/libraries/jquery.interface.js create mode 100644 extensions/themes/bluewhite/scripts/libraries/jquery.js create mode 100644 extensions/themes/bluewhite/scripts/libraries/jquery.json.js create mode 100644 extensions/themes/bluewhite/scripts/libraries/jquery.livequery.js create mode 100644 extensions/themes/bluewhite/scripts/libraries/jquery.rdfquery.rdfa-1.0.js create mode 100644 extensions/themes/bluewhite/scripts/libraries/jquery.simplemodal.js create mode 100644 extensions/themes/bluewhite/scripts/libraries/jquery.tablesorter.js create mode 100644 extensions/themes/bluewhite/scripts/main.js create mode 100644 extensions/themes/bluewhite/scripts/serialize-php.js create mode 100644 extensions/themes/bluewhite/scripts/support.js create mode 100644 extensions/themes/bluewhite/styles/clickmenu.css create mode 100644 extensions/themes/bluewhite/styles/default.css create mode 100644 extensions/themes/bluewhite/styles/default.dev.css create mode 100644 extensions/themes/bluewhite/styles/deprecated.dev.css create mode 100644 extensions/themes/bluewhite/styles/images-jqueryui/ui-icons_000000_256x240.png create mode 100644 extensions/themes/bluewhite/styles/images-jqueryui/ui-icons_222222_256x240.png create mode 100644 extensions/themes/bluewhite/styles/images-jqueryui/ui-icons_2e83ff_256x240.png create mode 100644 extensions/themes/bluewhite/styles/images-jqueryui/ui-icons_333333_256x240.png create mode 100644 extensions/themes/bluewhite/styles/images-jqueryui/ui-icons_cd0a0a_256x240.png create mode 100644 extensions/themes/bluewhite/styles/images-jqueryui/ui-icons_ffffff_256x240.png create mode 100644 extensions/themes/bluewhite/styles/jquery-ui.css create mode 100644 extensions/themes/bluewhite/styles/old.css create mode 100644 extensions/themes/bluewhite/styles/patches/ie6.clickmenu.css create mode 100644 extensions/themes/bluewhite/styles/patches/ie6.css create mode 100644 extensions/themes/bluewhite/styles/patches/ie7.css diff --git a/extensions/themes/bluewhite/images/arrow_right.gif b/extensions/themes/bluewhite/images/arrow_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..610344d7ff1d3b0f8fb5ee39b4762d6b9761abe4 GIT binary patch literal 55 zcmZ?wbhEHbWMN=un8?JCmX^lA!0`Y7e;}#&lZBCifr&u}$Yub^Gca+q@Tq0KSv^IA G!5RQZ-3x~R literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/blank.gif b/extensions/themes/bluewhite/images/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bcc753a12e9854923af4b9b5b9a4b76f1bc53a6 GIT binary patch literal 42 ocmZ?wbhEHbWMp7uXkY+=|Ns9h{$ybUF?B!$NXCJQ(S^Yp0J?7nHvj+t literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/button-contextmenu.png b/extensions/themes/bluewhite/images/button-contextmenu.png new file mode 100644 index 0000000000000000000000000000000000000000..fa7b23540b42eb4d46f720476dda862bb54b2207 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhoCO|{#XvD(5N2eUHAey{SncWJ z7$Pxs>O@Db1_K_J#oOe#^WlnrH$T76?Wno&S>#5|--FDpX)_dajm#8)&S3C#^>bP0l+XkKk;+Ic literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/button-drop-down-closed.png b/extensions/themes/bluewhite/images/button-drop-down-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..9cfa9d2ab349bd3a773c7b57d16aa60aa83c59ee GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1k#0(_c5A*Q?DaPU;cPEB*=VV@jWCDCbTzR+z z{{R0EFVdQ&MBb@0PF)U6aWAK literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/button-drop-down.png b/extensions/themes/bluewhite/images/button-drop-down.png new file mode 100644 index 0000000000000000000000000000000000000000..f14debb2d16e2cdbcb2ef6234eeced99cbb6f7ab GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV#0(@~+3NiO2?Y3rxH2&8`2YVuke3kCv<*lx zmIV0)GdMiEkp|)4nJa0`PlBg3pY5H=O_Ujx1+#*_0 z$FjMBLNcB%jv*Y^lOwjSYIHR1X>2rZYHZYOY;0WE$jG3t#yr_{;~QI`ItEWyKbLh* G2~7aJCn}8q literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/button-resizer-horizontal.png b/extensions/themes/bluewhite/images/button-resizer-horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d67f7fd535c1f8da8f185cf50aea9f6d5476e4 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol@0V0Kb;z1N!lDE4H!+#K5uy^@npa^GyM`SSr z1Gg{;GcwGYBLNg-FY)wsWxvkB$)m_xT`{W!D8y0X8d2h$pPQSSSHke^%(VSLF&j@8 z#}JM4PbWC?F&MD0q#xb?yJW9vhuwmgcO=4`4kR65R9a-Bnz-|X%*E|J-0R&+BVG1= hKJQ&M#s4ycv`?}04ln&lX+U!rJYD@<);T3K0RUQlI!*up literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/button-resizer-vertical.png b/extensions/themes/bluewhite/images/button-resizer-vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..56d58ebdac3db833fdaf19d2c2dd2c85c8321696 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMH!3HGFGEH?soFs2|7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&kwegOf*2Cs9O01t`Q(;u=xnoS&PUnpeW`?aZ|OKrvfS z7sn8d^T{a*2`kbU7$zhpBqaR!|KI+sPC`mbN`liffx~TyL0=B)I)39-G}Fuq)KL_h iAiPEAMciUm28LyuU-}#Ng@b=d#Wzp$Py%QaGXj literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/button-windowclose.png b/extensions/themes/bluewhite/images/button-windowclose.png new file mode 100644 index 0000000000000000000000000000000000000000..662161db40966614e1a2f10e0087ffded4698b64 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2hGm!icqpk;}I0Jk_Tp1X4{Qv(S$V-T6+6JT; zOM?7@862M7NCR<_yxm Q18QLKboFyt=akR{0LR2E8UO$Q literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/button-windowminimize.png b/extensions/themes/bluewhite/images/button-windowminimize.png new file mode 100644 index 0000000000000000000000000000000000000000..dee0cbfe4ba830b6b83868914adc87c5f2b0b6ac GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4aTa()7Bet#3xhBt!>lHa@gB5G^ literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/cluster-marker.png b/extensions/themes/bluewhite/images/cluster-marker.png new file mode 100644 index 0000000000000000000000000000000000000000..194225ec0bbcb9e5a254244bb5d0324958a6b4df GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIjKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pdfpRr>`sfO%@q$St*H+m(_tnk|nMYCC>S|xv6<249-QVi6yBi3gww4 z84B*6z5(HleBwZZ#XMacLp+Y}y|z)XSwV#1!hc!C&{u03w3m3z6-{AXEwVDkG2COW zmi7s*Yhmj?T-IoB_~0n~ZqI?aAO3v*|Cix_jEl>M(~d47p`uTnPB1Q+QgwHmu7Z+W z+YJZ3kb=fvH(%_WB9tL_b7D)wv%uFogSdX}>vwC_Y~a*f`o)S(ROUgE-CDDm3=9sD z(+&#h?>O+OdVlO!>-FE;Sw%GkXS`;8;IKo~^LlBOUC(7MiDM^!Mj1O2HvyZN)u-p&pW4#(a45@sp#6*qX(8vhlk-rD@1d&fuP4raq; Qpx|ckboFyt=akR{065E|RsaA1 literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/east-mini.png b/extensions/themes/bluewhite/images/east-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..e6132005f6fe1fa9360c04b679843eb930e8aa60 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1SD^+kpz+qjKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pdfpRr>`sfO%@qW1|99i|IPsQuzI>UhG?9hI(ctjtAaqQyYqoQmd?(y zZQFj?>|-(6c8q^Ws=i+n}0WJj(oof75%D)SH|zcNRzHF7`vnm>bR5T?nwny8a1arp-EMP!e$Kj|8mo_2wIg z5Z854)zzL0B9a>z7@*N;AR-hBg;&mOY-|8fEEWmFkbFLmh~)YSNRou-=jXrrZj8aQ zEJTEUg4<@Z`7xbN6Gah6M@O_;Ew;9{dXoVx%VKnNlpqLD)!Tl8lUl7tHk(C6FvgI{ zWL`~HRRG4v$0?V~h{#Dl!B-LaQms~<+1XhxE-p}2ip3(vn4hSr6t3%1DwTM8dJ0ta z>#IZB-`_8Yh-cgO@cjHdVHgsIA;uUcCMFmg8>3VzQLR>ERbBHu@9fPf@9ypvMC1^# z7Zw)CX0vp=U7F1%<#L%Qitbc({iXSh0KoS4_OysBi%9R8RJ9=@$Ho}n^SnPl)4#+I X{>ge=QUu(>00000NkvXXu0mjfJmofi literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-add.png b/extensions/themes/bluewhite/images/icon-add.png new file mode 100644 index 0000000000000000000000000000000000000000..d4eb33fde8b21f14290b4571ca4e705819eb379f GIT binary patch literal 758 zcmVzZp7JH6 z7oSpx4~4xLk|CJ9#M~p8`W{{HT}rOkB@=WEx7mqhXOXF_z?Odk87bL_ z%Q$@7>zG&^g>Uog1`)M(H9hO!CGfMEyQ|CVvMNl+u%s@)8}&d)ft=JFm@+IFUvT5& z;#`=Rnq4ge{Rx4GLv2=;{O+XnoVg`&~*qpU*2!U%`H;ft!E##RHt)R=HVFj>-5 zGO-d;5SKCBJN;mXGmq^q0D#l&fG4nws{PdvOqL`9LRf?limMO?@mJq9me4_iU_vs1 z$Kziq&rZumAi4$T+ZKdhE%-)b=FH5 zoPL2|XnUQQT{{lx=98;-V(PZ!=VjH}>aiA7;0Y+uq(ot^6@|tUyqX!npbJ@;vg41%L*u`B&kd8il$Y*&xZSznXUm0Kk>bi)DhzArj9- o5X@d;?qNxNQ|)tqex`qkA8?9)0msbZf&c&j07*qoM6N<$f{vhAVgLXD literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-cancel.png b/extensions/themes/bluewhite/images/icon-cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..c149c2bc017d5ce5a8ae9330dd7dbd012482e0f4 GIT binary patch literal 587 zcmV-R0<`^!P)FS^-G}e*;M)Q6>s#cP zI`Y#S($G6W`W@NI5g|L-MKl0Zmu$m^(0~^Lwo5OO~d#(vPfzWElAW!ullM6+|&&D(O#OJmn7F~sR==D{nWel_pb&wQ zmrP)tTX!KGk)Sk|wtZaUrliFMw8)@DB*yUg%5WWG5T6(V4-98P2Jan%`$mH2CMxfq z+T@bruYw${Wles0MWFb|;3xR>p5Y`0A6-c}5Tk;D`5i8(NGiA>_&gYcZy8+IQP@fF zZXmTF{tLW(AMNV7m2gb(;iZIqf*k=ah{%H8=`Ai$Cv75^d>yNTn3+NncKU5>g4%P)i2vikyMR~)n*keF9=!Gc_n*K2@qsNT?}H4v4a974 z1ArVJApZ0B-@pGKzWw|E^3%Wn&p!V9|K$C@{}12&`+x7vzyG&i{r!LE6~yrB1;;^# zm?0Y=moxPMSn>r>N00000NkvXX Hu0mjf$^yWL literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-contextwidget.png b/extensions/themes/bluewhite/images/icon-contextwidget.png new file mode 100644 index 0000000000000000000000000000000000000000..e8cc51ad297c3bfdfe3379d95158e0425f861485 GIT binary patch literal 441 zcmV;q0Y?6bP)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXe~5hpvk zv%Dby00BKoL_t(2&xMgOOG0rJ#eeT6f3<0Z>c7V2ilnYe8$rg?|Qg6t`Oosc_lThh{RWsw$(IKGaj;62MA4t%t(?`+%1<0*^cA z(7PD!&zN&Ke4Ts_$hwlNk))cE8GvM_CTS#BQr5Lu!RiyMo&@q|B_mC>%v4gz|S$32^_`Ulcw0wzL|Y*c3`c=zr=7j442OeOGuLBQ<5YxKEQA| zjG6gczu*7znp4YUrPMDXN^fs(${7>w1%jl!$+DI=P?nb>+9<<#-P<|q19?Z zM9^q7;5bftczC!n;)MriXJ;`Hr9lutYmK5PUNzIk#)fLQ+sN}Ad7h)Hs;wkR9u_a? z_xmvsrM~YY3`1mDhN38>uIq@Ib(UrF`1pusvx#Q23D5J=y}i8{09*iI=CS_i62L}gHmSrU~J3$bDh#(?u01pcZCnqP{uIv7&s>(349*ssTZtw5!`yx_m zt)0na^7a1y{wDyeY+A3^+wOL|{zsd*ySwY}?CfkW=T<(_|KK+V5|a53q#0lU0000< KMNUMnLSTZ06gV6J literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-delete.old.png b/extensions/themes/bluewhite/images/icon-delete.old.png new file mode 100644 index 0000000000000000000000000000000000000000..b312296c8e92830eb05cbcbc1e33034002126b52 GIT binary patch literal 522 zcmV+l0`>igP)Od4d6CPMtSlFmoIfX_Es0(lbDJoqx!gX8gt+wF$&cx-BUo&x~bJBd{}JSOlyr= zt%ld@1;+mLmt_g9^}p{x2th?rpwVccC<E@9g?k|Y5D3@~ literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-delete.png b/extensions/themes/bluewhite/images/icon-delete.png new file mode 100644 index 0000000000000000000000000000000000000000..badeab3357c25627787e45698934fde9058d515f GIT binary patch literal 705 zcmV;y0zUnTP)oEc+)7cX6-^)@_@vmk)p+=O0V zhZdb-O%jarn1=zJumq7TW2ccSP2`p5-qJ1rfPV7KHA=OZ=UF@~L2ax+ZrVDdq9O9PlSFNOT|}YM2d`3r z-Q&c|gF_Jj*uVPj=Z*~+jZV@)=X+BblEuDH9|QoTXGV&xBx#u}vmDWw3Q2&Mt__;?;bRX n-v$QVrDG>X_ttVB>3{SSzn*o;3yV0clA@ zK~y-)rIWF$;!qSt*S!fuL5MgODWjF3g^kUWTG=|_513Z;5Bviw=QpMkgN;96AtqP} zZwA2#nrkN}Me?fmng`>Bcj~=1=N$GHd7kr~F?EH$?-!rX=f60Pe`HxEEz9~_C=`Bb z8$2G5hY*5(zmJrX<#Op>uh-u~=LFyP^Lo8bsZ>Hr2|$u0tk>&I>cE{&hhnkFZnr}z zg;ELt!!XkSZtwvchQaxKCQVZghXb~46Gai8=Lx9;M^QwYrZ|p6wOZwJx!`%80FXLx zk|a2e!+yW#bUHB_jl_rci@{>C(1yPl%;)obFc@gV03y$G#^bSDtJU7R-7d%Dk!G{0 z1%D>dG|ji+aEN7DtX3=T_dAV7gCGcq`p=vI literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-edit.old.png b/extensions/themes/bluewhite/images/icon-edit.old.png new file mode 100644 index 0000000000000000000000000000000000000000..40b6bd28ba3359cdb01ba2d27d691af04476d012 GIT binary patch literal 516 zcmV+f0{i`mP)kt#xrF@3Dg2(Nr~C;1kWGP^=J~eAd+&qycy_Q5@pybIo6XimQM~i}{f2mo->7BuRRW#bVp*%zOj7v!>u3c|R)v0000iy)`6OFpU~PlSPFh2p6O+Qc!TP1s6f=)TOgH2zKxv&`G5t zPC}Q`p+y8K)eeFZ1u=zGhxl0`w^j`rP3uR}+}EjD1oMJtetr+<9G*ugrMS-+xq0zq9f(uE^dELFIJ@0v7masmvMl7AD z>TwI1=r^toj(9S-DvCzgk{-?%N3g4XY{oW-Eq}xt4Dxd5hbY>G=*Ayfzm5^HJGjJy z%1q%sP8Nj=KX}y|P^OeTuP>w0Z(%-q__@7*sY|CL;=Xmh0s1}65%E|eUH||907*qo IM6N<$f<=ej)c^nh literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-editadd.png b/extensions/themes/bluewhite/images/icon-editadd.png new file mode 100644 index 0000000000000000000000000000000000000000..902bbe61b3e64a9e83333fc17bc8dbb38de2cf9f GIT binary patch literal 589 zcmV-T0?rbKYL%|LWA_fWIdu`2D{$SO5OKC8m-@8*p<)!2cUdv;Kd7c=G>` z$EW|Fn(FlbP?O<0Vr~Eb<;wE^KOP?a|MT$~F#djf@Bfn%{QnZA`N!MC|9?DM@&E3+ zoc~|WF9l}pHx`K1jMaes6V!>;jA6jePPPA^p6$b`dFe#2|9Mj)KBe{f z|Bq~O_~cokR|7X-MzVqeNb|$f8~&eInU0}(LBHGo#?^`cw_KU}|H89f|ND1m{SWWg z{coNv*#kCUa<1I}PY+N0|MmRh|E;wq{}0bJ{D0?2?*H?1y#60=Hu)dh?(%)(VotaL=Y9#qRl|7 zT6n=|G2l)RjG`i>g+q-_siT-Wb{U-%oo42J&-1phz8SMNb$0LJoZop4?|Jf!G5DXz z|2-kMuQbq@c0+cNtRxANpGfvoIAq`HkLK3r>u zM0X@DSGL(07-m^n8O2de88h=ex)8Xt2 z>L)}92%)t?jsmruj<3P;)H+f{5#L{qVRQJgGo6aaudYKf9*0(XIak5JxA0r+@zy!T zq6l}-Rg|2&04hQ>Awsz7eE1T21FiLd15ip0W>#ad#AFynZKoW_THqd519u^^{kBh^ z!PjsIiN%?i)_QQqAx(82^HZeHK6s?Kw7CVT`8lL!qcFz6RqunV-iLTNgpaRBw@7xk zJ$)bCb;_ahNBu$u_Lg})NcvP)qMkV>rK^Taq3OS3B^dyhZ+5d5PT0AT#=;RcfJ o6n2ra(@f;hiRUwaH`Bkw50%lcOlk$|{{R3007*qoM6N<$f{^nrRsaA1 literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-ext-link.png b/extensions/themes/bluewhite/images/icon-ext-link.png new file mode 100644 index 0000000000000000000000000000000000000000..4b710b03ea97bf485f3f89db4f26115554315abb GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2VGmzZ%#=aj&NtU=qlmzFem6RtIr7}3C~moOa}6aA09^+}!-%zEZk&LYIK=Ev8gf-RPY)D)N$i s&x=&9UP#@0ZXWaI2bCVjx$79&7)-htzDAyXo(OWLr>mdKI;Vst04JwPB>(^b literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-failure.png b/extensions/themes/bluewhite/images/icon-failure.png new file mode 100644 index 0000000000000000000000000000000000000000..08f249365afd29594b51210c6e21ba253897505d GIT binary patch literal 715 zcmV;+0yO=JP)C4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-feed.png b/extensions/themes/bluewhite/images/icon-feed.png new file mode 100644 index 0000000000000000000000000000000000000000..7b208bf4d6559dd0ded0636b0941d2d9b4f6d0d6 GIT binary patch literal 715 zcmV;+0yO=JP)!2g1r4cQ)?abV{cdmknY#q-k>(g-e-C01iO|i;fT?Q!H7H~BMrc!An@Y{VV}m# zEU@q*Q*%6egte1gIn6L98!{>w5dTNKy~K0x^Y~jl_zX9@eDONHbD{a-%d{344jJT( zajIy?%K4KOgS&X_4I1}y zZk1cts5jX6bmd@NIf#XEl`;M6^v-bR7{8qjA_tD5##e6#7yF;5pOY08#BoJ8DOo;B ztwHZg*4|}i4~-V>MJ|5Mp?{dz!SrtOqH+Ln$ z`UT&7#Kmue{T-9xg}*tksl9#K^n9Qkm)t$eREuUS0FD!8+e}Tftwxg4y~K^HtI_ZY x&3fC4wvKW2s}7J=F{sY6EjdNq>R{dRe*vM^(!k@)URVGC002ovPDHLkV1kFwTZ{kz literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-first.png b/extensions/themes/bluewhite/images/icon-first.png new file mode 100644 index 0000000000000000000000000000000000000000..b03eaf8b5416fa6878165d95116e73003f8445f5 GIT binary patch literal 522 zcmV+l0`>igP)ufs8f5Kzx*fI63}@)AAFXgQp7K#X5)&2^7g z_9O9^7^ARqyc%qAP{1M7?|}io8xW>dotf=a%%ZSXBBI&Rf<-t`#(~H!2g~*8&15{# zVXjXMwHZYVJ6lk!gb6?r$g;SuO>QI;yZD2*!*kie8d0ob9Fh%G9Y=r;n&8^QUAkdX#Dq|D$hyKfc&Ml|8p0c z|4m?!%b@Oan%jHPb>P21W3>NYd-<1_&1WU%JGUHShzcVz!>-In&hVRPdDrmgA!XB=w& zAG5&bziK_hADjk6&({3E^3;U?OHcIvUwEwR|Gc9eKtr;M1&07*qoM6N<$ Ef*qF6bpQYW literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-go2.png b/extensions/themes/bluewhite/images/icon-go2.png new file mode 100644 index 0000000000000000000000000000000000000000..540c8e2689b19cd661d3f07ec6d5c69a48ee79b7 GIT binary patch literal 706 zcmV;z0zLhSP)7<1w@I`*?5OI84*T|9oBhH}d)X zV_ny$7-LpT(?ounOeSx1Bq$b(0RlV<27^hr+Y6OI;2f4ea@pG(#Qc2bI;{>8 z6bgmQ0vry9qduPxrLScOb?OXyK&ctFdYopOnzzF=IxIzTH9TSNw zRv8@$M2+3u-KbWpO=ZKt@W_~@Zno4#v;XQqFdGCChs31_>&3!5%7&#b{zWFQc68tn zplmj4#^Z6+YBf55z<5&3{|y;v7;9uv%2$5X>rHda_}~n%R!c9`2Bty_PB{afo|wH(i1~} z&mbZJ35Q%B^!cO6Z!BTy%i>mD!&!%IJ)KTZ(mdRYL?UO7ODFJPbqWeO)2I~TMhXw( zyp+KE^<^xqJ^!icxKx=jKRWim##AbmAfj1{QTs88yd0gw>A`WlSX(G-+yZ}U&%wWZ o(p|@%!Cl@4H>AxOvt;l80V><8&-M2O*#H0l07*qoM6N<$f@GaWM*si- literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-go3.png b/extensions/themes/bluewhite/images/icon-go3.png new file mode 100644 index 0000000000000000000000000000000000000000..61a8556c403a1b56cb7719f4916d07ed82cd55ff GIT binary patch literal 698 zcmV;r0!96aP)U4c>+hFP*|&0tGt{!YG|5fRw@-UpUxK})gOY{KjH!sGG4?RHzSe!mY<6j86&kw_%0+>rt+UvTG zPNxG!QLHl_`>TN6lhf(69Pnfg>e~`ot!6OL_K}%<0mC@>2*2;ZcEFQ4iGwF{@R*{j z7!M|qd3hZgQye2(un7;}EWl(MRHj3v{mH--l93DO%KKRTaX^3MX`58z^<+{ z6<23&!!Q{PW`ItyBW>gC_$Bnz0p8cvrP&8U;E(_Zug)QpWlpZPzmjE&ksHm>&{4WL zcWMqjtuMUYDzy&;xOM)i=ubqW(I5dCx}hU{e1gb^CAKTo5EzT#!}bO?zL#36j`?8+ z3*~b8c`}*w$6_%IbOkHrWx4~^auW|u<6?Xs@2VxNZ5G?Ij>|hs<|oJSYs}?xlO%MH zkQM~t1b+*>9q#P0c*i_HG3Qv{e6_1E^9qr_9C}QDj%+r2jL4@6j4t)_BWY1InA104 gM*QcJxn<}50%n)c1HutrKL7v#07*qoM6N<$f)5Qpt^fc4 literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-help.png b/extensions/themes/bluewhite/images/icon-help.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac348064efda2edadd7eaca9b275205209cedc3 GIT binary patch literal 797 zcmV+&1LFLNP)1FvkBzWBx}oF`0Ys+8!{b2!iI zs4DNH#J>yIpF|5pb+d?W71gweU`0nn{|vG?|E%jjF zg9*=C*|u}#huLX^v)z;PMdaF|Oj-SC-seJ3j=EHmHB0MJlv_{o{N6Xtisl+JHRW9F z9viY&mhb+0;h!!*F^t+9=OpVVrb5o&8O1MzY+2qwRYfV)6=ke$t)BG#FXil&PG>>i)Lw+$n`45n`e|M?Ph#cFs zZgF{Rg|40f`bYAJ5i+$YzG%siNR+Vu=uOXxY`c1BWA-hS*Y7*qW6w z;viwc#KZ--grTGbdp6BIJ z6n*OV`}sq_7<*Y&)w{Z`Uo=hg=zKmqN-6lhZz-j}0etOrI@2u6zBt?M_C{-ccez~B z?#Nh$KlY5kmYZ%MzS(#Bq!$icr@zj4?=(1mp1-oOA5=dlW^H zJDbhsR!Vv2x^5gr(S6f2s;Vl}G>r{{0ECbhW9$iIOh_r;H~_F*E?=Ear?&u}Q%V!p zbpvayqqSC?^J7sIKRwU;$Qb+lFm5)RxkXW28)L3q*Np)XrPNsn@x89=Z`0}Y7ygGo XO0?nczUk4E00000NkvXXu0mjf&_M1* literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-implicit-mini.png b/extensions/themes/bluewhite/images/icon-implicit-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed49bd175fe7624b97c05181d3a7715e23db63c GIT binary patch literal 435 zcmV;k0ZjghP)d+MY;UV zWbGrSac2T#S=MSa8hyucST2`C;8`hk-syC@agzF1r*>Tx>QQ48tIf z;{ss2-6A5qf3EmmTdXkoN_Lg9EDPuJ`Ovm)L?qmqOvdB!?d91uk1ro#_1NKHPv)hg zo6TnV=yto^w=8QQB517#v)Sw+P1Ew@@;tB9>vd|i8fltVfODnPU1wO9ZE002ovPDHLkV1g`*xp4ph literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-info.png b/extensions/themes/bluewhite/images/icon-info.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e8b0bcbb30cce944a7a9dc795ccb73d791bef9 GIT binary patch literal 783 zcmV+q1MvKbP)m0Y@4ffyLP&hH8$HV}Up^c-=NMJx zeN^-2A#-&!Ex{dE7fx2Kv^WhYp$Orocj3<9*-sw6`fpx!@WqvpjJ0yHBcaKjwniG( zt^r^natsxoaDRGv2BZDC^Pgqk0vx`a&)7(A9NJbF-`!fz)SRWb5aEN8s9QrSv5vyC zG6O$9T&9LoxeJH0D}dfh_d7-0(4npI)b^Hoa$_Z&6ZW(9SQ7CMc(Pc=m@u^pupNa%6uyJ3nlqZe1a@ zj4`qP+`yUae{KPw=c_AeReu}}Ckd4nG+>M=0yhnE=Z}GN|39X8(F>?Qf_quEA-Mnm N002ovPDHLkV1n@JW6J;l literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-last.png b/extensions/themes/bluewhite/images/icon-last.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec89478477aada6c95cac22920094dd12f399a7 GIT binary patch literal 524 zcmV+n0`vWeP)eQ51#0H@Z6sk_ajqECPZEqLq!PMf5MQ5gS1i(Owi(ut_CY*w|Psf-Iy6=08Y` zHnsuDs6h)+OwcBqopImX_v1c`5LkrSCWWWFUvW71z%eN$cB714YVYtd`}$X<%JbQ) zM;;CHJDu;#-swg0iul07{S&4s!M>4O+`c|6_tW_i^y+I%|aPsIlEx5K=^ki~8LwqDy-)t}thx1D9 zB6|#ECQ%2a60OQQ<{6-)5|okv)6E>1Xpv+@iIv@MJ8v15 zR{N~1_2z$e&R$WgNhIQelIl1rK}5XruIN#GDZA_4bJqcqID*^mXXFcgt1K5iK7HPL zwLW*@#tu()#Cyd@CHc^75Ul6pYT4PCpSeBE)hh4bY>k44ofy`glX(f`FeQ1ryD^He3_$AF;>MqR!3SIPcaSYKo-+E!c z*Wm(&BOm=wowqLu6fDVLb2t7ipx5`cvhJkz7t@&7UjpY!FDuIGL}<4*si^RYMQ3$w zmtklB{`80Y$+8{S7Cir%|L~N<+UJ7hQU|ZR&R0C-`%%PNjH@G8d!N8<*-jRZBDU=J zR{}B@UXqZ^3=#7>EZ=rU$XZ=;F%_L$|8 aKiDGE{IiOgQ~iLRWAJqKb6Mw<&;$T_QG$>F literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-next.png b/extensions/themes/bluewhite/images/icon-next.png new file mode 100644 index 0000000000000000000000000000000000000000..e252606d3e68c6da135a9b165996d9da968ef7fc GIT binary patch literal 395 zcmV;60d)R}P)IO8de(|Ml<%@O-40!dwX61{2C5s-llVw2V@@N0oo_PPieZ!0Y2~+R( zk!(QTf=B;X9DnzJ@u9c>OP4(U@7{849!UlyO@H`*;lVfmCvAW6f9CF&{}ZR*{jXDW zb_vl21ozzrYJBy-Vb$aRjjJF3@7nm}zjw#A|58cE9uZ}LbIY~=6ShA8U$XeY|MDdd zfQCH!?_7WRzhvaG%|sbsT7Kz&`}!yUix%Do#>T_{_Ei`DO9UTSBkH=Hg(w4*^UnUS zTk-IJ<+2C=ZObqG7Z2FGlB7VCN;>(!bn*TFHYMl(i+Sx`L~=ArL>~EXU3lidsO!!J pWF;gqzXSh89JkLNxXeT<1_12n>%V}Y6R`jQ002ovPDHLkV1iLCz99er literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-previous.png b/extensions/themes/bluewhite/images/icon-previous.png new file mode 100644 index 0000000000000000000000000000000000000000..18f9cc10948f025fde708328fa704b520161e5f6 GIT binary patch literal 389 zcmV;00eb$4P)K{b{Xc8(tN&i@ zH%T)fYQpV#rAr?FpSkE_eXe+_wJd|K3f{{%aMTC(eL? z&YO?2=RWv9b;pbUjjJF3FIss2fAiYM|D{t;5@!?n%vQ}6um-u(1``H~0!(`ViJ zU$yMvf616*#2KJfaGFIu@9Y|n)@%Q3RzCcnHskjH!iD$#iw7MbEf6JRj;ypTzwkeA z{@wqXv+w*Db>B;RG>UocU1Xkp@_*9QTmMBIcK#4KV{At)KG$c#_utJ;JncjQ{ugvi#ZM%3MWsnm-aQTLHB3 hKFHZ17lAZ`!~r__K9H;~H+MJzd|s z^YP1Hc07G_>)Lgir!F1{Qn4GcTg%?koHo<=1qRN{}nPDolOeI^o4N5I>! zU$N=L=sg~ zDx#dOA*B0N~cqPsWI(^rbbkh)DS0_H_UN0C4l_kvWIm2#Kyy6%BCh z(yIUf003&1xdx>t$*eR2ZvXxT0001Z_R$y3Iju92q*wg58};}zm(OaAH=p|y0002M zh5O5#fxp|~jc?yi@+7$`d4Q6Hl%z;WiWG??NXR{Hx%)pMd~SE0000OQI literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-save2.png b/extensions/themes/bluewhite/images/icon-save2.png new file mode 100644 index 0000000000000000000000000000000000000000..44c06dddf19fbda14efe428b9b1793c13f46b2cf GIT binary patch literal 755 zcmV3^_07cLZBR}_>&jXObH zw2it@svr%qE?kJ(Xuudu+DSW|WWK!jNvbU^UO02#+Tt zYOko4%Vx8c4Gh!M(=Qem7g;XcE?n0Qi^XD?&*vX7@xPFCIh;%;@xMr?(;$(vo9j9i z6;riZMJyIWG#Z6r7^-I5HtO{{DwPWQ`}>&y+Y;!yjz*&a$8prX=XtO!3$0d5J>%Mz z1f8>Jnx-7^X2#7Yb#zC2VYfZ>c17@L{s)8{OuWBa3WHFfVXfhLv2t?V0V~q5R2D*D z&315l_#iF}b>Zoo?-;+7*`WOJWsMw(x3WXv`@U*s@Y-&edFEYpz0skP)dFfu zZ4wIp&Vbb!+|0+3Qa}p<*AH-eY>3q8s6?RA)zqP8W39IT5HLFG9m1F);gE|P`L7@@ zctjKsn1rA6!ZZR%R^(SjU!r=2o$yGp<$KViK~{B;AIcgvN+J+&Nvur+W(Sw&=H?z} zGMRW^U!Nl3AvWzQ3~C%Z*G*(?qLfNCq;tpg2yRW4@yl9;p3CK)O-@c8Sy))OUMiKc zQp#QYFZe-*@LZDInR^#F=Bm=!vA2i6tkEJ#i0aggzp2D%3!>h~r~3uLt(-IMoyFASV2@MRD}JQ4(c%G%=dG@_vxH?>gcH#*Ue2HC}9sapf8X?R$Z;XEnm&g zW99mh)5jNw008mK8)r^`_{yH0rNn%u1|SpC(tjf#om=+r#lh+?Kb>DVb9`|C0Bvbv zN3U(>f4-tAC1hosRoA7p(b(hL*V}(j>ug<`&U)|l$6o$)!>PBQ9RQSwn9asj2p*|xhU*R^vq?*Twb0t!lm5}`yW5lRy-U0ZYK?8to!;o!r!XeOE$ z0HB3T+6EEoI4PlR=wonwqJ+TvCoWh&$?CAPVYcU= zD{DS0?AkOtb@-hh^ZLq~FMjxYf19X?pa_YqtgZGvv2TaxcF#KT?O%=_*a-kW_;N|D zakkWsOe!)HsT5WRBiC+p;N-c>0Qwy(1D2MDBC595oXSiR07)sKNk-%9*rDBOO^HUD zZW#;)R&EZpqha<(HK$(tZYU#V29<@0qCXgU{gXeGpc_|pTqQD-WO|}%yKZbeX7k*H z2W~CK$v8NBAq~czrc5A(v51g0Wma7`G8}f=ZcuAiYYxZan@gP(;Ku66M6?bquGiHe z3Q0ya)%Lvk@kLixZfZyU@#UFbv+>pYhcj8TRKSr_sWG8i^X~UA**LvbD3(_Lba3xm ziYcpup*A9qJ$?AA=Og05lndxfwr`!C+O~h|B~4 z01q8H`StcY);%&mId7_+)76ovRpeNWRp&4M?#jx@|E-)x%P*A6t^fc407*qoM6N<$ Ef@ddc(f|Me literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-search.png b/extensions/themes/bluewhite/images/icon-search.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3d97f75e9cde9c143980d89272fe61fc2d64ee GIT binary patch literal 615 zcmV-t0+{`YP)gNuvOO$0ks zMIj=HnnBRUR?tKXG11rxCU4&7dG4NbuvR2_mEvc)n?Cow;~Wve|KR^>9@p5l)|QB+ z$jmun3q#x>;ss-PW_mnr2MHVzLAl1RW&0?VkixF*4t!St0YVb2wnKdU(kmOHiL;aW zK8Xte%(k>MVGG$E4no6dcNnb>BhVHHGD&1pv4YZ68kE2V03t5#PCEFm7=ad$6)+3B zTCmn*?A?=u(o~ET7~-7g0)ZB=6|lumi4}B}MLgy~Ysy6)Q5%Al7|05&1z3Jpu>cF8 z3?VXs*3<}%h3`5Wld)N2zJnk%Agw<~3k)sPTLFd=F5;d8-bj-09SkQuynfflNcZLN z!^_37fdZvzrq=9~mp*($%mcDRKC&qvaaZuX+C=AT6O*~tHl>0mcP<_q>-z%$xO(@! zYluq5a8VQI$S@4?r*v;gPo!QQ%pX3A#>xx4t=w-L6COWx?aj&`f+!YePsFtj=hOQR zP3=E2j@9L7s8;T^&s?u(Hdpu?CubjMrGn{t_37>9$|AD)QE08weJlKn8|OyjL~7oP zC8mPT`jzuH*Dh^I0048RGafUIT)4H~*m8m>egI0iH=(LB%b@@O002ovPDHLkV1lw0 B3-zR010qNS#tmY3ljhU3ljkVnw%H_000McNliru*9aX8HU~<m2tjIH3<@sh<`<>sivW|C@Clg6vP;6HiBd!blZ(m zu!xm5(1LVPHBIRvi&EQ#Qlx~4Ns1YwNm^ScshK}ADx+~S-udo5w~IowwcXfvc{n^A z&ilT~ImiD|=|2bEBW;bw1c$7ZBRY5*7BL`_LAYqF?fhAOV>iG-ayRoxF2fEj% zarMSmc2HTi0)Y8qj^Wv>{PK7#jnMPsfti690A1JL=qLpGLQANq3kt`Sd0iBpny_ULd&W) zCXyrcjrXSzc8njNje7vr1c!aq7-_26#8CDcPfbA41{fPqG)0UF*cEAKBr`~}zm3f` z%@G}N7{CJvtnS<#-brHN9>yB17{nTs2ud7#*B+p)ZV$&cyielsG_C92qNwRy1QfLP zSC&_k%>RKE%WnT&j;%j|5|4fL2Wj=+!HVI#-@hT5i&Isx3Mn{$(Z+(-h;uj*mX|DN zd-zR4T zvB_Uk6zTh0keWY@cI36Y(EZx}$}Q0rW*<$H%uVA&sH_)mQK{pGw@rn+W6 zP7J&d<%ToS4$-c6YqV+g?)AH#>>X|v082HyN0IWS3ZN$1m u7>+pY!dOsBWq^wW^w0Dr{<};sqdx(;bzT+-hl5i90000;0v$<2 zK~yNuHPXFL6JY?y@!xaz-1X(|=$*8b0#;g4LSr;B(Ly4rqN@vC*>PiWkd+uEDJAcM6!A13YJt~CYob&stsy^eKz)bIDNSeEs8Zf7K^)-F$UYVgCGb(0I6g$nX+vg z0Fck;7d+3y@$s=+tJMO}^FW0V>p}=y2;sP{8|`+xgLb?9QIAt;J|jPn)Tub7)Uhnf z=A5sSy}iAmVHoOoJXRdXA*<`shaIdL}blal@q9Ws4!Dl<(~9Fljg(VlWth zF$O{i5{U$^Weqhur9GL>-!)D39Kq;2dc7Xb&dwm0N~QBor_;79Yk?3FQxqkm2S0C3 zr?oXLgM))1=^yStEMCo~a=9cS9L`vWq^6*1DX26V3r~Iw$^SLBwzi_>+1)!aWAZJH q8d@kEAPjs2VHk!4f&up5qsBj2A_rA5JTPYf0000n3Xe literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-toggle-minus.png b/extensions/themes/bluewhite/images/icon-toggle-minus.png new file mode 100644 index 0000000000000000000000000000000000000000..ae09791ac819ef80ed2bfdd8eb1013e97f4393ad GIT binary patch literal 1015 zcmV4Tx0C=2@luu|JRUF4ZZ#tnMi6E{u29$?~7$ga6E4oFf$tLMGZrCo@o7t@`MI<2JZ1pH!szp3h5f74sf+u?@5@@aMAqe8Bicl={B4s_y{+SSq z{$Swqe!t)Q{{9R+82G9j1lp3Y=|{%NW#!81nml-&0fra^D7#@WT`VpDl!HLC&+h+> z0Jt$x4g#HDI(hxKm!A6K{jc-4hrcU{{rP)r$gHfcfsjC|7W0chYCYx?K(8Mcq~efJy$AP((>)gy-i5QAA5 z_@&*xHwp(oga;qA+kb!3Za?@G4(!7B+HIOvXGcQ(2ywsh8Md7+J&fa-0LZ|l6R`XU zc)_ApgBoC+4FU#p5&`Qqx?&P>EYb}je zt4E9*NVUh2xp^_cYs4+ zO`WSRF2^kNx%y0@!#|m(Qv#j^>vEur3vqAO53Hh5c=#xMBn~;UOb}pbP{qSTz* zqcC`cZ2W7crkG$!jyw3=!Qk;GO%xJ`C9(y!#(N4feJlNE`eyo4`f~b@izCgkeq_tM z?zuY`?ovcydb*uxr>9uorNJ~BO%26nZ>BKOX`;KTe{rO*_hx@f|+S{jZ3|>9IXIG7VQ>ormd(Zv6P(tg#RvX9xbcE*0iUg+H@;p1@zg(0Mj#^)?@&;RS@62C0~q;kqv#&e~U%gUl@ zR6VT{&)k26|EK)}0fiL}$-4Xb00009a7bBm000XU000XU0RWnu7ytkOeMv+?R0x?> zjxh=YAru8)P{GR1`*?$Z2Nm`NiP(4q?_ewbkBX$pZZ^|QF+6yW7~^a2?dF^qW8gG1 zzvWuXDWxEUfYur(r4%QL2udl`TCZTOMeiMwnPH59_x_40B@huL5di=~2!Bgv{zYpo l?hp}VYwgH6KkrY!K0c;fQKVPa)AaxV002ovPDHLkV1mWh;P(Ik literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-toggle-plus.png b/extensions/themes/bluewhite/images/icon-toggle-plus.png new file mode 100644 index 0000000000000000000000000000000000000000..9db4f411e1661c4e00088e718278ce5705996b58 GIT binary patch literal 1018 zcmV4Tx0C=2@luu|JRUF4ZZ#tnMi6E{u29$?~7$ga6E4oFf$tLMGZrCo@o7t@`MI<2JZ1pH!szp3h5f74sf+u?@5@@aMAqe8Bicl={B4s_y{+SSq z{$Swqe!t)Q{{9R+82G9j1lp3Y=|{%NW#!81nml-&0fra^D7#@WT`VpDl!HLC&+h+> z0Jt$x4g#HDI(hxKm!A6K{jc-4hrcU{{rP)r$gHfcfsjC|7W0chYCYx?K(8Mcq~efJy$AP((>)gy-i5QAA5 z_@&*xHwp(oga;qA+kb!3Za?@G4(!7B+HIOvXGcQ(2ywsh8Md7+J&fa-0LZ|l6R`XU zc)_ApgBoC+4FU#p5&`Qqx?&P>EYb}je zt4E9*NVUh2xp^_cYs4+ zO`WSRF2^kNx%y0@!#|m(Qv#j^>vEur3vqAO53Hh5c=#xMBn~;UOb}pbP{qSTz* zqcC`cZ2W7crkG$!jyw3=!Qk;GO%xJ`C9(y!#(N4feJlNE`eyo4`f~b@izCgkeq_tM z?zuY`?ovcydb*uxr>9uorNJ~BO%26nZ>BKOX`;KTe{rO*_hx@f|+S{jZ3|>9IXIG7VQ>ormd(Zv6P(tg#RvX9xbcE*0iUg+H@;p1@zg(0Mj#^)?@&;RS@62C0~q;kqv#&e~U%gUl@ zR6VT{&)k26|EK)}0fiL}$-4Xb00009a7bBm000XU000XU0RWnu7ytkOfJsC_R0x?> zj708|M1H3+h7bbA onA;q;ZChiE@Bh-?JGIvJ3zyPYmLF8fnE(I)07*qoM6N<$f}8H;-v9sr literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icon-warning.png b/extensions/themes/bluewhite/images/icon-warning.png new file mode 100644 index 0000000000000000000000000000000000000000..1b9afb545f1363c1a2ab0795eb5a191a009dbb86 GIT binary patch literal 671 zcmV;Q0$}}#P)ubwY0z+F;kW9+RH4Se)4C>TlscX?Gq+^FJ9V7@si|mj@ zg;0lz5G)ZaiHJ@GStv$EX0E%kn2P?7nXiKyfola0%*P&$`k#K;do!ePjP4HriM82bocc5 z<6Yr&y=fV!=-uqHSgv83uyeu)mdC;rz5HJc;?EmuCwuFK;?Rj-r<>@ax=DV0u)`ng z-d_7p22{Nts%kaWpTpS7O0TNgo zZ$oaR1(_vHjia|KV`%~6z0r`Wwg)SYL;Yz$m#0andeFrYY zQ~@(13-ifYWacO=i?H&VVdWmdP)D6Bj$gg=QgYN>IvVW`Z98XE=OD9h04f0D%iu7k zK2882K!u;`hhfg6sJ=DeJKi+_Fup&jYq9ccdNwt+!=HT#FL7^4k`kl=5HKympbJu9 zS{sp7-i8mIG0cn%9=27avmkP6=`lhLutU*hamI@L<-p(jfDu6H-m^#z4P3P;I*@pE z{xn6QqWCk5ClJSj?|2Z$gE&6K^&y@>eS!M&)>!X5{{oauW7(&9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/arrow-bottom.png b/extensions/themes/bluewhite/images/icons/arrow-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..7556249df635dbbf7d977db1caf3fafc545483c3 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf67>k44ofy`glX(f`FeQ1ryD^FJ%1x(DVkH4P*6ms!&aSYKopPV4U z)F9~f|G4U5mZ!gr4gRz{bI8m7F#OZb(Dt9FZbq1c?oWQk44ofy`glX(f`FeQ1ryD^FJ%g_!vdxGBc~g-ktN978nDCnreo zH3**j)gRl(dG2d^!Vms-0XwS?$v^lRdHzfO*%1BWctg0sE+-c-GaUaUx+ze? R-WzBDgQu&X%Q~loCIAi5GX($u literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/arrow-first.png b/extensions/themes/bluewhite/images/icons/arrow-first.png new file mode 100644 index 0000000000000000000000000000000000000000..35acfeec92634fdb106b3ec0cebec0db3e837419 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf67>k44ofy`glX(f`FeQ1ryD^FHBnOIr=ns*8Ug*ZxFBTAg}b8}Pk zN*KPKnFi8p>*?YcqH#VsK|8i71^a0~*BO>FVdQ&MBb@0D6x-;Q#;t literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/arrow-last.png b/extensions/themes/bluewhite/images/icons/arrow-last.png new file mode 100644 index 0000000000000000000000000000000000000000..390f6b309a671494f4a5a12662351949b5557753 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf67>k44ofy`glX(f`FeQ1ryD^FHBnOIa;xUS#>3UQRUMwB?`=jNv7 zl`woeGYzEI!PCVtMB{vN!UF9d=O4Ix9IR)vZ~Gr0#Wf=!)F3A%;Ya_XZqB;`B?nqE v`59Szeux@8+TJv=@u2){rA3Dm7celS7x3D>c~H;_G>gI0)z4*}Q$iB}5|Ka( literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/arrow-next.png b/extensions/themes/bluewhite/images/icons/arrow-next.png new file mode 100644 index 0000000000000000000000000000000000000000..a40bffe2241ce11ec15af16f5375e90b911f5d15 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf67>k44ofy`glX(f`FeQ1ryD^FHBnHUVOeco9P6yhjxjVN)>&&^HE zD`EI{W*SJZuBVG*h{pNkgaz6^&OdPXU}RMN|6e%Z(|>yi!>Nap<&MJz@s>l03m6zO X)K%s#Kew$9sFA_b)z4*}Q$iB}>dH9l literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/arrow-previous.png b/extensions/themes/bluewhite/images/icons/arrow-previous.png new file mode 100644 index 0000000000000000000000000000000000000000..d8caa11f9a1d5dfd676ec6fbda0e84c6ed6b4380 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf67>k44ofy`glX(f`FeQ1ryD^FHBnHU9{8)swyg*ZxFBTAg}b8}Pk zN*KPKnFi9U>*?YcqH#VsK|HkNK56M6N%l9*_Fkw{_c*v$y cL7su(_z9J{Urw}k0W~ssy85}Sb4q9e0OpH1%m4rY literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/arrow-top.png b/extensions/themes/bluewhite/images/icons/arrow-top.png new file mode 100644 index 0000000000000000000000000000000000000000..5a319dc8a4a00fa05d7abedf46f9e331aa1c75bc GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf67>k44ofy`glX(f`FeQ1ryD^FJ%1x$IDTwu=z3b}f^IEHAPPfn1i zIKYwqb74pRp^y*qyWPatbhIQUhHP4p^{Zd$k44ofy`glX(f`FeQ1ryD^FJ%1xytCg`-Xah4ejL978nDCnrcu zI?zAiOMQ*kABlhe|My3C${()hIIxaIuXk08;JOF)ZDPk1g*PzV`YyA4_m8HhK&=d( Lu6{1-oD!MaKR}~@vU?A z+AIC*$qy?b^-Fjp;V;?d?@lQ&U4bJ3H402M2GBF<&|c zM3kGDm{=Jb8wM8rvwlnRAHf2C6S zZj6cAM{6D3y{Bo~C=?3)Ns^R^hzUS`X=&-*+1c6GtE(%r)++Bkd+!+lb>-uk*@ag%`Mo%H{G$W|k<5MmpaV5xx%$0M0q`-V*?XTI+LbEfJC4*x2}F ztyR|Ab_N|WvoNz$N?9T@&N4$N*&C`(Mtv%zOV^L^1$P0J>N#CTW`P0cf#^ z_|5>IklTMw3AQ-t_+d2MI=RcLhct#`61O)&9002ovPDHLk FV1i)EPb&Zb literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/cancel.svg b/extensions/themes/bluewhite/images/icons/cancel.svg new file mode 100644 index 000000000..a48af0b0c --- /dev/null +++ b/extensions/themes/bluewhite/images/icons/cancel.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/extensions/themes/bluewhite/images/icons/close.png b/extensions/themes/bluewhite/images/icons/close.png new file mode 100644 index 0000000000000000000000000000000000000000..662161db40966614e1a2f10e0087ffded4698b64 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2hGm!icqpk;}I0Jk_Tp1X4{Qv(S$V-T6+6JT; zOM?7@862M7NCR<_yxm Q18QLKboFyt=akR{0LR2E8UO$Q literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/context.png b/extensions/themes/bluewhite/images/icons/context.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d15b9a25e998c8c58d904aa61fa37744c5175c GIT binary patch literal 762 zcmVFrN<_p{haiZ%g+if$M~Fls zDT~GO1OWN~;2Z$-w7935CnqOID2hs82Y8;xU@(}WX*x@i zC=}O}O66ml&1M`N9PDj08nC&!Sz#FFT`rfa0V2ZU;^JE8%!x#zoJ=MQh=>OV2hvfP z-wA>+t5m9i6CoN5h8yea>%WV|BF@gvdV|5>M!jA?AxKfwH=Ry*y)*Q7v9hwlilT@F zK|IoGwU<2}&zDxSBuVIUxn6gB@^(Q{6pe^zwOZf%{r<0rh}+xSoFE7oi^YER_xE4? zr-0Ar`*_@PG#dS3GMQ%5>GUDXvYbpNyK<(0Mxzq>-EY`fxe@C;O%z%%Sxs4l;b!M z1VJCbIPs_{8A3Aw|0nXWewENGY?*IS*07*qoM6N<$g2Gy41poj5 literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/context.svg b/extensions/themes/bluewhite/images/icons/context.svg new file mode 100644 index 000000000..8bda64b54 --- /dev/null +++ b/extensions/themes/bluewhite/images/icons/context.svg @@ -0,0 +1,63 @@ + + +image/svg+xml + + \ No newline at end of file diff --git a/extensions/themes/bluewhite/images/icons/copy.png b/extensions/themes/bluewhite/images/icons/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f31a278e17993d8d4e13beac2f9d5f7b42d08f GIT binary patch literal 309 zcmV-50m}Y~P)57I*p zz4R^w{RI0VdiMhqBnQu;q4Xk{iNw7~VzF3# zPEe@V>z^+!F5dnn(ZchfR4RQa7K>kjP7c8Hy!`C!thcwf_v)o`GqY{m^E@v&X7($+4b6&j5O_xJY{3Iz@h4(RoI8G+7lSqswXbb>gJxx2e#V`GD*r6rOi zK}0w@I^y*7lzzXDh|uYD0^sLZM1ZSy@?;H#Wev$Hc!PEK%LmwZ0Y>gp=4>jGemNqyfR{N4h9 ziJ~YHk=OI{^HeGo_V@Qm(-h0Hux%R=VK5j(fSC|cL{gxAd3kv=91bUzMkzJ+hr=QD zdi@4yk1(ig#g$U_%*@Qf&d$!Ksi~k44ofy`glX(f`FeQ1ryD^He3L^K8U9Azg1g)VuzIEHAPZ=Go9 z-IOTOI{*9OHnpQ}oKZ}FxzFbDeq)~_QzX_@=hVFU!7T-o6wB>jxucw1CcKIkS)`hw z@uX10Y2W+M^LO7_&Z&OC({bBkf$Y9-_v4qd+k3uTS|OCgSNl+Ahsxf=F?V-=5RWgL z=6UWOTPoXgnR2K!V!yV>SwrTaydMu{v`^r4`*6xUecRgE=fCEkUsW2t-K~j# c_r1ML4JK!=ef?l{7w9_%Pgg&ebxsLQ0PvNDJOBUy literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/icon-not-available.png b/extensions/themes/bluewhite/images/icons/icon-not-available.png new file mode 100644 index 0000000000000000000000000000000000000000..2339c3979d95f42ba28a9333eaacd4a7d54b16d8 GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-z3?wHfJxv8tjKx9jP7LeL$-D$|*aCb)T>mpL z{Qv*oQPxBdB%S2#?!wT)D(eB{a29w(76bJQgD@k*tT_@uLG}_)Usv{~9q1 zzX635JY5_^IIbrrBqRi+B?K@kD=>3}NJ$)$l5moC;9+B9P~XSg^r}C?0H~J1)78&q Iol`;+08A1lz5oCK literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/list.png b/extensions/themes/bluewhite/images/icons/list.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4de7ee2273dc4dfe310fdad62ac6328f44c74e GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf67>k44ofy`glX(f`FeQ1ryD^He3_$AF;>MqR!3SIPcaSYKo-+E!c z*Wm(&BOm=wowqLu6fDVLb2t7ipx5`cvhJkz7t@&7UjpY!FDuIGL}<4*si^RYMQ3$w zmtklB{`80Y$+8{S7Cir%|L~N<+UJ7hQU|ZR&R0C-`%%PNjH@G8d!N8<*-jRZBDU=J zR{}B@UXqZ^3=#7>EZ=rU$XZ=;F%_L$|8 aKiDGE{IiOgQ~iLRWAJqKb6Mw<&;$T_QG$>F literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/save.png b/extensions/themes/bluewhite/images/icons/save.png new file mode 100644 index 0000000000000000000000000000000000000000..99d532e8b1750115952f97302a92d713c0486f97 GIT binary patch literal 620 zcmV-y0+aoTP)~H+MJzd|s z^YP1Hc07G_>)Lgir!F1{Qn4GcTg%?koHo<=1qRN{}nPDolOeI^o4N5I>! zU$N=L=sg~ zDx#dOA*B0N~cqPsWI(^rbbkh)DS0_H_UN0C4l_kvWIm2#Kyy6%BCh z(yIUf003&1xdx>t$*eR2ZvXxT0001Z_R$y3Iju92q*wg58};}zm(OaAH=p|y0002M zh5O5#fxp|~jc?yi@+7$`d4Q6Hl%z;WiWG??NXR{Hx%)pMd~SE0000OQI literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/toggle-off.png b/extensions/themes/bluewhite/images/icons/toggle-off.png new file mode 100644 index 0000000000000000000000000000000000000000..64d5eecfa1cafc8f444b45cb014afa277d6fd746 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2hGm!icqpk;}7>k44ofy`glX(f`a0d8)|5y08;s8iRNswPKgTu2MX&_FLx4R2N2dk_Hki%Kv5n0T@z%2~Ij105pNB{-d zOFVsD*>7>N3k&ny(_fkh6cYDzaSY+Oo}A#ov~VFKPvmN~2E&eC7KV&zthR|iltY0^ O7(8A5T-G@yGywpopDI`Y literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/toggle-on.png b/extensions/themes/bluewhite/images/icons/toggle-on.png new file mode 100644 index 0000000000000000000000000000000000000000..11ff3989472955d623ca01b9037cc284a5e60e1b GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2hGm!icqpk;}7>k44ofy`glX(f`a0d8)|NoWV@(`q=B*-tA!Qt7BG!Q4r+uensgH_f8q`bf*vY3H^TNs2H8D`Cq01C2~ zc>21s-{N8y7Lr}tvgHy`NZ!-MF@)oKasp3cLP8AF!G+$;5}U$&8IlF0)%Ze~8Mc1m Vl-^Nm%??z`;OXk;vd$@?2>@6xEc*Ze literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/icons/trash.svg b/extensions/themes/bluewhite/images/icons/trash.svg new file mode 100644 index 000000000..a69c2c5a3 --- /dev/null +++ b/extensions/themes/bluewhite/images/icons/trash.svg @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/extensions/themes/bluewhite/images/layer-switcher-maximize.png b/extensions/themes/bluewhite/images/layer-switcher-maximize.png new file mode 100644 index 0000000000000000000000000000000000000000..b63ac9773ecbd00a87cd274ba4adc966cb71005d GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|#^NA%Cx&(BWL^R}oCO|{#S9GG z!XV7ZFl&wkP>{XE)7O>#CW{QGrPamH$JBvBxt=bLAr_~PP6^~YpupjLJ5~JQzxGEO zU-J!5Ur6gxmb!zd)8UyUwnOZ<_thlh+y zpHJM=yxeEujIhx2s`GJMsI7=b{!q*QiBG{2IkI9M;Wh2U6{x z%)QC_*1W4v`=8_v#^opE8?-;nP*rK2cvISQ@3U8`vD1t+w>)o;6MD-RazOi2_JU}x tKmRXod$TcG?U~Hh#Er-Qc^$prcIkauSI*=veW0@#JYD@<);T3K0RU+eU$+1N literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/layout-background-black-20.png b/extensions/themes/bluewhite/images/layout-background-black-20.png new file mode 100644 index 0000000000000000000000000000000000000000..6c7cc906a2db91665dd0c058612a22cfcb9e82cc GIT binary patch literal 869 zcmV-r1DgDaP)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_0013HL_t&- v8DnH%VDJTEf`Eyj3aElng?K}X=->eWi@X3~P^ic{00000NkvXXu0mjfNb;B% literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/layout-background-body.png b/extensions/themes/bluewhite/images/layout-background-body.png new file mode 100644 index 0000000000000000000000000000000000000000..75b3f987a4bc8213800a6649938d61d0a5251a1f GIT binary patch literal 14509 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 RU@sw{sj3IBQL%gV{{e3uXjuRN literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/layout-background-modal.png b/extensions/themes/bluewhite/images/layout-background-modal.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe3b3c6a2c551115815f618f6f6d3905b116089 GIT binary patch literal 853 zcmV-b1FHOqP)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_000e1L_t&t f9b;f%VAu};0K@>mdZMQY00000NkvXXu0mjf`s|Mu literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/layout-button-menu-gradient.png b/extensions/themes/bluewhite/images/layout-button-menu-gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..4004aca8da27a7dda095e59e747056bb96c052c8 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^B0#Lc!3HG%8Q!`Lq}Y|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfbq+BxRq?NB{^3BOeV#6kAs)xyPBIi@Qsi-AmzR}0 z`dj|E)LQe>9G*KA08yr#?JVbw9)oa=H6^LaIX3$DyK zC%ImAbxwNM)Vn)UW(Kb4VzOFLEwQpBNBP*cx%t-Zwmxt8FCUyFVdQ&MBb@0Di+%I{*Lx literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/layout-tab-gradient.png b/extensions/themes/bluewhite/images/layout-tab-gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..1a69963be0179a7cbc0d31ec2cbeaa4e06b267bb GIT binary patch literal 561 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 Jwc^Gh{|7L}cj^ED literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/layout-windowtitle-gradient.png b/extensions/themes/bluewhite/images/layout-windowtitle-gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..50d6cdb72d9019af787e46514f20659a540e1d3f GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!ETK!6d+|9x9Tn4HVMzba4!^IGvmz!MZp>M1ZY_hlgj< z6_W|Ajg1faxAOk6eG&Vk{no@oHnYsw#Tgh*?PrmjX~e7!)XCuK>gTe~DWM4f39l&{ literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/logo-ontowiki.png b/extensions/themes/bluewhite/images/logo-ontowiki.png new file mode 100644 index 0000000000000000000000000000000000000000..ab73b6e5fc866092706fc6af2f2b6f290db356bd GIT binary patch literal 3028 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 literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/north-mini.png b/extensions/themes/bluewhite/images/north-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..cd97ee581444d7a87352cfa958f97b0a00a215d0 GIT binary patch literal 339 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%0AaS9Jkz>sl30*90cI8 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 VJ!%g}ODF&U002ovPDHLkV1hZ;Z|nd7 literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/openid-logo-wordmark.png b/extensions/themes/bluewhite/images/openid-logo-wordmark.png new file mode 100644 index 0000000000000000000000000000000000000000..7570164919a1a79deeac2a02c49b09eb09ccd90b GIT binary patch literal 7743 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 ka`bX+VFPw9q_dV}>-gC}- z&aKu|m6RG}AcJ>6q`SL27z~C&p@D&cp`oF0I6OK!8i_=vr>AFUXQR<*EEfBHckg0f zb37hj9)HXQ{cD%Kn7k)~Hmv>Wb<@MPU&@QqY%%y&l`}A$6eeC)}?NVsh9%|z_ZY14<2?0cM z)H1C+D+wEU))Q`L+zk5I2%BsMGx9}bxks;4AwNS-xAOdou#xAFg#9KfiJd@J(5%@` z1Bj)ll$b4E6S5N7Z1$R*$U)?|)9JzlNxjJXO>PecCy|Nr$id(jr6T~K^rL^-nyuLZ z@ca^4- zF!vO|@Pf(b!F-&EM4tfurt_QT{Q)cft26?e4eH~oyfPQCsp^G+HcypK;IoEWt-uz#sZn6JgS+~x$tn{57H?(3Ct%ZK z<@g18e7Yuq&$*5#{LL11VsW&io;)XRPCKJXYyebX2O2Ek1Ore|19+1BZA5QKkpbM< zEf%>NM#iQt6U%yGEEl*ct6c65kKJlxsB(Oa7CEJ%O$BnQNTDdj2SXyr9|t7Ot$DX{ z)IIygdmZC1elC6}`d*Ooqp$0w`gUr+Oq%J>FwXS1mZfxtx9%*IO0P=JD<4#5-561x ksAHVL*nOW=+Ld$Y=FHK?$@iVg&jBh;oPPL9ZZ;hI189N;*8l(j literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/slider.png b/extensions/themes/bluewhite/images/slider.png new file mode 100644 index 0000000000000000000000000000000000000000..019e50273dfdda02ab4cf777a7d75c380d687261 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W^!3HFa4)S;aDaPU;cPEB*=VV@jWC}bYiy0WW zg+Z8+Vb&Z8pdfpRr>`sfO%@qWQ)VS+MrELozo(01h{pM|lMeD8FyLWYA1eNl=iWi* zG!gy78egvJ2-sH%3F)`6q%3O`OkJjbVA2c)r5%#be)^QlvxZ*%Htk8UisXm99oM8X gfBX-e@$Vt`rId#IlBP{HK%*HvUHx3vIVCg!0AP`sfO%@prbJfGUda{9f*gRbvLp09MowTv9MM1<>{&e?EDNaGF z=;(j#^A~(&{^Jx~&CSit<$6y{8792K^za~bQ>0(+b@5_ zvft3^d5gf*NgWwIhR5FgzGvdgCL}1hH8;CQlXrdw!-6TF?#Ul7oR?m9?z2tb;p+HT zp-CMpwoVILHpNJNsmjtTQTB`8ZIu2Xx=KjUawlDwULQOu|;6jiske7Fz#N* z+@Qt95K%h0(r{)?_fy|Tt2HH)|J``f9{kUM%_U`R?f-jG-Yz=)fA;@k+_J0fX6A

      su3N8V2y0$t0PCfI|#4ftV(o1d13CTNLX~0zqWc5Fk`kRs(8PJOxEdJ#=S6 z&=4aAM2!|TAQB*0qg6|-wi6c{IR&WxT&dW&6+hiIXMc2V(;F)<>loPiDdEO#ov7M&EVkR zufP6!_Uze<7cXA9a^=aBCw+Z=!^6WTPMo-P>(--3k9vE1|N85%>({S8fByW%ix)1J z>!+W7I&|pJAAkH|u~_cjz5B~Azl@BGbar+gJ9g~MnKL~-JwN>L!^VvpFI~EHgwwH^2;xG?AY=1&p-eE`|k}64J|D#4u@mgwr%(C-=8;c-qE8+ zNs|2Y&p&tW+&MHf#x6dI-Lg&9I)H%8jWUPU||3L z{hxmN>AH36?%lh0`SRu8e*5kF@4w%^efxt44_2&LVKf>)`|LBD%{F7kjAzfDJ$?Fg z^XAQ^rKR6}_ucK=w-+v4xOMB+IdkUh-o3lNzP_fW=G?h+g@uLJu3hWs=&)L?Cr_UI z_Se#`}S?wvgMOcK6&`?VRLhHdwaXd zWRlC}I-Tyqg$rMO_0_IjyUb?u^5x4D6BCagKR$Ej%=Gm1%*@Qwr%&hQgojx7WDV`A3S(auh*B9l+@PN9zJ~di!Z(?C@7dcdv;@EqgJa` zsZ<0(WMySlRaLE8wW_SFZ0_8-DJdx{SFUVpYkT?fCGh{}^$mz#dMRY8%tVP&78@<5 zfS#A45ts@9Rv_xt2d~xyKstdm2EV8=#aD}@Nk;JgUP53EQf5?W2oU564DqO%DtVuy zC>N^-sy74k6lYBZx3vIR=f578=#Y0fv9nl~U=85|isN<0W@iTugwf{MEfiSd0~TUv zk(9{tVt}E2Cu)sZR0;du<=vQ(WO*s%B1D);_oXZ}iWeB9R3b{R6JaH-5#EL4I_>V- zw0+V|{3$`MWXtGLRxaQs@KL*e39pd5)sAvH2emwVDyRkB3_^5=i6o@BxzNr`VN2x~d~635szRb8BS-%HaqNE47`Qs3|^2(fS&q zf%aY%k|Pc(Q_v{Kbc=+9+QbcwMsh#^r}`liqZs6BslE~Dnon(=NWM!YobBM^bpT4683AMK~2~0|C>Mj+Ak=}%Nb`=v-XK2F`X@&9EF@_@+mQHUrCi-sUF_!2+a&WjI zKwcTfsju$XbQuKSrhK!FkyMID`P{DT*EaZC{R{7#x+wt9XPRC)p&D|qV-;rstUs4Y zjZmZm1xz0Zp6#ClyVcU2ykyvf_7S7BvIsY#x({yz#(2?Efv@xw$Aro995ls>UlcIL za{Kc0%PvA|*cE;G>P;9j!_4O+3rZQ@lt4g)ZajU39__==t~d&TP^CPyz89hyA_Lp_ z_7GFayWZjKdLCYr2uQ8mC&F;9jM~9&R^^qV-X?TK_`ZBRXt9(C$TNQS_HBGKsRoed z0hSA|V_rDjsv0Uc*%56DDljZk8|aSMQL#x zJ-DtYdoMe7)YUs@64T)0S)J;OK61vlXm=%#TvWFehW%O`= ztbTomgZ{psZ%@5%g79rq`bJ17wt9p+QXX2Q1mF51uAAwnY`3<+J+E^)n*R8t>eWUm35XtINE7rx#@bAS3C zkFX4AsfNHv>oCV)a`%?P(vT_7hy$MU@aI=GR^aVU0rhTGzIuS811Z8?z(54HH8DFm zM1srICV^x?RXWIW2a3(67PAwHL$k%PloaMt8I!KHjJpPj0ZK^p$dUNB1F&ZgQ%3;o0Yu36w zb&W4 zfayTrQ?znTH*;V0(!?T7Y7!32$PhPVgl^f-5ANhN2X}*JAY5KDC2Js+faWS#9AB!D ztsNcbXcj6-!p3BWNk~80CL8@yNSxEp;ZLCQ)nrNuJc-Lhs`X!oTJP3_ixLD0hlTH_h=h)X9T0FHM zsKNhN&@{ICd4LD{hOhMkB5Oc1qg*V-17`}PT$2!TP`Qc?NcRm<1)QNc>;XErP-I-y z3Ez1s><`95s3uq}wNO^dW6&Xt4nn)0v2@D8#CD?Yp3qk$-b&a)*~|#i&s1ik8HJr< zd+4;f z*5v|A^-r{xcc=+Ra=I!YtVFjoOc}p=q>}E1ve_^hoBO&F|NiUtCQI`Xk%zdfS#(Q< zkF!RJXO)Xj6Qg(n>Cgm>=J4F&za}Yff)gH_}4GIi}84wnZ4LUiSy}8V|$QUc;L(FkiLF#-8Kv$!2lP4Tx0C=30*LgIQeH#bx>z*0LGR7D?VPuzmU$SqBvSv$3c7~adBxOm;nk5u1 zDB2V)Br00S5|TnfQQ1Stl4agML=Xsy={{Fh|>zw<(fA@XP=leSs04t9>l}bhd zKwwa4u&tRP$;sJ;gzW+humAy6K+D}Dglb@IZ3+Ll<~soa0O*i)r&7smFS9a!<~Td} zo7lc+P4bue=lcKv03Yn+>;izu004*2daVxt9Q)U6djQ}#6iN*RKzsp!!^79z699<> z0GVKWTO$DE8UWyZ*6T_D!0%tL8vp#dr zj^90z2LN2|0EH>Pd$YEH006?(7UHd}1ONaC&JcjEpGKP%2f$_ktftdw%Y`)B>SX|Q zFF-BX<6v;uum6Q0Edc*^z5dO=78(IS0U)ACF)9KbiHW2;MjwrhWjM}g%vi^ClKB)a zfh8GVLGWcuC#JJ!aGc@H;>zOA;i==J@aJvH6SyGQKsqQ~xcRb3o7fTYVu^OCW70Rb zbjrrc-IDK7JgIb7`J-yGT7~+6W~x?|_K;4d?i0N+gKWcRMw2GFruAks=9jiNSD$}y_Ho~*{Wy<@o?pDadJp*w`;PdH z25^#}27U{gq)bt#4}1@v37HF>JNP4P{?J1B;^C!;pGQ_ASB|bmNkzYlMUJE5&?hkQ zbSLRgVG|e<8IzcjnNx77ET{2ltm%XdwoKv~_AHKU&K$0@+~;_5dGq+r^IzC>QQ(qb zzEA%ydiZ{`sR2E`IgLW*;4s3g*%FO74IqCS1DJmP^*}K z5LT)FP@_t#TKmz~$6KH1JXx!Ws?~d{|IFaI;R~ZWOkG^P$xG7)vqtkK^Jb>zq*oR# zmaRM6@NK7GTesW1vF#vsWW2R|XWzN2i>oWA+wr|qkIM(X4|%<=eXjj`J_>%k^vP{t z-=Oed;phEdJidAki47GGdyn{x`i@DB-5B?u2>3>xl%2di6*NuxPMuMlxjP#?7xE)? zUUj}=A#5>x>G03P%Ua9TD@Rr%*L2pN&}aaN2nvsyMmJ+_(q+;|Vtp9w8I71!m?dx$ zEIfE_RvrQm8z)hmU6MnC(~@g1cL+}^Zz*3h|EK`Fpqh{m>8$We5kyo+?11b zY4Vn8S+tyie7eGbl9Y11N|&0nI#r`ii(5N<>nmL@J&OJ_Ls6q6#_gtpX5rf&n=e@? zT6*os+SzW6w=uH~w=1%L>%iow?{vWVf=m7GsXan_t=uB^6}s2$ANAz)((`umIp&-1 zSL@#wuoTE1w1r|!^*s<7oEB0TT7Ix0?8Bk4@c9Vz5w=LuQJG_^QTovqF;=m=kME1~ zIzf&PJsEr|Iw3mocv3=gMoLm@?&))BIqB&c=QA_TWM`etzLsca&P99o_}=V z(Z#w;ukzaqItn{3cU<{U^rd+C>fp7n*QaiLzd2Phd28nOROxux#GT>01NR2+_msC+ zG(M=UeDJWe>U?#^qv*$hPj=T>)NXw${fzi*>G`J@O?CI{GhYTb*fpv(@i)<$dtTjd zNo;j#6KNZIeXsrK8GPQ{d%sG2ofxVbjv3iL$~oFMc4eGAp*pelt#LAAYWKA0^u+gjGm*1qbHuss zA4T(&1)Gqax7S=qk)nIz74?`WWm922+MQ z#(1Wa%!#<|xMr3VdabCx%kFONTO(|G|`fj+@Y zLiwZu;eyQtB9}$4h!u$!OI($_CUsrfPkL<24VezNd0uwL+~z zy+R{gV^On8t4h0i>m!}Vy2o_a^lJ2L4W1f4GkR_uXM!=QGp#p!xvjyxaeI?Rk|oaa z)sB{(tyXQ;X*L9#cH1|09rkZ`bvk4_ayfQ6bvwUz>Dis<%J15{r*H2^w@>>%xfkpg z-aqK^+4GCnSMOpU@%04p9}BoimLX64SBlL3l_HggH4ZOD{5-N8xpH*%*jf}V24Ycv zB?!kmb22Ukm&$UQHI0zY_E(m0<#3+lX!OI?3M2bX<#jlEQ zq)Ca)E!o?0e`JYrxk`oV1NBPvhZ;nLxR|Cl20^pDfU{?qbzXd?T4S?$!fHez%y(XaO1OcT(1!TL< z#`ysV5I_Lrz!01v1k#`k77-F+frKO1kXB?E#fmaR#h@OeR?s@=7<4^)1tW}c#uQ_I z(3#Smpev=DqBo;2pdZ3=VqLM18L$kR3~>zOj9QEo##$y>rf8;0W;}BY^LrczE(kZm zV#0EqWdQGvf5wVt^=6$Q*buS_t858uGej+75xY8j5&IN}8^;2tA7=&E7Ot1v-aJ^I z8@yt?hj{1sF7TW2&u+>W5EY0NLVHIf;O&8lG&L=)7aZ}Pr z^176vG@JCmmU}WMWnJZz<#F=E3NI83m131WRm@an)Y#Ql)Q2>3H1V3XT4mY=ThHj6 z(v8wPq<_GGZ0Kj?YwT+hU>al=y6uR0-1gHJd6w6ARPJoF>b3rEi?tK9*Vtv}Ky^%Y zy6ybhW!9BvkM3S?x3qoL?js)Do@QQ$y-WOf{H+5L$#p>}iUBp|!1ECLP>X{Z;i88r z5sxC7j=CHxiK4~W$DvNR#y>d4o^T+sJtZr3Da|dtK2!coZcfPA&$)Jabr)~vixphB z%w0^lntC07_U6PE+1B>gVIB4F zs9pTs4ZY%h-5(PN^uCk~d5#E;_Iz`g;+pQ7$(?gsm{=-bj-v6ZGP(uBg0aG6VLs52==|u)=oaaX=ugwX z$BJPOVxKb*89W&(8JQVf8E-RTnD#Q=XJ%sdV6MS&;;6V57HO6gmI=HizLb@PmBQLd z&?j7B!?T64eIS|=@352DGuYQSLO8y0`g4wPk-28LL%HX9B6tzrWIjH=8~mF5^_v_v zjS55y@(NZ6*$9o1;)TV98#V`taEm+<^$^2}Jrxg<5R!N!nIL5-wJKe`B~nI5Wk8`;^)Uu$gBio`MpMS) zCPSvPX5-s_Y)4seSaR=B+^K72Wo>H{V0+ju&;IVNR}LQ>SDZOqQSzuG!IB|ip^aezheE=eB1Dd)MvfhGj%tWe zi!F*Ho=81OJe8fula!aDn%bJ?mHsm`B}+Z~>)DIB{^xgHl**?on7I6`sQl`=>+v@| zZn>74-qErt{2r<{0J$To7)A#S`z2|IF&mIzb2_tgg-J%ZX64oX@8mC$vgMUv$Y^1SpLhh&AQ}Yj>Du3|1|tt@Grk_G;6iWe%t*m z_n+PVFSR}cemwrxe^(pU^LMwgH~y5Htn^!MHvNX(3z{2xuVilcEg^0QzE`1 zWm}C~U0Az9OQO*L*5@Sv0AMnrkSW0=OC#fd8Sehy6-Yj~@eTw4a9%;X>;QlW0Gq%F zC_n}Z1Oo{y!3c~2)@L;U0D1zzc}D<%n#Cj0e}8VMS9mA@fDwgyIM~m}Hq=-Ed<7004zaL_t&-m359W3PLduL}%kK zH*JFF@C?@8N>3qzrIt2!9>Pu#EO%3-hzLQlRzeUn-M|~(AcU|4Fkz4xGjExB<-Na` zQUrkY0L2(DT^9grRlSaYZ*D}i5s`-*sOPP<1%A(&*~>Y1G_ylW>DdEs0H<2(KIfeK j(L_XNGux?Z`sexpoj)_$TWo$l00000NkvXXu0mjf&fW5W literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/tree-closed.png b/extensions/themes/bluewhite/images/tree-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..1a7f734befb8975257cc10d137e75db5157636af GIT binary patch literal 3712 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 pv;8Hoj-sd%k(n{Z{KWlZ000diX+uL$Nkc;* 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 D%EoM( literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/virtuoso-powered.png b/extensions/themes/bluewhite/images/virtuoso-powered.png new file mode 100644 index 0000000000000000000000000000000000000000..394f90e46eb7c7ab23fb500cdb90033ce41c76e2 GIT binary patch literal 2649 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 Rfx7?z002ovPDHLkV1i!Pm?!`M literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/zoom-minus-mini.png b/extensions/themes/bluewhite/images/zoom-minus-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..cdea0f5f0b4d1f2b4f1b4c5c16db0c38fba2140c GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1SD^+kpz+qjKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pdfpRr>`sfO%@qWRg0Tlzruh*;hrvzAsXl3PCCeYz<`5!;VGpv5B|EJ z;OQy)8|E3caK-vn-&vVA6&|>2d^yX7rQn9x{+va;&+N9uIcGWhUJANgUH|(;WtL}H o{YL%cxd&pyyj2+aa&)X2m#mcwHkvf|3(yJ%Pgg&ebxsLQ0Fo3ySpWb4 literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/zoom-plus-mini.png b/extensions/themes/bluewhite/images/zoom-plus-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4c7d467e51427110db86c933a3553a0e996496 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1SD^+kpz+qjKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pdfpRr>`sfO%@qWHT}X89gr!xo-U3d8t3;;y2yJ#frItvjt=7u|2fV* z(74{Ob}Yn;*YGJf2Y+7!gJwd*s(05{Ybi8ze7R?yx;0E;`Gl$4ryVwT+_brQ^JmTz zGjn~Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RU1RM!0EE1BHVgLXG*-1n}R5;6h zlwC}dcNE5d?aL?$C4}$L2n@-Xlfb~*1WB}+fjdhWGA~@5TsdV-I__LdggcmgR0tD{ zOH8?=jGL(l(TtY36-q*Ep&?^^Utl1ONLkxy=%D@Yf{e&WcCJsJoaa0rDj|eWsZ=P6 z!n+fT3EXZscDtRetpJskRh&9ijwDG3_VV-d5kjE)FHj&5prPR_0)YTJosPF}-%wNY zDH9VvGe19%R+~g`Zx4lqg$IBTLI^-8iXv{@_*P_OWQwY)D&h0VLQxc9vki-`u5O_y zitu{9;{5qKar9_`XliN_ilPYiAcPt~Q55?6`WPL3jMZu-B_)-{#zuTTnd8Sl;^oUV z*4O<=QXJ*w<>cn(Fg`xc&6_v(nWzE$em_>L6_cr&W5+(Ey}ga>Y#mcmQw$Ccvc0`c zb8|BT0|TU_q)=9-XK2WV)9GY!@ppi|AC;Dtk&}}{G#aJ5yBm!r9z|Kg<#KW1!e;<< zb#-Aje}h`B!snB5yWPZMG5Y)aSzP>W@1pJPZF+lqC@U+axw#p;-A;b~`z$Rj?WYuNWR4W_fvqSS*HCn@D|qJ#M#~U@%DBqel->sZ_XJE(`_(k;vZ|jb|_#&(PP` zM@>x)0FopT4*!MO+yua#J3R;?h>LpsAYSdAWqcZ%`YJMm(N5OePZz4Oj8|*Xiu+#Nn7E5ZFYkO#)zd zH%cTDVQ9$4?b{u!t*z18+JY?0oIZUTRWuqE>FF7ajg7Io`UkIHZ*unRCwRSHIyyQy zaYBzINdy9$?Ck7v?b=mzIvo~^1+&@AxpU{3nVH#>U#~Ziot;HA8pC3-pwYw=3Wa&_ z-~rdKe+|I>`#)eZnaIk@#OL$z{P`~|Eh#*G`izy8gpO%P*5N)Ui|z(Xb;uM%E}5?u6&7Fts*x!4}ikL z50GVi>#ua?-)$$D<@AX{o5FK(E&y^3%US{{S2B0Rq)Gnfm|$ N002ovPDHLkV1l&_@bv%y literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/images/zoombar.png b/extensions/themes/bluewhite/images/zoombar.png new file mode 100644 index 0000000000000000000000000000000000000000..959f01a93d814e362765b11e4b12943061ba5496 GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^LJSOy92{&wR?wFvazKiu*vT`50|;t3QaXTq$r9Iy zlHmNblJdl&REF~Ma=pyF?Be9af>gcyqV(DCY@~oDBzn3yhE&XXd)qOO$&jb@;r+~Y zp$B&+Op96lcFXfce&P<>rxl1f*5#jHu5oIzdd9H^{|B>U_+%4qn^nE{=e+)U>glIW z-s_&&H+eZ9TQb=;*L79Lf~5+fDt!wsP0$i@56JWo?NnZ2vZU*XV2D(Z>mv>=UdazP zqi!2_?3TAqc$asRwKTzJ#fgag&8&NsOiH^_UNhcVcA}?CXUEN^IKf#~uE*ABCe2c6 z3Ts>zwq)n;=px6p%=>a@t7|`cox5#8c#8?d$PKe^&T~8_aeU?fjGsSiX%Dn1C(U*(jVTmsry}V!7KF0-TU&#D^nESl?#TtTrirz zD8F{=e4a<|+Ut&Q5_J?6+#-^4;M|h)HhZ>yn;m%PZm6K6x8p3OLYAp*U;4si9G5EM e^{Vgc6Y?kJ*;+Ny_dEo~2!p4qpUXO@geCy#6~E2^ literal 0 HcmV?d00001 diff --git a/extensions/themes/bluewhite/sandbox/detailview.html b/extensions/themes/bluewhite/sandbox/detailview.html new file mode 100644 index 000000000..c10c8bef9 --- /dev/null +++ b/extensions/themes/bluewhite/sandbox/detailview.html @@ -0,0 +1,581 @@ + + + + +OntoWiki — Instances of Person + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      + +
      +
      + +

      OntoWiki (Admin)

      + +
      + + +
      + +
      +

      + + +

      +

      + + +

      +
      +
      + + + + +
      + +
      +
      + +

      Knowledge Bases

      + + + +
      +
      + +

      Classes

      + + + +
      + +
      + +
      + +
      +
      +
      + +

      Classes

      + + + +
      +
      + + + + diff --git a/extensions/themes/bluewhite/sandbox/filter.html b/extensions/themes/bluewhite/sandbox/filter.html new file mode 100644 index 000000000..172ce0132 --- /dev/null +++ b/extensions/themes/bluewhite/sandbox/filter.html @@ -0,0 +1,68 @@ + + + + +OntoWiki sandbox : Form examples + + + + + + + + + + + + + + + + +
      + +
      +

      Filter GUI

      +
      +
      +
      Dies sind Tests für innerwindow form elemente
      +
      +
      +
      +

      Textfield

      +
      + In diesem form sollten die inhalte möglichst so groß wie das innerwindow sein und umbrechen. + Das textarea sollte nur drei zeilen hoch sein. +
      +
      +
      +
      +
      + +
      + +
      + +
      +

      Sandboxes

      + +
      + + +
      + + + + diff --git a/extensions/themes/bluewhite/sandbox/forms.html b/extensions/themes/bluewhite/sandbox/forms.html new file mode 100644 index 000000000..93c1d5ea4 --- /dev/null +++ b/extensions/themes/bluewhite/sandbox/forms.html @@ -0,0 +1,367 @@ + + + + +OntoWiki sandbox : Form examples + + + + + + + + + + + + + + + + +
      + +
      +

      Form Examples

      +
      +
      +
      Registration 1 +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      + +
      +
      Registration 2 +
      +
      +
      +
      +
      +

      +
      +
      +
      +
      +
      +

      +
      +
      +
      +
      +
      +

      +
      + +
      +
      +
      + +
      +
      Comment +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      + +
      +

      Form Test Stuff

      +
      +
      +
      Uberformtest mit Gruppierungen +
      Textinput +
      +
      +
      +
      +
      +
      +
      +
      + +
      + +
      + +
      + +
      Checkbox +
      +
      +
      +
      +
      +
      +
      +
      + +
      Radio-Button +
      +
      +
      +
      +
      +
      +
      +
      + +
      Selects + +

      + +

      + +

      + +
      + +
      Button-Test +

      input type=submit | input type=reset | input.formbutton | input.button | button | a.formbutton | a.button

      + + + + + + Button 6 + Button 7 +
      +
      +
      +
      +
      + +
      +

      Form Innerwindow Test Stuff

      +
      +
      +
      Dies sind Tests für innerwindow form elemente
      +
      +
      +
      +

      Textfield

      +
      + In diesem form sollten die inhalte möglichst so groß wie das innerwindow sein und umbrechen. + Das textarea sollte nur drei zeilen hoch sein. +
      +
      + + +
      +
      +
      +
      +
      +
      +
      + +
      + +
      + +
      +

      Sandboxes

      + +
      + + + +
      +

      Tag Cloud Test

      + +
      + +
      + + + + diff --git a/extensions/themes/bluewhite/sandbox/listview.html b/extensions/themes/bluewhite/sandbox/listview.html new file mode 100644 index 000000000..612833994 --- /dev/null +++ b/extensions/themes/bluewhite/sandbox/listview.html @@ -0,0 +1,714 @@ + + + + +OntoWiki — Instances of Person + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +

      Instances of Person

      +
      +
        +
      1. + Instances +
      2. +
      3. + History +
      4. +
      5. + Community +
      6. +
      7. + Source +
      8. +
      + +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      member-1nicknamedepiction
      + + +
      + foaf:Person
      + + AKSW + + +
      + + +
      + foaf:Person
      + + AKSW + + +
      + + +
      + foaf:Person
      + + + Seebi + + image of http://sebastian.dietzold.de/pics/people/seebi.jpg +
      + + +
      + foaf:Person
      + + AKSW + + +
      + + +
      + foaf:Person
      + + AKSW + + + + image of http://wacko.informatik.uni-leipzig.de/images/jpegPhoto.php?name=sn&value=Auer +
      + + +
      + foaf:Person
      + + AKSW + + + + image of http://wacko.informatik.uni-leipzig.de/images/jpegPhoto.php?name=sn&value=Riechert +
      +
      + +
      +
      +
      + +

      Explore Tags

      + +
      + + + + +
      + + +
      + +
      + +
      + +

      Filter

      + +
      + + +
      +
      + + + + +

      + Add Filter + Clear +

      + +
      +
      + + + +
      + +
      +
      + +
      + + +
      +
      +
      Search returned 6 results.
      +
      Query execution took 60 ms.
      +
      +
      +
      +
      + +
      +
      + +

      OntoWiki (Admin)

      + +
      + + +
      + +
      +

      + + +

      +

      + + +

      +
      +
      + + + + +
      + +
      +
      + +

      Knowledge Bases

      + + + +
      +
      + +

      Classes

      + + + +
      + +
      + +
      + + + + diff --git a/extensions/themes/bluewhite/sandbox/tables.html b/extensions/themes/bluewhite/sandbox/tables.html new file mode 100644 index 000000000..5af55e095 --- /dev/null +++ b/extensions/themes/bluewhite/sandbox/tables.html @@ -0,0 +1,519 @@ + + + + +OntoWiki sandbox : Form examples + + + + + + + + + + + + + + + + + + +
      + +
      +

      Table Examples

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      without class value
      PropertyValue
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      .separated-vertical
      PropertyValue
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      .separated-horizontal
      PropertyValue
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      .separated-vertical + .separated-horizontal
      PropertyValue
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      .backgrounded + .spaced-vertical
      PropertyValue
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      .backgrounded + .spaced-vertical + .spaced-horizontal
      PropertyValue
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      .backgrounded + .spaced-vertical + .separated-horizontal + tr.odd
      PropertyValue
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      thead.backgrounded + .separated-vertical + tr.odd
      PropertyValue
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      commentThis is your OntoWiki configuration model. You can configure model based access control and some actions here.
      labelOntoWiki System Config
      owl:imports
      + + +

      Tables with Input fields

      +
      +
      + +
      Resource + + + + + + + + + + + + + + + +
      Label:
      Identifier (URI):
      + + +
      + +
      + +
      Properties + + + + + + + + + + + + + + + + +
      +
      + + + +
      + @ + ^^ + del +
      +
      + + + + +
      + + +
      + + + + del +
      + + + + +
      + +
      + +
      + + Add Property +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Gruppe Eins
      AttributWert
      URLhttp://aimsa2006.inrialpes.fr/
      acceptance Notification2006-06-10
      camera-ready Submission2006-06-30
      end2006-09-15
      Gruppe Zwei
      AttributWert
      PlaceVarna, Bulgaria
      price300
      start2006-09-13
      Gruppe Drei
      AttributWert
      Submissions due2006-04-15
      Title12th International Conference on Artificial Intelligence: Methodology, Systems, Applications
      swrc:year2006
      Gruppe Vier
      AttributWert
      labelAIMSA2006
      latitude43.206667
      longitude27.918889
      + + + +
      +
      + +
      + +
      + +
      +

      Sandboxes

      + +
      + +
      + + + + diff --git a/extensions/themes/bluewhite/sandbox/uitest.html b/extensions/themes/bluewhite/sandbox/uitest.html new file mode 100644 index 000000000..233eb28d4 --- /dev/null +++ b/extensions/themes/bluewhite/sandbox/uitest.html @@ -0,0 +1,76 @@ + + + + +OntoWiki — Instances of Person + + + + + + + + +

      tabs

      +
      + +
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
      +
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
      +
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
      +
      +

      buttons - click to open dialog

      +
      +

      + + + An anchor Button +

      +
      +

      progressbars

      +
      +
      +

      +
      +
      +
      +

      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

      +
      +

      slider

      +
      +
      +

      +
      +
      +

      accordion

      +
      +

      One

      +
      + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam +
      +

      Two

      +
      + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam +
      +

      Three

      +
      + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam +
      +
      + + \ No newline at end of file diff --git a/extensions/themes/bluewhite/sandbox/uitestow.html b/extensions/themes/bluewhite/sandbox/uitestow.html new file mode 100644 index 000000000..86ab6ee5c --- /dev/null +++ b/extensions/themes/bluewhite/sandbox/uitestow.html @@ -0,0 +1,533 @@ + + + + +OntoWiki � Instances of Person + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +

      Instances of Person

      +
      +
        +
      1. + Instances +
      2. +
      3. + History +
      4. +
      5. + Community +
      6. +
      7. + Source +
      8. +
      + +
      +
      + + + + +
      +

      datepicker

      +
      +

      Date:

      +
      +

      autocomplete - type space to get all results

      +
      +

      +

      +
      +

      tabs

      +
      + +
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
      +
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
      +
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
      +
      +

      buttons - click to open dialog

      +
      +

      + + + An anchor Button +

      +
      +

      progressbars

      +
      +
      +

      +
      +
      +
      +

      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

      +
      +

      slider

      +
      +
      +

      +
      +
      +

      accordion

      +
      +

      One

      +
      + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam +
      +

      Two

      +
      + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam +
      +

      Three

      +
      + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam +
      +
      + +
      + +
      +
      +

      datepicker

      +
      +

      Date:

      +
      +

      autocomplete - type space to get all results

      +
      +

      +

      +
      +

      tabs

      +
      + +
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
      +
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
      +
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
      +
      +

      buttons - click to open dialog

      +
      +

      + + + An anchor Button +

      +
      +

      progressbars

      +
      +
      +

      +
      +
      +

      slider

      +
      +
      +

      +
      +
      +

      accordion

      +
      +

      One

      +
      + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam +
      +

      Two

      +
      + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam +
      +

      Three

      +
      + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam +
      +
      + +
      +
      + +
      + + +
      +
      +
      +
      + + +
      +
      + +

      OntoWiki (Admin)

      + +
      + + +
      + +
      +

      + + +

      +

      + + +

      +
      +
      + + + + +
      + +
      +
      + +

      Knowledge Bases

      + + + +
      +
      + +

      Classes

      + + + +
      + +
      + +
      + + + + diff --git a/extensions/themes/bluewhite/scripts/jquery.ontowiki.js b/extensions/themes/bluewhite/scripts/jquery.ontowiki.js new file mode 100644 index 000000000..2d9a29b70 --- /dev/null +++ b/extensions/themes/bluewhite/scripts/jquery.ontowiki.js @@ -0,0 +1,260 @@ +/* + * OntoWiki jQuery extensions + * + * @package theme + * @copyright Copyright (c) 2010, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + */ +(function($) { + + /** + * Enhances input fields with inner labels + */ + $.fn.innerLabel = function() { + return this.each(function() { + // the input field + var input = $(this); + // the associated label element + var label = $('label[for=' + input.attr('id') + ']'); + // the label text + var labelText = label.text(); + + if (typeof label != 'undefined') { + input.focus(function() { + // if if label text is input's only content, set it empty + if (input.val() == labelText) { + input.val(''); + } + }).blur(function() { + // if nothing has been entered, set label text + if (input.val() == '') { + input.val(labelText); + } + }) + + label.addClass('onlyAural'); + } + }); + } + + /** + * Enhances input fields where the predefined value must be kept as a + * prefix for any value entered. + */ + $.fn.prefixValue = function() { + return this.each(function() { + var input = $(this); + var prefix = input.val(); + + input.keyup(function() { + if (!input.val().match(prefix)) { + input.val(prefix); + } + }); + + input.blur(function() { + if (!input.val().match(prefix)) { + input.val(prefix); + } + }); + }); + } + + /** + * Enhances windows with desktop-style GUI elements + */ + $.fn.enhanceWindow = function() { + return this.each(function() { + var win = $(this); + + // add window buttons + win.children('.window-buttons').remove(); + win.append('
      '); + + win.find('.window-buttons-right').append(''); + win.addClass('windowbuttonscount-right-1'); + + if (win.hasClass('is-minimized')) { + win.find('.button-windowminimize') + .removeClass('button-windowminimize') + .addClass('button-windowrestore'); + } + + // minimize + win.find('.button-windowminimize').click(function() { + win.toggleWindow(); + }) + // restore + win.find('.button-windowrestore').click(function() { + win.toggleWindow(); + }) + // minimize/maximize on title + // win.find('.title').dblclick(function() { + // win.toggleWindow(); + // }) + + // context menu button + if (win.children('div').children('.contextmenu').length) { + win.find('.window-buttons-left').append(''); + win.addClass('windowbuttonscount-left-1'); + + // context menu action + win.find('.button-contextmenu').click(function(event) { + showWindowMenu(event); + }) + } + + // add menu + if (win.children('div').children('ul.menu').length) { + win.addClass('has-menu'); + win.children('div').children('ul.menu').clickMenu(); + } + + // create the additional tabbed class + if (win.children('div').children('.tabs').length > 0) { + win.addClass('tabbed'); + + if (win.children('div').children('.active-tab-content').length == 0) { + win.children('div').children('.content').eq(0).addClass('active-tab-content'); + } + } + return win; + }); + } + + /** + * Minimizes/restores a window + */ + $.fn.toggleWindow = function() { + var win = this; + + if (win.hasClass('is-minimized')) { + // TODO: why is this necessary + win.children('.slidehelper').hide(); + win.removeClass('is-minimized'); + + if (win.hasClass('has-menu-disabled')) { + win.removeClass('has-menu-disabled').addClass('has-menu'); + } + + win.children('.slidehelper') + .slideDown(effectTime, function() { + win.find('.button-windowrestore') + .removeClass('button-windowrestore') + .addClass('button-windowminimize'); + } + ); + + win.find('div.cmDiv').adjustClickMenu(); + + sessionStore(win.attr('id'), 1, {encode: true, namespace: 'Module_Registry'}); + } else { + win.find('h1.title').attr('style', ''); + win.children('.slidehelper') + .slideUp(effectTime, function() { + win.find('.button-windowminimize') + .removeClass('button-windowminimize') + .addClass('button-windowrestore'); + + if (win.hasClass('has-menu')) { + win.removeClass('has-menu').addClass('has-menu-disabled'); + } + win.addClass('is-minimized'); + } + ); + + sessionStore(win.attr('id'), 2, {encode: true, namespace: 'Module_Registry'}); + } + } + + /** + * Make link expandable + */ + $.fn.expandable = function() { + return this.each(function() { + if (!$(this).prev().hasClass('collapse')) { + $(this).before(''); + } + $(this).prev().click(function(event) { + toggleExpansion(event); + return false; // -> event is not given further + }); + }) + } + + /** + * Enhance link with a menu toogle for showResourceMenu + */ + $.fn.createResourceMenuToggle = function() { + return this.each(function() { + //if (!$(this).find('span.toggle')) { + $(this).append(''); + //} + $(this).children('span.toggle') + .mouseover(function() { + hideHref($(this).parent()); + $('.contextmenu-enhanced .contextmenu').remove(); // remove all other menus + }) + .click(function(event) { + showResourceMenu(event); + }) + .mouseout(function() { + showHref($(this).parent()) + }); + }) + } + + /** + * Make inline elements editable. + */ + $.fn.makeEditable = function () { + return this.each(function() { + if($(this).hasClass('editable')){ + $(this).addClass('has-contextmenu-area').css('display', 'block'); + + if ($(this).children('.contextmenu').length < 1) { + $(this).append('
      '); + } + + $(this).children('.contextmenu').append('\ +
      \ + \ + \ + \ +
      \ + '); + } + }) + } + + /** + * Checks whether two elements are equal + */ + $.fn.equals = function (element) { + return this.each(function () { + + }); + } + + /** + * adjust the space what is needed by the window menu + */ + $.fn.adjustClickMenu = function () { + return this.each(function () { + var menu = $(this); + var window = menu.parents('div.window'); + if (window.attr('id') !== 'application') { + window.children('h1.title').attr('style', 'margin-bottom:'+menu.outerHeight(true)+'px !important;'); + } + }); + } + +})(jQuery); + +//----------------------------------------------------------------------------- +// Defaults +//----------------------------------------------------------------------------- + +// set defaults for clickmenu +$.fn.clickMenu.setDefaults({arrowSrc: themeUrlBase + 'images/submenu-indicator.png'}); diff --git a/extensions/themes/bluewhite/scripts/libraries/jquery-ui.js b/extensions/themes/bluewhite/scripts/libraries/jquery-ui.js new file mode 100644 index 000000000..a6ae8abff --- /dev/null +++ b/extensions/themes/bluewhite/scripts/libraries/jquery-ui.js @@ -0,0 +1,781 @@ +/*! + * jQuery UI 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.8",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106, +NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this, +"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position"); +if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f, +"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h, +d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}}); +c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a); +return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;a.target==this._mouseDownEvent.target&&c.data(a.target,this.widgetName+".preventClickEvent", +true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, +left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= +k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-= +m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= +d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= +a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), +g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); +;/* + * jQuery UI Draggable 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Draggables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== +"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= +this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top- +this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions(); +d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis|| +this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode)return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element, +b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this== +a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]|| +0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], +this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment== +"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"? +0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"), +10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor== +Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop(): +f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY; +if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.leftthis.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/ +b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?e:!(e-this.offset.click.left').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})}, +stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!= +document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= +i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height; +f={width:c.size.width-(f?0:c.sizeDiff.width),height:c.size.height-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidthb.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable, +{version:"1.8.8"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize, +function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n= +(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition= +false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left- +a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize", +b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top", +"Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset, +f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left= +a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+ +a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&& +e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative", +height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width= +d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +;/* + * jQuery UI Selectable 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
      ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", +c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= +this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable"); +this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this, +arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem= +c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset, +{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment(); +if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start", +a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a, +c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]== +document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp();this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate", +null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem): +d(this.domPosition.parent).prepend(this.currentItem);return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute|| +"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")}, +_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!= +this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a= +this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable"); +if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h= +0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width= +this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f}, +update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b= +null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this)); +this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])? +g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive", +g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over= +0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); +a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", +function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("").addClass("ui-icon "+ +a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); +b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); +a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ +c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; +if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(), +e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight|| +e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false", +tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.8",animations:{slide:function(a,b){a=c.extend({easing:"swing", +duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0, +overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show", +paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); +;/* + * jQuery UI Autocomplete 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.position.js + */ +(function(d){d.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,f;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){f=false;var e=d.ui.keyCode; +switch(c.keyCode){case e.PAGE_UP:a._move("previousPage",c);break;case e.PAGE_DOWN:a._move("nextPage",c);break;case e.UP:a._move("previous",c);c.preventDefault();break;case e.DOWN:a._move("next",c);c.preventDefault();break;case e.ENTER:case e.NUMPAD_ENTER:if(a.menu.active){f=true;c.preventDefault()}case e.TAB:if(!a.menu.active)return;a.menu.select(c);break;case e.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem= +null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(f){f=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=d("
        ").addClass("ui-autocomplete").appendTo(d(this.options.appendTo|| +"body",b)[0]).mousedown(function(c){var e=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(g){g.target!==a.element[0]&&g.target!==e&&!d.ui.contains(e,g.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,e){e=e.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:e})&&/^key/.test(c.originalEvent.type)&&a.element.val(e.value)},selected:function(c,e){var g=e.item.data("item.autocomplete"), +h=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=h;setTimeout(function(){a.previous=h;a.selectedItem=g},1)}false!==a._trigger("select",c,{item:g})&&a.element.val(g.value);a.term=a.element.val();a.close(c);a.selectedItem=g},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); +this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&&b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,f;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,e){e(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source=== +"string"){f=this.options.source;this.source=function(c,e){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:f,data:c,dataType:"json",success:function(g,h,i){i===a.xhr&&e(g);a.xhr=null},error:function(g){g===a.xhr&&e([]);a.xhr=null}})}}else this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length").data("item.autocomplete",b).append(d("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b); +else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,b){var f=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return f.test(c.label||c.value||c)})}})})(jQuery); +(function(d){d.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(b){if(d(b.target).closest(".ui-menu-item a").length){b.preventDefault();a.select(b)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(b){a.activate(b,d(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var f=b.offset().top-this.element.offset().top,c=this.element.attr("scrollTop"),e=this.element.height();if(f<0)this.element.attr("scrollTop",c+f);else f>=e&&this.element.attr("scrollTop",c+f-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:b})}, +deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,f){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0); +a.length?this.activate(f,a):this.activate(f,this.element.children(b))}else this.activate(f,this.element.children(b))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var b=this.active.offset().top,f=this.element.height(),c=this.element.children(".ui-menu-item").filter(function(){var e=d(this).offset().top-b-f+d(this).height();return e<10&&e>-10});c.length||(c=this.element.children(".ui-menu-item:last"));this.activate(a, +c)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(".ui-menu-item:last"));else{var b=this.active.offset().top,f=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-b+f-d(this).height();return c<10&&c>-10});result.length||(result=this.element.children(".ui-menu-item:first")); +this.activate(a,result)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c,j){var k={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},l={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&& +c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
        ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex", +-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
        ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role", +"button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose= +b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&& +a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0]){e=c(this).css("z-index"); +isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ); +d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===f[0]&&e.shiftKey){g.focus(1);return false}}}); +c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
        ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
        ").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(f, +h){h=c.isFunction(h)?{click:h,text:f}:h;f=c('').attr(h,true).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&f.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g= +d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize, +position:f.position,size:f.size}}a=a===j?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f, +h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length=== +1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);if(g in k)e=true;if(g in +l)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled"); +break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=this.options,b,d,e= +this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-b,0));this.uiDialog.is(":data(resizable)")&& +this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.8",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length=== +0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); +b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a");if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}else this.range=d("
        ");this.range.appendTo(this.element).addClass("ui-slider-range");if(a.range==="min"||a.range==="max")this.range.addClass("ui-slider-range-"+a.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("").appendTo(this.element).addClass("ui-slider-handle"); +if(a.values&&a.values.length)for(;d(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur(); +else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!b.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e= +false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");h=b._start(c,f);if(h===false)return}break}i=b.options.step;h=b.options.values&&b.options.values.length?(g=b.values(f)):(g=b.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=b._valueMin();break;case d.ui.keyCode.END:g=b._valueMax();break;case d.ui.keyCode.PAGE_UP:g=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h=== +b._valueMax())return;g=b._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===b._valueMin())return;g=b._trimAlignValue(h-i);break}b._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(c,e);b._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"); +this._mouseDestroy();return this},_mouseCapture:function(b){var a=this.options,c,e,f,h,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(a.range===true&&this.values(1)===a.min){g+=1;f=d(this.handles[g])}if(this._start(b, +g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();a=f.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-f.width()/2,top:b.pageY-a.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true}, +_mouseDrag:function(b){var a=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a; +if(this.orientation==="horizontal"){a=this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value= +this.values(a);c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var e;if(this.options.values&&this.options.values.length){e=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>e||a===1&&c1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max}, +_refreshValue:function(){var b=this.options.range,a=this.options,c=this,e=!this._animateOff?a.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},a.animate); +if(k===1)c.range[e?"animate":"css"]({width:f-g+"%"},{queue:false,duration:a.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},a.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:a.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1, +1)[e?"animate":"css"]({width:f+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.8"})})(jQuery); +;/* + * jQuery UI Tabs 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
        ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
      • #{label}
      • "},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= +d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| +(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ +g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", +function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; +this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= +-1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= +d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, +e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); +j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); +if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, +this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, +load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, +"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, +url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.8"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k')}function E(a,b){d.extend(a,b);for(var c in b)if(b[c]== +null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.8"}});var y=(new Date).getTime();d.extend(K.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase(); +f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('
        ')}}, +_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&& +b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f== +""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a, +c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b), +true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{}); +b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass); +this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup", +this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs, +function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null: +f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true}, +_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos= +d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b, +c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&& +d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a));var e=a.dpDiv.find("iframe.ui-datepicker-cover");e.length&&e.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout", +function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!= +-1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a, +"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus();if(a.yearshtml){var f=a.yearshtml;setTimeout(function(){f===a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);f=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]}, +_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e- +g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]? +b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, +_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"): +0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear= +false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay= +d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a); +else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b= +a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;for(var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames, +j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=z+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}w=this._daylightSavingAdjust(new Date(c,j-1,l));if(w.getFullYear()!=c||w.getMonth()+1!=j||w.getDate()!=l)throw"Invalid date";return w},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y", +RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay= +a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(), +b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n= +this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+r+"":f?"":''+r+"";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
        '+(c?h:"")+(this._isInRange(a,r)?'":"")+(c?"":h)+"
        ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z= +this._get(a,"monthNames"),w=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),v=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var L=this._getDefaultDate(a),I="",C=0;C1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]- +1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='
        '+(/all|left/.test(t)&&C==0?c?f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,C>0||D>0,z,w)+'
        ';var A=j?'":"";for(t=0;t<7;t++){var q= +(t+h)%7;A+="=5?' class="ui-datepicker-week-end"':"")+'>'+s[q]+""}x+=A+"";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O";var P=!j?"":'";for(t=0;t<7;t++){var F= +p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,J=B&&!H||!F[0]||k&&qo;P+='";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+= +P+""}g++;if(g>11){g=0;m++}x+="
        '+this._get(a,"weekHeader")+"
        '+this._get(a,"calculateWeek")(q)+""+(B&&!v?" ":J?''+q.getDate()+"":''+q.getDate()+"")+"
        "+(l?""+(i[0]>0&&D==i[1]-1?'
        ':""):"");M+=x}I+=M}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'':"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
        ', +o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&& +l)?" ":""));a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='";if(d.browser.mozilla)k+='";else{k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
        ";return k},_adjustInstDate:function(a,b,c){var e= +a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a, +"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); +c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, +"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= +function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b)); +return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new K;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.8";window["DP_jQuery_"+y]=d})(jQuery); +;/* + * jQuery UI Progressbar 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
        ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.8"})})(jQuery); +;/* + * jQuery UI Effects 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/ + */ +jQuery.effects||function(f,j){function n(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], +16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return o.transparent;return o[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return n(b)}function p(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, +a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function q(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= +a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function m(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", +"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=n(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var o={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, +0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, +211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},r=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, +d){if(f.isFunction(b)){d=b;b=null}return this.queue("fx",function(){var e=f(this),g=e.attr("style")||" ",h=q(p.call(this)),l,v=e.attr("className");f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});l=q(p.call(this));e.attr("className",v);e.animate(u(h,l),a,b,function(){f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)});h=f.queue(this);l=h.splice(h.length-1,1)[0]; +h.splice(1,0,l);f.dequeue(this)})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c, +a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.8",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent", +border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c); +return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments); +else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c), +b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c, +a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a== +e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ +e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +;/* + * jQuery UI Effects Fade 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fade + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Fold 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fold + * + * Depends: + * jquery.effects.core.js + */ +(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], +10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); +;/* + * jQuery UI Effects Highlight 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Highlight + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Pulsate 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Pulsate + * + * Depends: + * jquery.effects.core.js + */ +(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); +b.dequeue()})})}})(jQuery); +; \ No newline at end of file diff --git a/extensions/themes/bluewhite/scripts/libraries/jquery.clickmenu.js b/extensions/themes/bluewhite/scripts/libraries/jquery.clickmenu.js new file mode 100644 index 000000000..6b32b54e2 --- /dev/null +++ b/extensions/themes/bluewhite/scripts/libraries/jquery.clickmenu.js @@ -0,0 +1,515 @@ +/* clickMenu - v0.1.6 + * Copyright (c) 2007 Roman Weich + * http://p.sohei.org + * + * Changelog: + * v 0.1.6 - 2007-09-06 + * -fix: having a link in the top-level menu would not open the menu but call the link instead + * v 0.1.5 - 2007-07-07 + * -change/fix: menu opening/closing now through simple show() and hide() calls - before fadeIn and fadeOut were used for which extra functions to stop a already running animation were created -> they were + * buggy (not working with the interface plugin in jquery1.1.2 and not working with jquery1.1.3 at all) and now removed + * -change: removed option: fadeTime + * -change: now using the bgiframe plugin for adding iframes in ie6 when available + * v 0.1.4 - 2007-03-20 + * -fix: the default options were overwritten by the context related options + * -fix: hiding a submenu all hover- and click-events were unbound, even the ones not defined in this plugin - unbinding should work now + * v 0.1.3 - 2007-03-13 + * -fix: some display problems ie had when no width was set on the submenu, so on ie the width for each submenu will be explicitely set + * -fix: the fix to the ie-width-problem is a fix to the "ie does not support css min-width stuff" problem too which displayed some submenus too narrow (it looked just not right) + * -fix: some bugs, when user the was too fast with the mouse + * v 0.1.2 - 2007-03-11 + * -change: made a lot changes in the traversing routines to speed things up (having better memory usage now as well) + * -change: added $.fn.clickMenu.setDefaults() for setting global defaults + * -fix: hoverbug when a main menu item had no submenu + * -fix: some bugs i found while rewriting most of the stuff + * v 0.1.1 - 2007-03-04 + * -change: the width of the submenus is no longer fixed, its set in the plugin now + * -change: the submenu-arrow is now an img, not the background-img of the list element - that allows better positioning, and background-changes on hover (you have to set the image through the arrowSrc option) + * -fix: clicking on a clickMenu while another was already open, didn't close the open one + * -change: clicking on the open main menu item will close it + * -fix: on an open menu moving the mouse to a main menu item and moving it fastly elsewere hid the whole menu + * v 0.1.0 - 2007-03-03 + */ + +(function($) +{ + var defaults = { + onClick: function(){ + $(this).find('>a').each(function(){ + if ( this.href ) + { + window.location = this.href; + } + }); + }, + arrowSrc: '', + subDelay: 300, + mainDelay: 10 + }; + + $.fn.clickMenu = function(options) + { + var shown = false; + var liOffset = ( ($.browser.msie) ? 4 : 2 ); + + var settings = $.extend({}, defaults, options); + + var hideDIV = function(div, delay) + { + //a timer running to show the div? + if ( div.timer && !div.isVisible ) + { + clearTimeout(div.timer); + } + else if (div.timer) + { + return; //hide-timer already running + } + if ( div.isVisible ) + { + div.timer = setTimeout(function() + { + //remove events + $(getAllChilds(getOneChild(div, 'UL'), 'LI')).unbind('mouseover', liHoverIn).unbind('mouseout', liHoverOut).unbind('click', settings.onClick); + //hide it + $(div).hide(); + div.isVisible = false; + div.timer = null; + }, delay); + } + }; + + var showDIV = function(div, delay) + { + if ( div.timer ) + { + clearTimeout(div.timer); + } + if ( !div.isVisible ) + { + div.timer = setTimeout(function() + { + //check if the mouse is still over the parent item - if not dont show the submenu + if ( !checkClass(div.parentNode, 'hover') ) + { + return; + } + //assign events to all div>ul>li-elements + $(getAllChilds(getOneChild(div, 'UL'), 'LI')).mouseover(liHoverIn).mouseout(liHoverOut).click(settings.onClick); + //positioning + if ( !checkClass(div.parentNode, 'main') ) + { + $(div).css('left', div.parentNode.offsetWidth - liOffset); + } + //show it + div.isVisible = true; //we use this over :visible to speed up traversing + $(div).show(); + if ( $.browser.msie ) //fixing a display-bug in ie6 and adding min-width + { + var cW = $(getOneChild(div, 'UL')).width(); + if ( cW < 100 ) + { + cW = 100; + } + $(div).css('width', cW); + } + div.timer = null; + }, delay); + } + }; + + //same as hover.handlehover in jquery - just can't use hover() directly - need the ability to unbind only the one hover event + var testHandleHover = function(e) + { + // Check if mouse(over|out) are still within the same parent element + var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget; + // Traverse up the tree + while ( p && p != this ) + { + try + { + p = p.parentNode; + } + catch(e) + { + p = this; + } + } + // If we actually just moused on to a sub-element, ignore it + if ( p == this ) + { + return false; + } + return true; + }; + + var mainHoverIn = function(e) + { + //no need to test e.target==this, as no child has the same event binded + //its possible, that a main menu item still has hover (if it has no submenu) - thus remove it + var lis = getAllChilds(this.parentNode, 'LI'); + var pattern = new RegExp("(^|\\s)hover(\\s|$)"); + for (var i = 0; i < lis.length; i++) + { + if ( pattern.test(lis[i].className) ) + { + $(lis[i]).removeClass('hover'); + } + } + $(this).addClass('hover'); + if ( shown ) + { + hoverIn(this, settings.mainDelay); + } + }; + + var liHoverIn = function(e) + { + if ( !testHandleHover(e) ) + { + return false; + } + if ( e.target != this ) + { + //look whether the target is a direct child of this (maybe an image) + if ( !isChild(this, e.target) ) + { + return; + } + } + hoverIn(this, settings.subDelay); + }; + + var hoverIn = function(li, delay) + { + var innerDiv = getOneChild(li, 'DIV'); + //stop running timers from the other menus on the same level - a little faster than $('>*>div', li.parentNode) + var n = li.parentNode.firstChild; + for ( ; n; n = n.nextSibling ) + { + if ( n.nodeType == 1 && n.nodeName.toUpperCase() == 'LI' ) + { + var div = getOneChild(n, 'DIV'); + if ( div && div.timer && !div.isVisible ) //clear show-div timer + { + clearTimeout(div.timer); + div.timer = null; + } + } + } + //is there a timer running to hide one of the parent divs? stop it + var pNode = li.parentNode; + for ( ; pNode; pNode = pNode.parentNode ) + { + if ( pNode.nodeType == 1 && pNode.nodeName.toUpperCase() == 'DIV' ) + { + if (pNode.timer) + { + clearTimeout(pNode.timer); + pNode.timer = null; + $(pNode.parentNode).addClass('hover'); + } + } + } + //highlight the current element + $(li).addClass('hover'); + //is the submenu already visible? + if ( innerDiv && innerDiv.isVisible ) + { + //hide-timer running? + if ( innerDiv.timer ) + { + clearTimeout(innerDiv.timer); + innerDiv.timer = null; + } + else + { + return; + } + } + //hide all open menus on the same level and below and unhighlight the li item (but not the current submenu!) + $(li.parentNode.getElementsByTagName('DIV')).each(function(){ + if ( this != innerDiv && this.isVisible ) + { + hideDIV(this, delay); + $(this.parentNode).removeClass('hover'); + } + }); + //show the submenu, if there is one + if ( innerDiv ) + { + showDIV(innerDiv, delay); + } + }; + + var liHoverOut = function(e) + { + if ( !testHandleHover(e) ) + { + return false; + } + if ( e.target != this ) + { + if ( !isChild(this, e.target) ) //return only if the target is no direct child of this + { + return; + } + } + //remove the hover from the submenu item, if the mouse is hovering out of the menu (this is only for the last open (levelwise) (sub-)menu) + var div = getOneChild(this, 'DIV'); + if ( !div ) + { + $(this).removeClass('hover'); + } + else + { + if ( !div.isVisible ) + { + $(this).removeClass('hover'); + } + } + }; + + var mainHoverOut = function(e) + { + //no need to test e.target==this, as no child has the same event binded + //remove hover + var div = getOneChild(this, 'DIV'); + var relTarget = e.relatedTarget || e.toElement; //this is undefined sometimes (e.g. when the mouse moves out of the window), so dont remove hover then + var p; + if ( !shown ) + { + $(this).removeClass('hover'); + } + else if ( !div && relTarget ) //menuitem has no submenu, so dont remove the hover if the mouse goes outside the menu + { + p = findParentWithClass(e.target, 'UL', 'clickMenu'); + if ( p.contains(relTarget)) + { + $(this).removeClass('hover'); + } + } + else if ( relTarget ) + { + //remove hover only when moving to anywhere inside the clickmenu + p = findParentWithClass(e.target, 'UL', 'clickMenu'); + if ( !div.isVisible && (p.contains(relTarget)) ) + { + $(this).removeClass('hover'); + } + } + }; + + var mainClick = function() + { + var div = getOneChild(this, 'DIV'); + if ( div && div.isVisible ) //clicked on an open main-menu-item + { + clean(); + $(this).addClass('hover'); + } + else + { + hoverIn(this, settings.mainDelay); + shown = true; + $(document).bind('mousedown', checkMouse); + } + return false; + }; + + var checkMouse = function(e) + { + //is the mouse inside a clickmenu? if yes, is it an open (the current) one? + var vis = false; + var cm = findParentWithClass(e.target, 'UL', 'clickMenu'); + if ( cm ) + { + $(cm.getElementsByTagName('DIV')).each(function(){ + if ( this.isVisible ) + { + vis = true; + } + }); + } + if ( !vis ) + { + clean(); + } + }; + + var clean = function() + { + //remove timeout and hide the divs + $('ul.clickMenu div.outerbox').each(function(){ + if ( this.timer ) + { + clearTimeout(this.timer); + this.timer = null; + } + if ( this.isVisible ) + { + $(this).hide(); + this.isVisible = false; + } + }); + $('ul.clickMenu li').removeClass('hover'); + //remove events + $('ul.clickMenu>li li').unbind('mouseover', liHoverIn).unbind('mouseout', liHoverOut).unbind('click', settings.onClick); + $(document).unbind('mousedown', checkMouse); + shown = false; + }; + + var getOneChild = function(elem, name) + { + if ( !elem ) + { + return null; + } + var n = elem.firstChild; + for ( ; n; n = n.nextSibling ) + { + if ( n.nodeType == 1 && n.nodeName.toUpperCase() == name ) + { + return n; + } + } + return null; + }; + + var getAllChilds = function(elem, name) + { + if ( !elem ) + { + return []; + } + var r = []; + var n = elem.firstChild; + for ( ; n; n = n.nextSibling ) + { + if ( n.nodeType == 1 && n.nodeName.toUpperCase() == name ) + { + r[r.length] = n; + } + } + return r; + }; + + var findParentWithClass = function(elem, searchTag, searchClass) + { + var pNode = elem.parentNode; + var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)"); + for ( ; pNode; pNode = pNode.parentNode ) + { + if ( pNode.nodeType == 1 && pNode.nodeName.toUpperCase() == searchTag && pattern.test(pNode.className) ) + { + return pNode; + } + } + return null; + }; + + var checkClass = function(elem, searchClass) + { + var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)"); + if ( pattern.test(elem.className) ) + { + return true; + } + return false; + }; + + var isChild = function(elem, childElem) + { + var n = elem.firstChild; + for ( ; n; n = n.nextSibling ) + { + if ( n == childElem ) + { + return true; + } + } + return false; + }; + + return this.each(function() + { + //add .contains() to mozilla - http://www.quirksmode.org/blog/archives/2006/01/contains_for_mo.html + if (window.Node && Node.prototype && !Node.prototype.contains) + { + Node.prototype.contains = function(arg) + { + return !!(this.compareDocumentPosition(arg) & 16); + }; + } + //add class + if ( !checkClass(this, 'clickMenu') ) + { + $(this).addClass('clickMenu'); + } + //add shadows + $('ul', this).shadowBox(); + //ie6? - add iframes + if ( $.browser.msie && (!$.browser.version || parseInt($.browser.version) <= 6) ) + { + if ( $.fn.bgiframe ) + { + $('div.outerbox', this).bgiframe(); + } + else + { + /* thanks to Mark Gibson - http://www.nabble.com/forum/ViewPost.jtp?post=6504414&framed=y */ + $('div.outerbox', this).append('':"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
        ', -o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&& -l)?" ":""));a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='";if(d.browser.mozilla)k+='";else{k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
        ";return k},_adjustInstDate:function(a,b,c){var e= -a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a, -"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); -c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, -"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= -function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b)); -return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new K;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.8";window["DP_jQuery_"+y]=d})(jQuery); -;/* - * jQuery UI Progressbar 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
        ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); -this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* -this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.8"})})(jQuery); -;/* - * jQuery UI Effects 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/ - */ -jQuery.effects||function(f,j){function n(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], -16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return o.transparent;return o[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return n(b)}function p(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, -a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function q(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= -a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function m(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", -"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=n(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var o={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, -0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, -211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},r=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, -d){if(f.isFunction(b)){d=b;b=null}return this.queue("fx",function(){var e=f(this),g=e.attr("style")||" ",h=q(p.call(this)),l,v=e.attr("className");f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});l=q(p.call(this));e.attr("className",v);e.animate(u(h,l),a,b,function(){f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)});h=f.queue(this);l=h.splice(h.length-1,1)[0]; -h.splice(1,0,l);f.dequeue(this)})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c, -a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.8",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent", -border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c); -return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments); -else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c), -b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c, -a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c, -a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a== -e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ -e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); -;/* - * jQuery UI Effects Fade 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fade - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Fold 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fold - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], -10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); -;/* - * jQuery UI Effects Highlight 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Highlight - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& -this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Pulsate 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Pulsate - * - * Depends: - * jquery.effects.core.js - */ -(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); -b.dequeue()})})}})(jQuery); -; \ No newline at end of file diff --git a/extensions/themes/bluewhite/scripts/libraries/jquery.clickmenu.js b/extensions/themes/bluewhite/scripts/libraries/jquery.clickmenu.js deleted file mode 100644 index 6b32b54e2..000000000 --- a/extensions/themes/bluewhite/scripts/libraries/jquery.clickmenu.js +++ /dev/null @@ -1,515 +0,0 @@ -/* clickMenu - v0.1.6 - * Copyright (c) 2007 Roman Weich - * http://p.sohei.org - * - * Changelog: - * v 0.1.6 - 2007-09-06 - * -fix: having a link in the top-level menu would not open the menu but call the link instead - * v 0.1.5 - 2007-07-07 - * -change/fix: menu opening/closing now through simple show() and hide() calls - before fadeIn and fadeOut were used for which extra functions to stop a already running animation were created -> they were - * buggy (not working with the interface plugin in jquery1.1.2 and not working with jquery1.1.3 at all) and now removed - * -change: removed option: fadeTime - * -change: now using the bgiframe plugin for adding iframes in ie6 when available - * v 0.1.4 - 2007-03-20 - * -fix: the default options were overwritten by the context related options - * -fix: hiding a submenu all hover- and click-events were unbound, even the ones not defined in this plugin - unbinding should work now - * v 0.1.3 - 2007-03-13 - * -fix: some display problems ie had when no width was set on the submenu, so on ie the width for each submenu will be explicitely set - * -fix: the fix to the ie-width-problem is a fix to the "ie does not support css min-width stuff" problem too which displayed some submenus too narrow (it looked just not right) - * -fix: some bugs, when user the was too fast with the mouse - * v 0.1.2 - 2007-03-11 - * -change: made a lot changes in the traversing routines to speed things up (having better memory usage now as well) - * -change: added $.fn.clickMenu.setDefaults() for setting global defaults - * -fix: hoverbug when a main menu item had no submenu - * -fix: some bugs i found while rewriting most of the stuff - * v 0.1.1 - 2007-03-04 - * -change: the width of the submenus is no longer fixed, its set in the plugin now - * -change: the submenu-arrow is now an img, not the background-img of the list element - that allows better positioning, and background-changes on hover (you have to set the image through the arrowSrc option) - * -fix: clicking on a clickMenu while another was already open, didn't close the open one - * -change: clicking on the open main menu item will close it - * -fix: on an open menu moving the mouse to a main menu item and moving it fastly elsewere hid the whole menu - * v 0.1.0 - 2007-03-03 - */ - -(function($) -{ - var defaults = { - onClick: function(){ - $(this).find('>a').each(function(){ - if ( this.href ) - { - window.location = this.href; - } - }); - }, - arrowSrc: '', - subDelay: 300, - mainDelay: 10 - }; - - $.fn.clickMenu = function(options) - { - var shown = false; - var liOffset = ( ($.browser.msie) ? 4 : 2 ); - - var settings = $.extend({}, defaults, options); - - var hideDIV = function(div, delay) - { - //a timer running to show the div? - if ( div.timer && !div.isVisible ) - { - clearTimeout(div.timer); - } - else if (div.timer) - { - return; //hide-timer already running - } - if ( div.isVisible ) - { - div.timer = setTimeout(function() - { - //remove events - $(getAllChilds(getOneChild(div, 'UL'), 'LI')).unbind('mouseover', liHoverIn).unbind('mouseout', liHoverOut).unbind('click', settings.onClick); - //hide it - $(div).hide(); - div.isVisible = false; - div.timer = null; - }, delay); - } - }; - - var showDIV = function(div, delay) - { - if ( div.timer ) - { - clearTimeout(div.timer); - } - if ( !div.isVisible ) - { - div.timer = setTimeout(function() - { - //check if the mouse is still over the parent item - if not dont show the submenu - if ( !checkClass(div.parentNode, 'hover') ) - { - return; - } - //assign events to all div>ul>li-elements - $(getAllChilds(getOneChild(div, 'UL'), 'LI')).mouseover(liHoverIn).mouseout(liHoverOut).click(settings.onClick); - //positioning - if ( !checkClass(div.parentNode, 'main') ) - { - $(div).css('left', div.parentNode.offsetWidth - liOffset); - } - //show it - div.isVisible = true; //we use this over :visible to speed up traversing - $(div).show(); - if ( $.browser.msie ) //fixing a display-bug in ie6 and adding min-width - { - var cW = $(getOneChild(div, 'UL')).width(); - if ( cW < 100 ) - { - cW = 100; - } - $(div).css('width', cW); - } - div.timer = null; - }, delay); - } - }; - - //same as hover.handlehover in jquery - just can't use hover() directly - need the ability to unbind only the one hover event - var testHandleHover = function(e) - { - // Check if mouse(over|out) are still within the same parent element - var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget; - // Traverse up the tree - while ( p && p != this ) - { - try - { - p = p.parentNode; - } - catch(e) - { - p = this; - } - } - // If we actually just moused on to a sub-element, ignore it - if ( p == this ) - { - return false; - } - return true; - }; - - var mainHoverIn = function(e) - { - //no need to test e.target==this, as no child has the same event binded - //its possible, that a main menu item still has hover (if it has no submenu) - thus remove it - var lis = getAllChilds(this.parentNode, 'LI'); - var pattern = new RegExp("(^|\\s)hover(\\s|$)"); - for (var i = 0; i < lis.length; i++) - { - if ( pattern.test(lis[i].className) ) - { - $(lis[i]).removeClass('hover'); - } - } - $(this).addClass('hover'); - if ( shown ) - { - hoverIn(this, settings.mainDelay); - } - }; - - var liHoverIn = function(e) - { - if ( !testHandleHover(e) ) - { - return false; - } - if ( e.target != this ) - { - //look whether the target is a direct child of this (maybe an image) - if ( !isChild(this, e.target) ) - { - return; - } - } - hoverIn(this, settings.subDelay); - }; - - var hoverIn = function(li, delay) - { - var innerDiv = getOneChild(li, 'DIV'); - //stop running timers from the other menus on the same level - a little faster than $('>*>div', li.parentNode) - var n = li.parentNode.firstChild; - for ( ; n; n = n.nextSibling ) - { - if ( n.nodeType == 1 && n.nodeName.toUpperCase() == 'LI' ) - { - var div = getOneChild(n, 'DIV'); - if ( div && div.timer && !div.isVisible ) //clear show-div timer - { - clearTimeout(div.timer); - div.timer = null; - } - } - } - //is there a timer running to hide one of the parent divs? stop it - var pNode = li.parentNode; - for ( ; pNode; pNode = pNode.parentNode ) - { - if ( pNode.nodeType == 1 && pNode.nodeName.toUpperCase() == 'DIV' ) - { - if (pNode.timer) - { - clearTimeout(pNode.timer); - pNode.timer = null; - $(pNode.parentNode).addClass('hover'); - } - } - } - //highlight the current element - $(li).addClass('hover'); - //is the submenu already visible? - if ( innerDiv && innerDiv.isVisible ) - { - //hide-timer running? - if ( innerDiv.timer ) - { - clearTimeout(innerDiv.timer); - innerDiv.timer = null; - } - else - { - return; - } - } - //hide all open menus on the same level and below and unhighlight the li item (but not the current submenu!) - $(li.parentNode.getElementsByTagName('DIV')).each(function(){ - if ( this != innerDiv && this.isVisible ) - { - hideDIV(this, delay); - $(this.parentNode).removeClass('hover'); - } - }); - //show the submenu, if there is one - if ( innerDiv ) - { - showDIV(innerDiv, delay); - } - }; - - var liHoverOut = function(e) - { - if ( !testHandleHover(e) ) - { - return false; - } - if ( e.target != this ) - { - if ( !isChild(this, e.target) ) //return only if the target is no direct child of this - { - return; - } - } - //remove the hover from the submenu item, if the mouse is hovering out of the menu (this is only for the last open (levelwise) (sub-)menu) - var div = getOneChild(this, 'DIV'); - if ( !div ) - { - $(this).removeClass('hover'); - } - else - { - if ( !div.isVisible ) - { - $(this).removeClass('hover'); - } - } - }; - - var mainHoverOut = function(e) - { - //no need to test e.target==this, as no child has the same event binded - //remove hover - var div = getOneChild(this, 'DIV'); - var relTarget = e.relatedTarget || e.toElement; //this is undefined sometimes (e.g. when the mouse moves out of the window), so dont remove hover then - var p; - if ( !shown ) - { - $(this).removeClass('hover'); - } - else if ( !div && relTarget ) //menuitem has no submenu, so dont remove the hover if the mouse goes outside the menu - { - p = findParentWithClass(e.target, 'UL', 'clickMenu'); - if ( p.contains(relTarget)) - { - $(this).removeClass('hover'); - } - } - else if ( relTarget ) - { - //remove hover only when moving to anywhere inside the clickmenu - p = findParentWithClass(e.target, 'UL', 'clickMenu'); - if ( !div.isVisible && (p.contains(relTarget)) ) - { - $(this).removeClass('hover'); - } - } - }; - - var mainClick = function() - { - var div = getOneChild(this, 'DIV'); - if ( div && div.isVisible ) //clicked on an open main-menu-item - { - clean(); - $(this).addClass('hover'); - } - else - { - hoverIn(this, settings.mainDelay); - shown = true; - $(document).bind('mousedown', checkMouse); - } - return false; - }; - - var checkMouse = function(e) - { - //is the mouse inside a clickmenu? if yes, is it an open (the current) one? - var vis = false; - var cm = findParentWithClass(e.target, 'UL', 'clickMenu'); - if ( cm ) - { - $(cm.getElementsByTagName('DIV')).each(function(){ - if ( this.isVisible ) - { - vis = true; - } - }); - } - if ( !vis ) - { - clean(); - } - }; - - var clean = function() - { - //remove timeout and hide the divs - $('ul.clickMenu div.outerbox').each(function(){ - if ( this.timer ) - { - clearTimeout(this.timer); - this.timer = null; - } - if ( this.isVisible ) - { - $(this).hide(); - this.isVisible = false; - } - }); - $('ul.clickMenu li').removeClass('hover'); - //remove events - $('ul.clickMenu>li li').unbind('mouseover', liHoverIn).unbind('mouseout', liHoverOut).unbind('click', settings.onClick); - $(document).unbind('mousedown', checkMouse); - shown = false; - }; - - var getOneChild = function(elem, name) - { - if ( !elem ) - { - return null; - } - var n = elem.firstChild; - for ( ; n; n = n.nextSibling ) - { - if ( n.nodeType == 1 && n.nodeName.toUpperCase() == name ) - { - return n; - } - } - return null; - }; - - var getAllChilds = function(elem, name) - { - if ( !elem ) - { - return []; - } - var r = []; - var n = elem.firstChild; - for ( ; n; n = n.nextSibling ) - { - if ( n.nodeType == 1 && n.nodeName.toUpperCase() == name ) - { - r[r.length] = n; - } - } - return r; - }; - - var findParentWithClass = function(elem, searchTag, searchClass) - { - var pNode = elem.parentNode; - var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)"); - for ( ; pNode; pNode = pNode.parentNode ) - { - if ( pNode.nodeType == 1 && pNode.nodeName.toUpperCase() == searchTag && pattern.test(pNode.className) ) - { - return pNode; - } - } - return null; - }; - - var checkClass = function(elem, searchClass) - { - var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)"); - if ( pattern.test(elem.className) ) - { - return true; - } - return false; - }; - - var isChild = function(elem, childElem) - { - var n = elem.firstChild; - for ( ; n; n = n.nextSibling ) - { - if ( n == childElem ) - { - return true; - } - } - return false; - }; - - return this.each(function() - { - //add .contains() to mozilla - http://www.quirksmode.org/blog/archives/2006/01/contains_for_mo.html - if (window.Node && Node.prototype && !Node.prototype.contains) - { - Node.prototype.contains = function(arg) - { - return !!(this.compareDocumentPosition(arg) & 16); - }; - } - //add class - if ( !checkClass(this, 'clickMenu') ) - { - $(this).addClass('clickMenu'); - } - //add shadows - $('ul', this).shadowBox(); - //ie6? - add iframes - if ( $.browser.msie && (!$.browser.version || parseInt($.browser.version) <= 6) ) - { - if ( $.fn.bgiframe ) - { - $('div.outerbox', this).bgiframe(); - } - else - { - /* thanks to Mark Gibson - http://www.nabble.com/forum/ViewPost.jtp?post=6504414&framed=y */ - $('div.outerbox', this).append('' : ''); + inst._keyEvent = false; + return html; + }, + + /* Generate the month and year header. */ + _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, + secondary, monthNames, monthNamesShort) { + var changeMonth = this._get(inst, 'changeMonth'); + var changeYear = this._get(inst, 'changeYear'); + var showMonthAfterYear = this._get(inst, 'showMonthAfterYear'); + var html = '
        '; + var monthHtml = ''; + // month selection + if (secondary || !changeMonth) + monthHtml += '' + monthNames[drawMonth] + ''; + else { + var inMinYear = (minDate && minDate.getFullYear() == drawYear); + var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear); + monthHtml += ''; + } + if (!showMonthAfterYear) + html += monthHtml + (secondary || !(changeMonth && changeYear) ? ' ' : ''); + // year selection + if ( !inst.yearshtml ) { + inst.yearshtml = ''; + if (secondary || !changeYear) + html += '' + drawYear + ''; + else { + // determine range of years to display + var years = this._get(inst, 'yearRange').split(':'); + var thisYear = new Date().getFullYear(); + var determineYear = function(value) { + var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) : + (value.match(/[+-].*/) ? thisYear + parseInt(value, 10) : + parseInt(value, 10))); + return (isNaN(year) ? thisYear : year); + }; + var year = determineYear(years[0]); + var endYear = Math.max(year, determineYear(years[1] || '')); + year = (minDate ? Math.max(year, minDate.getFullYear()) : year); + endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); + inst.yearshtml += ''; + + html += inst.yearshtml; + inst.yearshtml = null; + } + } + html += this._get(inst, 'yearSuffix'); + if (showMonthAfterYear) + html += (secondary || !(changeMonth && changeYear) ? ' ' : '') + monthHtml; + html += '
        '; // Close datepicker_header + return html; + }, + + /* Adjust one of the date sub-fields. */ + _adjustInstDate: function(inst, offset, period) { + var year = inst.drawYear + (period == 'Y' ? offset : 0); + var month = inst.drawMonth + (period == 'M' ? offset : 0); + var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + + (period == 'D' ? offset : 0); + var date = this._restrictMinMax(inst, + this._daylightSavingAdjust(new Date(year, month, day))); + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + if (period == 'M' || period == 'Y') + this._notifyChange(inst); + }, + + /* Ensure a date is within any min/max bounds. */ + _restrictMinMax: function(inst, date) { + var minDate = this._getMinMaxDate(inst, 'min'); + var maxDate = this._getMinMaxDate(inst, 'max'); + var newDate = (minDate && date < minDate ? minDate : date); + newDate = (maxDate && newDate > maxDate ? maxDate : newDate); + return newDate; + }, + + /* Notify change of month/year. */ + _notifyChange: function(inst) { + var onChange = this._get(inst, 'onChangeMonthYear'); + if (onChange) + onChange.apply((inst.input ? inst.input[0] : null), + [inst.selectedYear, inst.selectedMonth + 1, inst]); + }, + + /* Determine the number of months to show. */ + _getNumberOfMonths: function(inst) { + var numMonths = this._get(inst, 'numberOfMonths'); + return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths)); + }, + + /* Determine the current maximum date - ensure no time components are set. */ + _getMinMaxDate: function(inst, minMax) { + return this._determineDate(inst, this._get(inst, minMax + 'Date'), null); + }, + + /* Find the number of days in a given month. */ + _getDaysInMonth: function(year, month) { + return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate(); + }, + + /* Find the day of the week of the first of a month. */ + _getFirstDayOfMonth: function(year, month) { + return new Date(year, month, 1).getDay(); + }, + + /* Determines if we should allow a "next/prev" month display change. */ + _canAdjustMonth: function(inst, offset, curYear, curMonth) { + var numMonths = this._getNumberOfMonths(inst); + var date = this._daylightSavingAdjust(new Date(curYear, + curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); + if (offset < 0) + date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); + return this._isInRange(inst, date); + }, + + /* Is the given date in the accepted range? */ + _isInRange: function(inst, date) { + var minDate = this._getMinMaxDate(inst, 'min'); + var maxDate = this._getMinMaxDate(inst, 'max'); + return ((!minDate || date.getTime() >= minDate.getTime()) && + (!maxDate || date.getTime() <= maxDate.getTime())); + }, + + /* Provide the configuration settings for formatting/parsing. */ + _getFormatConfig: function(inst) { + var shortYearCutoff = this._get(inst, 'shortYearCutoff'); + shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : + new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); + return {shortYearCutoff: shortYearCutoff, + dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'), + monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')}; + }, + + /* Format the given date for display. */ + _formatDate: function(inst, day, month, year) { + if (!day) { + inst.currentDay = inst.selectedDay; + inst.currentMonth = inst.selectedMonth; + inst.currentYear = inst.selectedYear; + } + var date = (day ? (typeof day == 'object' ? day : + this._daylightSavingAdjust(new Date(year, month, day))) : + this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); + return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst)); + } +}); + +/* + * Bind hover events for datepicker elements. + * Done via delegate so the binding only occurs once in the lifetime of the parent div. + * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. + */ +function bindHover(dpDiv) { + var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a'; + return dpDiv.bind('mouseout', function(event) { + var elem = $( event.target ).closest( selector ); + if ( !elem.length ) { + return; + } + elem.removeClass( "ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover" ); + }) + .bind('mouseover', function(event) { + var elem = $( event.target ).closest( selector ); + if ($.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0]) || + !elem.length ) { + return; + } + elem.parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover'); + elem.addClass('ui-state-hover'); + if (elem.hasClass('ui-datepicker-prev')) elem.addClass('ui-datepicker-prev-hover'); + if (elem.hasClass('ui-datepicker-next')) elem.addClass('ui-datepicker-next-hover'); + }); +} + +/* jQuery extend now ignores nulls! */ +function extendRemove(target, props) { + $.extend(target, props); + for (var name in props) + if (props[name] == null || props[name] == undefined) + target[name] = props[name]; + return target; +}; + +/* Determine whether an object is an array. */ +function isArray(a) { + return (a && (($.browser.safari && typeof a == 'object' && a.length) || + (a.constructor && a.constructor.toString().match(/\Array\(\)/)))); +}; + +/* Invoke the datepicker functionality. + @param options string - a command, optionally followed by additional parameters or + Object - settings for attaching new datepicker functionality + @return jQuery object */ +$.fn.datepicker = function(options){ + + /* Verify an empty collection wasn't passed - Fixes #6976 */ + if ( !this.length ) { + return this; + } + + /* Initialise the date picker. */ + if (!$.datepicker.initialized) { + $(document).mousedown($.datepicker._checkExternalClick). + find('body').append($.datepicker.dpDiv); + $.datepicker.initialized = true; + } + + var otherArgs = Array.prototype.slice.call(arguments, 1); + if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget')) + return $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this[0]].concat(otherArgs)); + if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string') + return $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this[0]].concat(otherArgs)); + return this.each(function() { + typeof options == 'string' ? + $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this].concat(otherArgs)) : + $.datepicker._attachDatepicker(this, options); + }); +}; + +$.datepicker = new Datepicker(); // singleton instance +$.datepicker.initialized = false; +$.datepicker.uuid = new Date().getTime(); +$.datepicker.version = "1.8.22"; + +// Workaround for #4055 +// Add another global to avoid noConflict issues with inline event handlers +window['DP_jQuery_' + dpuuid] = $; + +})(jQuery); + +(function( $, undefined ) { + +var uiDialogClasses = + 'ui-dialog ' + + 'ui-widget ' + + 'ui-widget-content ' + + 'ui-corner-all ', + sizeRelatedOptions = { + buttons: true, + height: true, + maxHeight: true, + maxWidth: true, + minHeight: true, + minWidth: true, + width: true + }, + resizableRelatedOptions = { + maxHeight: true, + maxWidth: true, + minHeight: true, + minWidth: true + }, + // support for jQuery 1.3.2 - handle common attrFn methods for dialog + attrFn = $.attrFn || { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true, + click: true + }; + +$.widget("ui.dialog", { + options: { + autoOpen: true, + buttons: {}, + closeOnEscape: true, + closeText: 'close', + dialogClass: '', + draggable: true, + hide: null, + height: 'auto', + maxHeight: false, + maxWidth: false, + minHeight: 150, + minWidth: 150, + modal: false, + position: { + my: 'center', + at: 'center', + collision: 'fit', + // ensure that the titlebar is never outside the document + using: function(pos) { + var topOffset = $(this).css(pos).offset().top; + if (topOffset < 0) { + $(this).css('top', pos.top - topOffset); + } + } + }, + resizable: true, + show: null, + stack: true, + title: '', + width: 300, + zIndex: 1000 + }, + + _create: function() { + this.originalTitle = this.element.attr('title'); + // #5742 - .attr() might return a DOMElement + if ( typeof this.originalTitle !== "string" ) { + this.originalTitle = ""; + } + + this.options.title = this.options.title || this.originalTitle; + var self = this, + options = self.options, + + title = options.title || ' ', + titleId = $.ui.dialog.getTitleId(self.element), + + uiDialog = (self.uiDialog = $('
        ')) + .appendTo(document.body) + .hide() + .addClass(uiDialogClasses + options.dialogClass) + .css({ + zIndex: options.zIndex + }) + // setting tabIndex makes the div focusable + // setting outline to 0 prevents a border on focus in Mozilla + .attr('tabIndex', -1).css('outline', 0).keydown(function(event) { + if (options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && + event.keyCode === $.ui.keyCode.ESCAPE) { + + self.close(event); + event.preventDefault(); + } + }) + .attr({ + role: 'dialog', + 'aria-labelledby': titleId + }) + .mousedown(function(event) { + self.moveToTop(false, event); + }), + + uiDialogContent = self.element + .show() + .removeAttr('title') + .addClass( + 'ui-dialog-content ' + + 'ui-widget-content') + .appendTo(uiDialog), + + uiDialogTitlebar = (self.uiDialogTitlebar = $('
        ')) + .addClass( + 'ui-dialog-titlebar ' + + 'ui-widget-header ' + + 'ui-corner-all ' + + 'ui-helper-clearfix' + ) + .prependTo(uiDialog), + + uiDialogTitlebarClose = $('') + .addClass( + 'ui-dialog-titlebar-close ' + + 'ui-corner-all' + ) + .attr('role', 'button') + .hover( + function() { + uiDialogTitlebarClose.addClass('ui-state-hover'); + }, + function() { + uiDialogTitlebarClose.removeClass('ui-state-hover'); + } + ) + .focus(function() { + uiDialogTitlebarClose.addClass('ui-state-focus'); + }) + .blur(function() { + uiDialogTitlebarClose.removeClass('ui-state-focus'); + }) + .click(function(event) { + self.close(event); + return false; + }) + .appendTo(uiDialogTitlebar), + + uiDialogTitlebarCloseText = (self.uiDialogTitlebarCloseText = $('')) + .addClass( + 'ui-icon ' + + 'ui-icon-closethick' + ) + .text(options.closeText) + .appendTo(uiDialogTitlebarClose), + + uiDialogTitle = $('') + .addClass('ui-dialog-title') + .attr('id', titleId) + .html(title) + .prependTo(uiDialogTitlebar); + + //handling of deprecated beforeclose (vs beforeClose) option + //Ticket #4669 http://dev.jqueryui.com/ticket/4669 + //TODO: remove in 1.9pre + if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) { + options.beforeClose = options.beforeclose; + } + + uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection(); + + if (options.draggable && $.fn.draggable) { + self._makeDraggable(); + } + if (options.resizable && $.fn.resizable) { + self._makeResizable(); + } + + self._createButtons(options.buttons); + self._isOpen = false; + + if ($.fn.bgiframe) { + uiDialog.bgiframe(); + } + }, + + _init: function() { + if ( this.options.autoOpen ) { + this.open(); + } + }, + + destroy: function() { + var self = this; + + if (self.overlay) { + self.overlay.destroy(); + } + self.uiDialog.hide(); + self.element + .unbind('.dialog') + .removeData('dialog') + .removeClass('ui-dialog-content ui-widget-content') + .hide().appendTo('body'); + self.uiDialog.remove(); + + if (self.originalTitle) { + self.element.attr('title', self.originalTitle); + } + + return self; + }, + + widget: function() { + return this.uiDialog; + }, + + close: function(event) { + var self = this, + maxZ, thisZ; + + if (false === self._trigger('beforeClose', event)) { + return; + } + + if (self.overlay) { + self.overlay.destroy(); + } + self.uiDialog.unbind('keypress.ui-dialog'); + + self._isOpen = false; + + if (self.options.hide) { + self.uiDialog.hide(self.options.hide, function() { + self._trigger('close', event); + }); + } else { + self.uiDialog.hide(); + self._trigger('close', event); + } + + $.ui.dialog.overlay.resize(); + + // adjust the maxZ to allow other modal dialogs to continue to work (see #4309) + if (self.options.modal) { + maxZ = 0; + $('.ui-dialog').each(function() { + if (this !== self.uiDialog[0]) { + thisZ = $(this).css('z-index'); + if(!isNaN(thisZ)) { + maxZ = Math.max(maxZ, thisZ); + } + } + }); + $.ui.dialog.maxZ = maxZ; + } + + return self; + }, + + isOpen: function() { + return this._isOpen; + }, + + // the force parameter allows us to move modal dialogs to their correct + // position on open + moveToTop: function(force, event) { + var self = this, + options = self.options, + saveScroll; + + if ((options.modal && !force) || + (!options.stack && !options.modal)) { + return self._trigger('focus', event); + } + + if (options.zIndex > $.ui.dialog.maxZ) { + $.ui.dialog.maxZ = options.zIndex; + } + if (self.overlay) { + $.ui.dialog.maxZ += 1; + self.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ); + } + + //Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed. + // http://ui.jquery.com/bugs/ticket/3193 + saveScroll = { scrollTop: self.element.scrollTop(), scrollLeft: self.element.scrollLeft() }; + $.ui.dialog.maxZ += 1; + self.uiDialog.css('z-index', $.ui.dialog.maxZ); + self.element.attr(saveScroll); + self._trigger('focus', event); + + return self; + }, + + open: function() { + if (this._isOpen) { return; } + + var self = this, + options = self.options, + uiDialog = self.uiDialog; + + self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null; + self._size(); + self._position(options.position); + uiDialog.show(options.show); + self.moveToTop(true); + + // prevent tabbing out of modal dialogs + if ( options.modal ) { + uiDialog.bind( "keydown.ui-dialog", function( event ) { + if ( event.keyCode !== $.ui.keyCode.TAB ) { + return; + } + + var tabbables = $(':tabbable', this), + first = tabbables.filter(':first'), + last = tabbables.filter(':last'); + + if (event.target === last[0] && !event.shiftKey) { + first.focus(1); + return false; + } else if (event.target === first[0] && event.shiftKey) { + last.focus(1); + return false; + } + }); + } + + // set focus to the first tabbable element in the content area or the first button + // if there are no tabbable elements, set focus on the dialog itself + $(self.element.find(':tabbable').get().concat( + uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat( + uiDialog.get()))).eq(0).focus(); + + self._isOpen = true; + self._trigger('open'); + + return self; + }, + + _createButtons: function(buttons) { + var self = this, + hasButtons = false, + uiDialogButtonPane = $('
        ') + .addClass( + 'ui-dialog-buttonpane ' + + 'ui-widget-content ' + + 'ui-helper-clearfix' + ), + uiButtonSet = $( "
        " ) + .addClass( "ui-dialog-buttonset" ) + .appendTo( uiDialogButtonPane ); + + // if we already have a button pane, remove it + self.uiDialog.find('.ui-dialog-buttonpane').remove(); + + if (typeof buttons === 'object' && buttons !== null) { + $.each(buttons, function() { + return !(hasButtons = true); + }); + } + if (hasButtons) { + $.each(buttons, function(name, props) { + props = $.isFunction( props ) ? + { click: props, text: name } : + props; + var button = $('') + .click(function() { + props.click.apply(self.element[0], arguments); + }) + .appendTo(uiButtonSet); + // can't use .attr( props, true ) with jQuery 1.3.2. + $.each( props, function( key, value ) { + if ( key === "click" ) { + return; + } + if ( key in attrFn ) { + button[ key ]( value ); + } else { + button.attr( key, value ); + } + }); + if ($.fn.button) { + button.button(); + } + }); + uiDialogButtonPane.appendTo(self.uiDialog); + } + }, + + _makeDraggable: function() { + var self = this, + options = self.options, + doc = $(document), + heightBeforeDrag; + + function filteredUi(ui) { + return { + position: ui.position, + offset: ui.offset + }; + } + + self.uiDialog.draggable({ + cancel: '.ui-dialog-content, .ui-dialog-titlebar-close', + handle: '.ui-dialog-titlebar', + containment: 'document', + start: function(event, ui) { + heightBeforeDrag = options.height === "auto" ? "auto" : $(this).height(); + $(this).height($(this).height()).addClass("ui-dialog-dragging"); + self._trigger('dragStart', event, filteredUi(ui)); + }, + drag: function(event, ui) { + self._trigger('drag', event, filteredUi(ui)); + }, + stop: function(event, ui) { + options.position = [ui.position.left - doc.scrollLeft(), + ui.position.top - doc.scrollTop()]; + $(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag); + self._trigger('dragStop', event, filteredUi(ui)); + $.ui.dialog.overlay.resize(); + } + }); + }, + + _makeResizable: function(handles) { + handles = (handles === undefined ? this.options.resizable : handles); + var self = this, + options = self.options, + // .ui-resizable has position: relative defined in the stylesheet + // but dialogs have to use absolute or fixed positioning + position = self.uiDialog.css('position'), + resizeHandles = (typeof handles === 'string' ? + handles : + 'n,e,s,w,se,sw,ne,nw' + ); + + function filteredUi(ui) { + return { + originalPosition: ui.originalPosition, + originalSize: ui.originalSize, + position: ui.position, + size: ui.size + }; + } + + self.uiDialog.resizable({ + cancel: '.ui-dialog-content', + containment: 'document', + alsoResize: self.element, + maxWidth: options.maxWidth, + maxHeight: options.maxHeight, + minWidth: options.minWidth, + minHeight: self._minHeight(), + handles: resizeHandles, + start: function(event, ui) { + $(this).addClass("ui-dialog-resizing"); + self._trigger('resizeStart', event, filteredUi(ui)); + }, + resize: function(event, ui) { + self._trigger('resize', event, filteredUi(ui)); + }, + stop: function(event, ui) { + $(this).removeClass("ui-dialog-resizing"); + options.height = $(this).height(); + options.width = $(this).width(); + self._trigger('resizeStop', event, filteredUi(ui)); + $.ui.dialog.overlay.resize(); + } + }) + .css('position', position) + .find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se'); + }, + + _minHeight: function() { + var options = this.options; + + if (options.height === 'auto') { + return options.minHeight; + } else { + return Math.min(options.minHeight, options.height); + } + }, + + _position: function(position) { + var myAt = [], + offset = [0, 0], + isVisible; + + if (position) { + // deep extending converts arrays to objects in jQuery <= 1.3.2 :-( + // if (typeof position == 'string' || $.isArray(position)) { + // myAt = $.isArray(position) ? position : position.split(' '); + + if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) { + myAt = position.split ? position.split(' ') : [position[0], position[1]]; + if (myAt.length === 1) { + myAt[1] = myAt[0]; + } + + $.each(['left', 'top'], function(i, offsetPosition) { + if (+myAt[i] === myAt[i]) { + offset[i] = myAt[i]; + myAt[i] = offsetPosition; + } + }); + + position = { + my: myAt.join(" "), + at: myAt.join(" "), + offset: offset.join(" ") + }; + } + + position = $.extend({}, $.ui.dialog.prototype.options.position, position); + } else { + position = $.ui.dialog.prototype.options.position; + } + + // need to show the dialog to get the actual offset in the position plugin + isVisible = this.uiDialog.is(':visible'); + if (!isVisible) { + this.uiDialog.show(); + } + this.uiDialog + // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781 + .css({ top: 0, left: 0 }) + .position($.extend({ of: window }, position)); + if (!isVisible) { + this.uiDialog.hide(); + } + }, + + _setOptions: function( options ) { + var self = this, + resizableOptions = {}, + resize = false; + + $.each( options, function( key, value ) { + self._setOption( key, value ); + + if ( key in sizeRelatedOptions ) { + resize = true; + } + if ( key in resizableRelatedOptions ) { + resizableOptions[ key ] = value; + } + }); + + if ( resize ) { + this._size(); + } + if ( this.uiDialog.is( ":data(resizable)" ) ) { + this.uiDialog.resizable( "option", resizableOptions ); + } + }, + + _setOption: function(key, value){ + var self = this, + uiDialog = self.uiDialog; + + switch (key) { + //handling of deprecated beforeclose (vs beforeClose) option + //Ticket #4669 http://dev.jqueryui.com/ticket/4669 + //TODO: remove in 1.9pre + case "beforeclose": + key = "beforeClose"; + break; + case "buttons": + self._createButtons(value); + break; + case "closeText": + // ensure that we always pass a string + self.uiDialogTitlebarCloseText.text("" + value); + break; + case "dialogClass": + uiDialog + .removeClass(self.options.dialogClass) + .addClass(uiDialogClasses + value); + break; + case "disabled": + if (value) { + uiDialog.addClass('ui-dialog-disabled'); + } else { + uiDialog.removeClass('ui-dialog-disabled'); + } + break; + case "draggable": + var isDraggable = uiDialog.is( ":data(draggable)" ); + if ( isDraggable && !value ) { + uiDialog.draggable( "destroy" ); + } + + if ( !isDraggable && value ) { + self._makeDraggable(); + } + break; + case "position": + self._position(value); + break; + case "resizable": + // currently resizable, becoming non-resizable + var isResizable = uiDialog.is( ":data(resizable)" ); + if (isResizable && !value) { + uiDialog.resizable('destroy'); + } + + // currently resizable, changing handles + if (isResizable && typeof value === 'string') { + uiDialog.resizable('option', 'handles', value); + } + + // currently non-resizable, becoming resizable + if (!isResizable && value !== false) { + self._makeResizable(value); + } + break; + case "title": + // convert whatever was passed in o a string, for html() to not throw up + $(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || ' ')); + break; + } + + $.Widget.prototype._setOption.apply(self, arguments); + }, + + _size: function() { + /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content + * divs will both have width and height set, so we need to reset them + */ + var options = this.options, + nonContentHeight, + minContentHeight, + isVisible = this.uiDialog.is( ":visible" ); + + // reset content sizing + this.element.show().css({ + width: 'auto', + minHeight: 0, + height: 0 + }); + + if (options.minWidth > options.width) { + options.width = options.minWidth; + } + + // reset wrapper sizing + // determine the height of all the non-content elements + nonContentHeight = this.uiDialog.css({ + height: 'auto', + width: options.width + }) + .height(); + minContentHeight = Math.max( 0, options.minHeight - nonContentHeight ); + + if ( options.height === "auto" ) { + // only needed for IE6 support + if ( $.support.minHeight ) { + this.element.css({ + minHeight: minContentHeight, + height: "auto" + }); + } else { + this.uiDialog.show(); + var autoHeight = this.element.css( "height", "auto" ).height(); + if ( !isVisible ) { + this.uiDialog.hide(); + } + this.element.height( Math.max( autoHeight, minContentHeight ) ); + } + } else { + this.element.height( Math.max( options.height - nonContentHeight, 0 ) ); + } + + if (this.uiDialog.is(':data(resizable)')) { + this.uiDialog.resizable('option', 'minHeight', this._minHeight()); + } + } +}); + +$.extend($.ui.dialog, { + version: "1.8.22", + + uuid: 0, + maxZ: 0, + + getTitleId: function($el) { + var id = $el.attr('id'); + if (!id) { + this.uuid += 1; + id = this.uuid; + } + return 'ui-dialog-title-' + id; + }, + + overlay: function(dialog) { + this.$el = $.ui.dialog.overlay.create(dialog); + } +}); + +$.extend($.ui.dialog.overlay, { + instances: [], + // reuse old instances due to IE memory leak with alpha transparency (see #5185) + oldInstances: [], + maxZ: 0, + events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','), + function(event) { return event + '.dialog-overlay'; }).join(' '), + create: function(dialog) { + if (this.instances.length === 0) { + // prevent use of anchors and inputs + // we use a setTimeout in case the overlay is created from an + // event that we're going to be cancelling (see #2804) + setTimeout(function() { + // handle $(el).dialog().dialog('close') (see #4065) + if ($.ui.dialog.overlay.instances.length) { + $(document).bind($.ui.dialog.overlay.events, function(event) { + // stop events if the z-index of the target is < the z-index of the overlay + // we cannot return true when we don't want to cancel the event (#3523) + if ($(event.target).zIndex() < $.ui.dialog.overlay.maxZ) { + return false; + } + }); + } + }, 1); + + // allow closing by pressing the escape key + $(document).bind('keydown.dialog-overlay', function(event) { + if (dialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && + event.keyCode === $.ui.keyCode.ESCAPE) { + + dialog.close(event); + event.preventDefault(); + } + }); + + // handle window resize + $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize); + } + + var $el = (this.oldInstances.pop() || $('
        ').addClass('ui-widget-overlay')) + .appendTo(document.body) + .css({ + width: this.width(), + height: this.height() + }); + + if ($.fn.bgiframe) { + $el.bgiframe(); + } + + this.instances.push($el); + return $el; + }, + + destroy: function($el) { + var indexOf = $.inArray($el, this.instances); + if (indexOf != -1){ + this.oldInstances.push(this.instances.splice(indexOf, 1)[0]); + } + + if (this.instances.length === 0) { + $([document, window]).unbind('.dialog-overlay'); + } + + $el.remove(); + + // adjust the maxZ to allow other modal dialogs to continue to work (see #4309) + var maxZ = 0; + $.each(this.instances, function() { + maxZ = Math.max(maxZ, this.css('z-index')); + }); + this.maxZ = maxZ; + }, + + height: function() { + var scrollHeight, + offsetHeight; + // handle IE 6 + if ($.browser.msie && $.browser.version < 7) { + scrollHeight = Math.max( + document.documentElement.scrollHeight, + document.body.scrollHeight + ); + offsetHeight = Math.max( + document.documentElement.offsetHeight, + document.body.offsetHeight + ); + + if (scrollHeight < offsetHeight) { + return $(window).height() + 'px'; + } else { + return scrollHeight + 'px'; + } + // handle "good" browsers + } else { + return $(document).height() + 'px'; + } + }, + + width: function() { + var scrollWidth, + offsetWidth; + // handle IE + if ( $.browser.msie ) { + scrollWidth = Math.max( + document.documentElement.scrollWidth, + document.body.scrollWidth + ); + offsetWidth = Math.max( + document.documentElement.offsetWidth, + document.body.offsetWidth + ); + + if (scrollWidth < offsetWidth) { + return $(window).width() + 'px'; + } else { + return scrollWidth + 'px'; + } + // handle "good" browsers + } else { + return $(document).width() + 'px'; + } + }, + + resize: function() { + /* If the dialog is draggable and the user drags it past the + * right edge of the window, the document becomes wider so we + * need to stretch the overlay. If the user then drags the + * dialog back to the left, the document will become narrower, + * so we need to shrink the overlay to the appropriate size. + * This is handled by shrinking the overlay before setting it + * to the full document size. + */ + var $overlays = $([]); + $.each($.ui.dialog.overlay.instances, function() { + $overlays = $overlays.add(this); + }); + + $overlays.css({ + width: 0, + height: 0 + }).css({ + width: $.ui.dialog.overlay.width(), + height: $.ui.dialog.overlay.height() + }); + } +}); + +$.extend($.ui.dialog.overlay.prototype, { + destroy: function() { + $.ui.dialog.overlay.destroy(this.$el); + } +}); + +}(jQuery)); + +(function( $, undefined ) { + +$.ui = $.ui || {}; + +var horizontalPositions = /left|center|right/, + verticalPositions = /top|center|bottom/, + center = "center", + support = {}, + _position = $.fn.position, + _offset = $.fn.offset; + +$.fn.position = function( options ) { + if ( !options || !options.of ) { + return _position.apply( this, arguments ); + } + + // make a copy, we don't want to modify arguments + options = $.extend( {}, options ); + + var target = $( options.of ), + targetElem = target[0], + collision = ( options.collision || "flip" ).split( " " ), + offset = options.offset ? options.offset.split( " " ) : [ 0, 0 ], + targetWidth, + targetHeight, + basePosition; + + if ( targetElem.nodeType === 9 ) { + targetWidth = target.width(); + targetHeight = target.height(); + basePosition = { top: 0, left: 0 }; + // TODO: use $.isWindow() in 1.9 + } else if ( targetElem.setTimeout ) { + targetWidth = target.width(); + targetHeight = target.height(); + basePosition = { top: target.scrollTop(), left: target.scrollLeft() }; + } else if ( targetElem.preventDefault ) { + // force left top to allow flipping + options.at = "left top"; + targetWidth = targetHeight = 0; + basePosition = { top: options.of.pageY, left: options.of.pageX }; + } else { + targetWidth = target.outerWidth(); + targetHeight = target.outerHeight(); + basePosition = target.offset(); + } + + // force my and at to have valid horizontal and veritcal positions + // if a value is missing or invalid, it will be converted to center + $.each( [ "my", "at" ], function() { + var pos = ( options[this] || "" ).split( " " ); + if ( pos.length === 1) { + pos = horizontalPositions.test( pos[0] ) ? + pos.concat( [center] ) : + verticalPositions.test( pos[0] ) ? + [ center ].concat( pos ) : + [ center, center ]; + } + pos[ 0 ] = horizontalPositions.test( pos[0] ) ? pos[ 0 ] : center; + pos[ 1 ] = verticalPositions.test( pos[1] ) ? pos[ 1 ] : center; + options[ this ] = pos; + }); + + // normalize collision option + if ( collision.length === 1 ) { + collision[ 1 ] = collision[ 0 ]; + } + + // normalize offset option + offset[ 0 ] = parseInt( offset[0], 10 ) || 0; + if ( offset.length === 1 ) { + offset[ 1 ] = offset[ 0 ]; + } + offset[ 1 ] = parseInt( offset[1], 10 ) || 0; + + if ( options.at[0] === "right" ) { + basePosition.left += targetWidth; + } else if ( options.at[0] === center ) { + basePosition.left += targetWidth / 2; + } + + if ( options.at[1] === "bottom" ) { + basePosition.top += targetHeight; + } else if ( options.at[1] === center ) { + basePosition.top += targetHeight / 2; + } + + basePosition.left += offset[ 0 ]; + basePosition.top += offset[ 1 ]; + + return this.each(function() { + var elem = $( this ), + elemWidth = elem.outerWidth(), + elemHeight = elem.outerHeight(), + marginLeft = parseInt( $.curCSS( this, "marginLeft", true ) ) || 0, + marginTop = parseInt( $.curCSS( this, "marginTop", true ) ) || 0, + collisionWidth = elemWidth + marginLeft + + ( parseInt( $.curCSS( this, "marginRight", true ) ) || 0 ), + collisionHeight = elemHeight + marginTop + + ( parseInt( $.curCSS( this, "marginBottom", true ) ) || 0 ), + position = $.extend( {}, basePosition ), + collisionPosition; + + if ( options.my[0] === "right" ) { + position.left -= elemWidth; + } else if ( options.my[0] === center ) { + position.left -= elemWidth / 2; + } + + if ( options.my[1] === "bottom" ) { + position.top -= elemHeight; + } else if ( options.my[1] === center ) { + position.top -= elemHeight / 2; + } + + // prevent fractions if jQuery version doesn't support them (see #5280) + if ( !support.fractions ) { + position.left = Math.round( position.left ); + position.top = Math.round( position.top ); + } + + collisionPosition = { + left: position.left - marginLeft, + top: position.top - marginTop + }; + + $.each( [ "left", "top" ], function( i, dir ) { + if ( $.ui.position[ collision[i] ] ) { + $.ui.position[ collision[i] ][ dir ]( position, { + targetWidth: targetWidth, + targetHeight: targetHeight, + elemWidth: elemWidth, + elemHeight: elemHeight, + collisionPosition: collisionPosition, + collisionWidth: collisionWidth, + collisionHeight: collisionHeight, + offset: offset, + my: options.my, + at: options.at + }); + } + }); + + if ( $.fn.bgiframe ) { + elem.bgiframe(); + } + elem.offset( $.extend( position, { using: options.using } ) ); + }); +}; + +$.ui.position = { + fit: { + left: function( position, data ) { + var win = $( window ), + over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft(); + position.left = over > 0 ? position.left - over : Math.max( position.left - data.collisionPosition.left, position.left ); + }, + top: function( position, data ) { + var win = $( window ), + over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop(); + position.top = over > 0 ? position.top - over : Math.max( position.top - data.collisionPosition.top, position.top ); + } + }, + + flip: { + left: function( position, data ) { + if ( data.at[0] === center ) { + return; + } + var win = $( window ), + over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft(), + myOffset = data.my[ 0 ] === "left" ? + -data.elemWidth : + data.my[ 0 ] === "right" ? + data.elemWidth : + 0, + atOffset = data.at[ 0 ] === "left" ? + data.targetWidth : + -data.targetWidth, + offset = -2 * data.offset[ 0 ]; + position.left += data.collisionPosition.left < 0 ? + myOffset + atOffset + offset : + over > 0 ? + myOffset + atOffset + offset : + 0; + }, + top: function( position, data ) { + if ( data.at[1] === center ) { + return; + } + var win = $( window ), + over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop(), + myOffset = data.my[ 1 ] === "top" ? + -data.elemHeight : + data.my[ 1 ] === "bottom" ? + data.elemHeight : + 0, + atOffset = data.at[ 1 ] === "top" ? + data.targetHeight : + -data.targetHeight, + offset = -2 * data.offset[ 1 ]; + position.top += data.collisionPosition.top < 0 ? + myOffset + atOffset + offset : + over > 0 ? + myOffset + atOffset + offset : + 0; + } + } +}; + +// offset setter from jQuery 1.4 +if ( !$.offset.setOffset ) { + $.offset.setOffset = function( elem, options ) { + // set position first, in-case top/left are set even on static elem + if ( /static/.test( $.curCSS( elem, "position" ) ) ) { + elem.style.position = "relative"; + } + var curElem = $( elem ), + curOffset = curElem.offset(), + curTop = parseInt( $.curCSS( elem, "top", true ), 10 ) || 0, + curLeft = parseInt( $.curCSS( elem, "left", true ), 10) || 0, + props = { + top: (options.top - curOffset.top) + curTop, + left: (options.left - curOffset.left) + curLeft + }; + + if ( 'using' in options ) { + options.using.call( elem, props ); + } else { + curElem.css( props ); + } + }; + + $.fn.offset = function( options ) { + var elem = this[ 0 ]; + if ( !elem || !elem.ownerDocument ) { return null; } + if ( options ) { + if ( $.isFunction( options ) ) { + return this.each(function( i ) { + $( this ).offset( options.call( this, i, $( this ).offset() ) ); + }); + } + return this.each(function() { + $.offset.setOffset( this, options ); + }); + } + return _offset.call( this ); + }; +} + +// fraction support test (older versions of jQuery don't support fractions) +(function () { + var body = document.getElementsByTagName( "body" )[ 0 ], + div = document.createElement( "div" ), + testElement, testElementParent, testElementStyle, offset, offsetTotal; + + //Create a "fake body" for testing based on method used in jQuery.support + testElement = document.createElement( body ? "div" : "body" ); + testElementStyle = { + visibility: "hidden", + width: 0, + height: 0, + border: 0, + margin: 0, + background: "none" + }; + if ( body ) { + $.extend( testElementStyle, { + position: "absolute", + left: "-1000px", + top: "-1000px" + }); + } + for ( var i in testElementStyle ) { + testElement.style[ i ] = testElementStyle[ i ]; + } + testElement.appendChild( div ); + testElementParent = body || document.documentElement; + testElementParent.insertBefore( testElement, testElementParent.firstChild ); + + div.style.cssText = "position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;"; + + offset = $( div ).offset( function( _, offset ) { + return offset; + }).offset(); + + testElement.innerHTML = ""; + testElementParent.removeChild( testElement ); + + offsetTotal = offset.top + offset.left + ( body ? 2000 : 0 ); + support.fractions = offsetTotal > 21 && offsetTotal < 22; +})(); + +}( jQuery )); + +(function( $, undefined ) { + +$.widget( "ui.progressbar", { + options: { + value: 0, + max: 100 + }, + + min: 0, + + _create: function() { + this.element + .addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) + .attr({ + role: "progressbar", + "aria-valuemin": this.min, + "aria-valuemax": this.options.max, + "aria-valuenow": this._value() + }); + + this.valueDiv = $( "
        " ) + .appendTo( this.element ); + + this.oldValue = this._value(); + this._refreshValue(); + }, + + destroy: function() { + this.element + .removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) + .removeAttr( "role" ) + .removeAttr( "aria-valuemin" ) + .removeAttr( "aria-valuemax" ) + .removeAttr( "aria-valuenow" ); + + this.valueDiv.remove(); + + $.Widget.prototype.destroy.apply( this, arguments ); + }, + + value: function( newValue ) { + if ( newValue === undefined ) { + return this._value(); + } + + this._setOption( "value", newValue ); + return this; + }, + + _setOption: function( key, value ) { + if ( key === "value" ) { + this.options.value = value; + this._refreshValue(); + if ( this._value() === this.options.max ) { + this._trigger( "complete" ); + } + } + + $.Widget.prototype._setOption.apply( this, arguments ); + }, + + _value: function() { + var val = this.options.value; + // normalize invalid value + if ( typeof val !== "number" ) { + val = 0; + } + return Math.min( this.options.max, Math.max( this.min, val ) ); + }, + + _percentage: function() { + return 100 * this._value() / this.options.max; + }, + + _refreshValue: function() { + var value = this.value(); + var percentage = this._percentage(); + + if ( this.oldValue !== value ) { + this.oldValue = value; + this._trigger( "change" ); + } + + this.valueDiv + .toggle( value > this.min ) + .toggleClass( "ui-corner-right", value === this.options.max ) + .width( percentage.toFixed(0) + "%" ); + this.element.attr( "aria-valuenow", value ); + } +}); + +$.extend( $.ui.progressbar, { + version: "1.8.22" +}); + +})( jQuery ); + +(function( $, undefined ) { + +// number of pages in a slider +// (how many times can you page up/down to go through the whole range) +var numPages = 5; + +$.widget( "ui.slider", $.ui.mouse, { + + widgetEventPrefix: "slide", + + options: { + animate: false, + distance: 0, + max: 100, + min: 0, + orientation: "horizontal", + range: false, + step: 1, + value: 0, + values: null + }, + + _create: function() { + var self = this, + o = this.options, + existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ), + handle = "", + handleCount = ( o.values && o.values.length ) || 1, + handles = []; + + this._keySliding = false; + this._mouseSliding = false; + this._animateOff = true; + this._handleIndex = null; + this._detectOrientation(); + this._mouseInit(); + + this.element + .addClass( "ui-slider" + + " ui-slider-" + this.orientation + + " ui-widget" + + " ui-widget-content" + + " ui-corner-all" + + ( o.disabled ? " ui-slider-disabled ui-disabled" : "" ) ); + + this.range = $([]); + + if ( o.range ) { + if ( o.range === true ) { + if ( !o.values ) { + o.values = [ this._valueMin(), this._valueMin() ]; + } + if ( o.values.length && o.values.length !== 2 ) { + o.values = [ o.values[0], o.values[0] ]; + } + } + + this.range = $( "
        " ) + .appendTo( this.element ) + .addClass( "ui-slider-range" + + // note: this isn't the most fittingly semantic framework class for this element, + // but worked best visually with a variety of themes + " ui-widget-header" + + ( ( o.range === "min" || o.range === "max" ) ? " ui-slider-range-" + o.range : "" ) ); + } + + for ( var i = existingHandles.length; i < handleCount; i += 1 ) { + handles.push( handle ); + } + + this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( self.element ) ); + + this.handle = this.handles.eq( 0 ); + + this.handles.add( this.range ).filter( "a" ) + .click(function( event ) { + event.preventDefault(); + }) + .hover(function() { + if ( !o.disabled ) { + $( this ).addClass( "ui-state-hover" ); + } + }, function() { + $( this ).removeClass( "ui-state-hover" ); + }) + .focus(function() { + if ( !o.disabled ) { + $( ".ui-slider .ui-state-focus" ).removeClass( "ui-state-focus" ); + $( this ).addClass( "ui-state-focus" ); + } else { + $( this ).blur(); + } + }) + .blur(function() { + $( this ).removeClass( "ui-state-focus" ); + }); + + this.handles.each(function( i ) { + $( this ).data( "index.ui-slider-handle", i ); + }); + + this.handles + .keydown(function( event ) { + var index = $( this ).data( "index.ui-slider-handle" ), + allowed, + curVal, + newVal, + step; + + if ( self.options.disabled ) { + return; + } + + switch ( event.keyCode ) { + case $.ui.keyCode.HOME: + case $.ui.keyCode.END: + case $.ui.keyCode.PAGE_UP: + case $.ui.keyCode.PAGE_DOWN: + case $.ui.keyCode.UP: + case $.ui.keyCode.RIGHT: + case $.ui.keyCode.DOWN: + case $.ui.keyCode.LEFT: + event.preventDefault(); + if ( !self._keySliding ) { + self._keySliding = true; + $( this ).addClass( "ui-state-active" ); + allowed = self._start( event, index ); + if ( allowed === false ) { + return; + } + } + break; + } + + step = self.options.step; + if ( self.options.values && self.options.values.length ) { + curVal = newVal = self.values( index ); + } else { + curVal = newVal = self.value(); + } + + switch ( event.keyCode ) { + case $.ui.keyCode.HOME: + newVal = self._valueMin(); + break; + case $.ui.keyCode.END: + newVal = self._valueMax(); + break; + case $.ui.keyCode.PAGE_UP: + newVal = self._trimAlignValue( curVal + ( (self._valueMax() - self._valueMin()) / numPages ) ); + break; + case $.ui.keyCode.PAGE_DOWN: + newVal = self._trimAlignValue( curVal - ( (self._valueMax() - self._valueMin()) / numPages ) ); + break; + case $.ui.keyCode.UP: + case $.ui.keyCode.RIGHT: + if ( curVal === self._valueMax() ) { + return; + } + newVal = self._trimAlignValue( curVal + step ); + break; + case $.ui.keyCode.DOWN: + case $.ui.keyCode.LEFT: + if ( curVal === self._valueMin() ) { + return; + } + newVal = self._trimAlignValue( curVal - step ); + break; + } + + self._slide( event, index, newVal ); + }) + .keyup(function( event ) { + var index = $( this ).data( "index.ui-slider-handle" ); + + if ( self._keySliding ) { + self._keySliding = false; + self._stop( event, index ); + self._change( event, index ); + $( this ).removeClass( "ui-state-active" ); + } + + }); + + this._refreshValue(); + + this._animateOff = false; + }, + + destroy: function() { + this.handles.remove(); + this.range.remove(); + + this.element + .removeClass( "ui-slider" + + " ui-slider-horizontal" + + " ui-slider-vertical" + + " ui-slider-disabled" + + " ui-widget" + + " ui-widget-content" + + " ui-corner-all" ) + .removeData( "slider" ) + .unbind( ".slider" ); + + this._mouseDestroy(); + + return this; + }, + + _mouseCapture: function( event ) { + var o = this.options, + position, + normValue, + distance, + closestHandle, + self, + index, + allowed, + offset, + mouseOverHandle; + + if ( o.disabled ) { + return false; + } + + this.elementSize = { + width: this.element.outerWidth(), + height: this.element.outerHeight() + }; + this.elementOffset = this.element.offset(); + + position = { x: event.pageX, y: event.pageY }; + normValue = this._normValueFromMouse( position ); + distance = this._valueMax() - this._valueMin() + 1; + self = this; + this.handles.each(function( i ) { + var thisDistance = Math.abs( normValue - self.values(i) ); + if ( distance > thisDistance ) { + distance = thisDistance; + closestHandle = $( this ); + index = i; + } + }); + + // workaround for bug #3736 (if both handles of a range are at 0, + // the first is always used as the one with least distance, + // and moving it is obviously prevented by preventing negative ranges) + if( o.range === true && this.values(1) === o.min ) { + index += 1; + closestHandle = $( this.handles[index] ); + } + + allowed = this._start( event, index ); + if ( allowed === false ) { + return false; + } + this._mouseSliding = true; + + self._handleIndex = index; + + closestHandle + .addClass( "ui-state-active" ) + .focus(); + + offset = closestHandle.offset(); + mouseOverHandle = !$( event.target ).parents().andSelf().is( ".ui-slider-handle" ); + this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : { + left: event.pageX - offset.left - ( closestHandle.width() / 2 ), + top: event.pageY - offset.top - + ( closestHandle.height() / 2 ) - + ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) - + ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) + + ( parseInt( closestHandle.css("marginTop"), 10 ) || 0) + }; + + if ( !this.handles.hasClass( "ui-state-hover" ) ) { + this._slide( event, index, normValue ); + } + this._animateOff = true; + return true; + }, + + _mouseStart: function( event ) { + return true; + }, + + _mouseDrag: function( event ) { + var position = { x: event.pageX, y: event.pageY }, + normValue = this._normValueFromMouse( position ); + + this._slide( event, this._handleIndex, normValue ); + + return false; + }, + + _mouseStop: function( event ) { + this.handles.removeClass( "ui-state-active" ); + this._mouseSliding = false; + + this._stop( event, this._handleIndex ); + this._change( event, this._handleIndex ); + + this._handleIndex = null; + this._clickOffset = null; + this._animateOff = false; + + return false; + }, + + _detectOrientation: function() { + this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal"; + }, + + _normValueFromMouse: function( position ) { + var pixelTotal, + pixelMouse, + percentMouse, + valueTotal, + valueMouse; + + if ( this.orientation === "horizontal" ) { + pixelTotal = this.elementSize.width; + pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 ); + } else { + pixelTotal = this.elementSize.height; + pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 ); + } + + percentMouse = ( pixelMouse / pixelTotal ); + if ( percentMouse > 1 ) { + percentMouse = 1; + } + if ( percentMouse < 0 ) { + percentMouse = 0; + } + if ( this.orientation === "vertical" ) { + percentMouse = 1 - percentMouse; + } + + valueTotal = this._valueMax() - this._valueMin(); + valueMouse = this._valueMin() + percentMouse * valueTotal; + + return this._trimAlignValue( valueMouse ); + }, + + _start: function( event, index ) { + var uiHash = { + handle: this.handles[ index ], + value: this.value() + }; + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); + uiHash.values = this.values(); + } + return this._trigger( "start", event, uiHash ); + }, + + _slide: function( event, index, newVal ) { + var otherVal, + newValues, + allowed; + + if ( this.options.values && this.options.values.length ) { + otherVal = this.values( index ? 0 : 1 ); + + if ( ( this.options.values.length === 2 && this.options.range === true ) && + ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) ) + ) { + newVal = otherVal; + } + + if ( newVal !== this.values( index ) ) { + newValues = this.values(); + newValues[ index ] = newVal; + // A slide can be canceled by returning false from the slide callback + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], + value: newVal, + values: newValues + } ); + otherVal = this.values( index ? 0 : 1 ); + if ( allowed !== false ) { + this.values( index, newVal, true ); + } + } + } else { + if ( newVal !== this.value() ) { + // A slide can be canceled by returning false from the slide callback + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], + value: newVal + } ); + if ( allowed !== false ) { + this.value( newVal ); + } + } + } + }, + + _stop: function( event, index ) { + var uiHash = { + handle: this.handles[ index ], + value: this.value() + }; + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); + uiHash.values = this.values(); + } + + this._trigger( "stop", event, uiHash ); + }, + + _change: function( event, index ) { + if ( !this._keySliding && !this._mouseSliding ) { + var uiHash = { + handle: this.handles[ index ], + value: this.value() + }; + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); + uiHash.values = this.values(); + } + + this._trigger( "change", event, uiHash ); + } + }, + + value: function( newValue ) { + if ( arguments.length ) { + this.options.value = this._trimAlignValue( newValue ); + this._refreshValue(); + this._change( null, 0 ); + return; + } + + return this._value(); + }, + + values: function( index, newValue ) { + var vals, + newValues, + i; + + if ( arguments.length > 1 ) { + this.options.values[ index ] = this._trimAlignValue( newValue ); + this._refreshValue(); + this._change( null, index ); + return; + } + + if ( arguments.length ) { + if ( $.isArray( arguments[ 0 ] ) ) { + vals = this.options.values; + newValues = arguments[ 0 ]; + for ( i = 0; i < vals.length; i += 1 ) { + vals[ i ] = this._trimAlignValue( newValues[ i ] ); + this._change( null, i ); + } + this._refreshValue(); + } else { + if ( this.options.values && this.options.values.length ) { + return this._values( index ); + } else { + return this.value(); + } + } + } else { + return this._values(); + } + }, + + _setOption: function( key, value ) { + var i, + valsLength = 0; + + if ( $.isArray( this.options.values ) ) { + valsLength = this.options.values.length; + } + + $.Widget.prototype._setOption.apply( this, arguments ); + + switch ( key ) { + case "disabled": + if ( value ) { + this.handles.filter( ".ui-state-focus" ).blur(); + this.handles.removeClass( "ui-state-hover" ); + this.handles.propAttr( "disabled", true ); + this.element.addClass( "ui-disabled" ); + } else { + this.handles.propAttr( "disabled", false ); + this.element.removeClass( "ui-disabled" ); + } + break; + case "orientation": + this._detectOrientation(); + this.element + .removeClass( "ui-slider-horizontal ui-slider-vertical" ) + .addClass( "ui-slider-" + this.orientation ); + this._refreshValue(); + break; + case "value": + this._animateOff = true; + this._refreshValue(); + this._change( null, 0 ); + this._animateOff = false; + break; + case "values": + this._animateOff = true; + this._refreshValue(); + for ( i = 0; i < valsLength; i += 1 ) { + this._change( null, i ); + } + this._animateOff = false; + break; + } + }, + + //internal value getter + // _value() returns value trimmed by min and max, aligned by step + _value: function() { + var val = this.options.value; + val = this._trimAlignValue( val ); + + return val; + }, + + //internal values getter + // _values() returns array of values trimmed by min and max, aligned by step + // _values( index ) returns single value trimmed by min and max, aligned by step + _values: function( index ) { + var val, + vals, + i; + + if ( arguments.length ) { + val = this.options.values[ index ]; + val = this._trimAlignValue( val ); + + return val; + } else { + // .slice() creates a copy of the array + // this copy gets trimmed by min and max and then returned + vals = this.options.values.slice(); + for ( i = 0; i < vals.length; i+= 1) { + vals[ i ] = this._trimAlignValue( vals[ i ] ); + } + + return vals; + } + }, + + // returns the step-aligned value that val is closest to, between (inclusive) min and max + _trimAlignValue: function( val ) { + if ( val <= this._valueMin() ) { + return this._valueMin(); + } + if ( val >= this._valueMax() ) { + return this._valueMax(); + } + var step = ( this.options.step > 0 ) ? this.options.step : 1, + valModStep = (val - this._valueMin()) % step, + alignValue = val - valModStep; + + if ( Math.abs(valModStep) * 2 >= step ) { + alignValue += ( valModStep > 0 ) ? step : ( -step ); + } + + // Since JavaScript has problems with large floats, round + // the final value to 5 digits after the decimal point (see #4124) + return parseFloat( alignValue.toFixed(5) ); + }, + + _valueMin: function() { + return this.options.min; + }, + + _valueMax: function() { + return this.options.max; + }, + + _refreshValue: function() { + var oRange = this.options.range, + o = this.options, + self = this, + animate = ( !this._animateOff ) ? o.animate : false, + valPercent, + _set = {}, + lastValPercent, + value, + valueMin, + valueMax; + + if ( this.options.values && this.options.values.length ) { + this.handles.each(function( i, j ) { + valPercent = ( self.values(i) - self._valueMin() ) / ( self._valueMax() - self._valueMin() ) * 100; + _set[ self.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; + $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); + if ( self.options.range === true ) { + if ( self.orientation === "horizontal" ) { + if ( i === 0 ) { + self.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate ); + } + if ( i === 1 ) { + self.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + } else { + if ( i === 0 ) { + self.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate ); + } + if ( i === 1 ) { + self.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + } + } + lastValPercent = valPercent; + }); + } else { + value = this.value(); + valueMin = this._valueMin(); + valueMax = this._valueMax(); + valPercent = ( valueMax !== valueMin ) ? + ( value - valueMin ) / ( valueMax - valueMin ) * 100 : + 0; + _set[ self.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; + this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); + + if ( oRange === "min" && this.orientation === "horizontal" ) { + this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate ); + } + if ( oRange === "max" && this.orientation === "horizontal" ) { + this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + if ( oRange === "min" && this.orientation === "vertical" ) { + this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate ); + } + if ( oRange === "max" && this.orientation === "vertical" ) { + this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + } + } + +}); + +$.extend( $.ui.slider, { + version: "1.8.22" +}); + +}(jQuery)); + +(function( $, undefined ) { + +var tabId = 0, + listId = 0; + +function getNextTabId() { + return ++tabId; +} + +function getNextListId() { + return ++listId; +} + +$.widget( "ui.tabs", { + options: { + add: null, + ajaxOptions: null, + cache: false, + cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true } + collapsible: false, + disable: null, + disabled: [], + enable: null, + event: "click", + fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 } + idPrefix: "ui-tabs-", + load: null, + panelTemplate: "
        ", + remove: null, + select: null, + show: null, + spinner: "Loading…", + tabTemplate: "
      • #{label}
      • " + }, + + _create: function() { + this._tabify( true ); + }, + + _setOption: function( key, value ) { + if ( key == "selected" ) { + if (this.options.collapsible && value == this.options.selected ) { + return; + } + this.select( value ); + } else { + this.options[ key ] = value; + this._tabify(); + } + }, + + _tabId: function( a ) { + return a.title && a.title.replace( /\s/g, "_" ).replace( /[^\w\u00c0-\uFFFF-]/g, "" ) || + this.options.idPrefix + getNextTabId(); + }, + + _sanitizeSelector: function( hash ) { + // we need this because an id may contain a ":" + return hash.replace( /:/g, "\\:" ); + }, + + _cookie: function() { + var cookie = this.cookie || + ( this.cookie = this.options.cookie.name || "ui-tabs-" + getNextListId() ); + return $.cookie.apply( null, [ cookie ].concat( $.makeArray( arguments ) ) ); + }, + + _ui: function( tab, panel ) { + return { + tab: tab, + panel: panel, + index: this.anchors.index( tab ) + }; + }, + + _cleanup: function() { + // restore all former loading tabs labels + this.lis.filter( ".ui-state-processing" ) + .removeClass( "ui-state-processing" ) + .find( "span:data(label.tabs)" ) + .each(function() { + var el = $( this ); + el.html( el.data( "label.tabs" ) ).removeData( "label.tabs" ); + }); + }, + + _tabify: function( init ) { + var self = this, + o = this.options, + fragmentId = /^#.+/; // Safari 2 reports '#' for an empty hash + + this.list = this.element.find( "ol,ul" ).eq( 0 ); + this.lis = $( " > li:has(a[href])", this.list ); + this.anchors = this.lis.map(function() { + return $( "a", this )[ 0 ]; + }); + this.panels = $( [] ); + + this.anchors.each(function( i, a ) { + var href = $( a ).attr( "href" ); + // For dynamically created HTML that contains a hash as href IE < 8 expands + // such href to the full page url with hash and then misinterprets tab as ajax. + // Same consideration applies for an added tab with a fragment identifier + // since a[href=#fragment-identifier] does unexpectedly not match. + // Thus normalize href attribute... + var hrefBase = href.split( "#" )[ 0 ], + baseEl; + if ( hrefBase && ( hrefBase === location.toString().split( "#" )[ 0 ] || + ( baseEl = $( "base" )[ 0 ]) && hrefBase === baseEl.href ) ) { + href = a.hash; + a.href = href; + } + + // inline tab + if ( fragmentId.test( href ) ) { + self.panels = self.panels.add( self.element.find( self._sanitizeSelector( href ) ) ); + // remote tab + // prevent loading the page itself if href is just "#" + } else if ( href && href !== "#" ) { + // required for restore on destroy + $.data( a, "href.tabs", href ); + + // TODO until #3808 is fixed strip fragment identifier from url + // (IE fails to load from such url) + $.data( a, "load.tabs", href.replace( /#.*$/, "" ) ); + + var id = self._tabId( a ); + a.href = "#" + id; + var $panel = self.element.find( "#" + id ); + if ( !$panel.length ) { + $panel = $( o.panelTemplate ) + .attr( "id", id ) + .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) + .insertAfter( self.panels[ i - 1 ] || self.list ); + $panel.data( "destroy.tabs", true ); + } + self.panels = self.panels.add( $panel ); + // invalid tab href + } else { + o.disabled.push( i ); + } + }); + + // initialization from scratch + if ( init ) { + // attach necessary classes for styling + this.element.addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" ); + this.list.addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ); + this.lis.addClass( "ui-state-default ui-corner-top" ); + this.panels.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ); + + // Selected tab + // use "selected" option or try to retrieve: + // 1. from fragment identifier in url + // 2. from cookie + // 3. from selected class attribute on
      • + if ( o.selected === undefined ) { + if ( location.hash ) { + this.anchors.each(function( i, a ) { + if ( a.hash == location.hash ) { + o.selected = i; + return false; + } + }); + } + if ( typeof o.selected !== "number" && o.cookie ) { + o.selected = parseInt( self._cookie(), 10 ); + } + if ( typeof o.selected !== "number" && this.lis.filter( ".ui-tabs-selected" ).length ) { + o.selected = this.lis.index( this.lis.filter( ".ui-tabs-selected" ) ); + } + o.selected = o.selected || ( this.lis.length ? 0 : -1 ); + } else if ( o.selected === null ) { // usage of null is deprecated, TODO remove in next release + o.selected = -1; + } + + // sanity check - default to first tab... + o.selected = ( ( o.selected >= 0 && this.anchors[ o.selected ] ) || o.selected < 0 ) + ? o.selected + : 0; + + // Take disabling tabs via class attribute from HTML + // into account and update option properly. + // A selected tab cannot become disabled. + o.disabled = $.unique( o.disabled.concat( + $.map( this.lis.filter( ".ui-state-disabled" ), function( n, i ) { + return self.lis.index( n ); + }) + ) ).sort(); + + if ( $.inArray( o.selected, o.disabled ) != -1 ) { + o.disabled.splice( $.inArray( o.selected, o.disabled ), 1 ); + } + + // highlight selected tab + this.panels.addClass( "ui-tabs-hide" ); + this.lis.removeClass( "ui-tabs-selected ui-state-active" ); + // check for length avoids error when initializing empty list + if ( o.selected >= 0 && this.anchors.length ) { + self.element.find( self._sanitizeSelector( self.anchors[ o.selected ].hash ) ).removeClass( "ui-tabs-hide" ); + this.lis.eq( o.selected ).addClass( "ui-tabs-selected ui-state-active" ); + + // seems to be expected behavior that the show callback is fired + self.element.queue( "tabs", function() { + self._trigger( "show", null, + self._ui( self.anchors[ o.selected ], self.element.find( self._sanitizeSelector( self.anchors[ o.selected ].hash ) )[ 0 ] ) ); + }); + + this.load( o.selected ); + } + + // clean up to avoid memory leaks in certain versions of IE 6 + // TODO: namespace this event + $( window ).bind( "unload", function() { + self.lis.add( self.anchors ).unbind( ".tabs" ); + self.lis = self.anchors = self.panels = null; + }); + // update selected after add/remove + } else { + o.selected = this.lis.index( this.lis.filter( ".ui-tabs-selected" ) ); + } + + // update collapsible + // TODO: use .toggleClass() + this.element[ o.collapsible ? "addClass" : "removeClass" ]( "ui-tabs-collapsible" ); + + // set or update cookie after init and add/remove respectively + if ( o.cookie ) { + this._cookie( o.selected, o.cookie ); + } + + // disable tabs + for ( var i = 0, li; ( li = this.lis[ i ] ); i++ ) { + $( li )[ $.inArray( i, o.disabled ) != -1 && + // TODO: use .toggleClass() + !$( li ).hasClass( "ui-tabs-selected" ) ? "addClass" : "removeClass" ]( "ui-state-disabled" ); + } + + // reset cache if switching from cached to not cached + if ( o.cache === false ) { + this.anchors.removeData( "cache.tabs" ); + } + + // remove all handlers before, tabify may run on existing tabs after add or option change + this.lis.add( this.anchors ).unbind( ".tabs" ); + + if ( o.event !== "mouseover" ) { + var addState = function( state, el ) { + if ( el.is( ":not(.ui-state-disabled)" ) ) { + el.addClass( "ui-state-" + state ); + } + }; + var removeState = function( state, el ) { + el.removeClass( "ui-state-" + state ); + }; + this.lis.bind( "mouseover.tabs" , function() { + addState( "hover", $( this ) ); + }); + this.lis.bind( "mouseout.tabs", function() { + removeState( "hover", $( this ) ); + }); + this.anchors.bind( "focus.tabs", function() { + addState( "focus", $( this ).closest( "li" ) ); + }); + this.anchors.bind( "blur.tabs", function() { + removeState( "focus", $( this ).closest( "li" ) ); + }); + } + + // set up animations + var hideFx, showFx; + if ( o.fx ) { + if ( $.isArray( o.fx ) ) { + hideFx = o.fx[ 0 ]; + showFx = o.fx[ 1 ]; + } else { + hideFx = showFx = o.fx; + } + } + + // Reset certain styles left over from animation + // and prevent IE's ClearType bug... + function resetStyle( $el, fx ) { + $el.css( "display", "" ); + if ( !$.support.opacity && fx.opacity ) { + $el[ 0 ].style.removeAttribute( "filter" ); + } + } + + // Show a tab... + var showTab = showFx + ? function( clicked, $show ) { + $( clicked ).closest( "li" ).addClass( "ui-tabs-selected ui-state-active" ); + $show.hide().removeClass( "ui-tabs-hide" ) // avoid flicker that way + .animate( showFx, showFx.duration || "normal", function() { + resetStyle( $show, showFx ); + self._trigger( "show", null, self._ui( clicked, $show[ 0 ] ) ); + }); + } + : function( clicked, $show ) { + $( clicked ).closest( "li" ).addClass( "ui-tabs-selected ui-state-active" ); + $show.removeClass( "ui-tabs-hide" ); + self._trigger( "show", null, self._ui( clicked, $show[ 0 ] ) ); + }; + + // Hide a tab, $show is optional... + var hideTab = hideFx + ? function( clicked, $hide ) { + $hide.animate( hideFx, hideFx.duration || "normal", function() { + self.lis.removeClass( "ui-tabs-selected ui-state-active" ); + $hide.addClass( "ui-tabs-hide" ); + resetStyle( $hide, hideFx ); + self.element.dequeue( "tabs" ); + }); + } + : function( clicked, $hide, $show ) { + self.lis.removeClass( "ui-tabs-selected ui-state-active" ); + $hide.addClass( "ui-tabs-hide" ); + self.element.dequeue( "tabs" ); + }; + + // attach tab event handler, unbind to avoid duplicates from former tabifying... + this.anchors.bind( o.event + ".tabs", function() { + var el = this, + $li = $(el).closest( "li" ), + $hide = self.panels.filter( ":not(.ui-tabs-hide)" ), + $show = self.element.find( self._sanitizeSelector( el.hash ) ); + + // If tab is already selected and not collapsible or tab disabled or + // or is already loading or click callback returns false stop here. + // Check if click handler returns false last so that it is not executed + // for a disabled or loading tab! + if ( ( $li.hasClass( "ui-tabs-selected" ) && !o.collapsible) || + $li.hasClass( "ui-state-disabled" ) || + $li.hasClass( "ui-state-processing" ) || + self.panels.filter( ":animated" ).length || + self._trigger( "select", null, self._ui( this, $show[ 0 ] ) ) === false ) { + this.blur(); + return false; + } + + o.selected = self.anchors.index( this ); + + self.abort(); + + // if tab may be closed + if ( o.collapsible ) { + if ( $li.hasClass( "ui-tabs-selected" ) ) { + o.selected = -1; + + if ( o.cookie ) { + self._cookie( o.selected, o.cookie ); + } + + self.element.queue( "tabs", function() { + hideTab( el, $hide ); + }).dequeue( "tabs" ); + + this.blur(); + return false; + } else if ( !$hide.length ) { + if ( o.cookie ) { + self._cookie( o.selected, o.cookie ); + } + + self.element.queue( "tabs", function() { + showTab( el, $show ); + }); + + // TODO make passing in node possible, see also http://dev.jqueryui.com/ticket/3171 + self.load( self.anchors.index( this ) ); + + this.blur(); + return false; + } + } + + if ( o.cookie ) { + self._cookie( o.selected, o.cookie ); + } + + // show new tab + if ( $show.length ) { + if ( $hide.length ) { + self.element.queue( "tabs", function() { + hideTab( el, $hide ); + }); + } + self.element.queue( "tabs", function() { + showTab( el, $show ); + }); + + self.load( self.anchors.index( this ) ); + } else { + throw "jQuery UI Tabs: Mismatching fragment identifier."; + } + + // Prevent IE from keeping other link focussed when using the back button + // and remove dotted border from clicked link. This is controlled via CSS + // in modern browsers; blur() removes focus from address bar in Firefox + // which can become a usability and annoying problem with tabs('rotate'). + if ( $.browser.msie ) { + this.blur(); + } + }); + + // disable click in any case + this.anchors.bind( "click.tabs", function(){ + return false; + }); + }, + + _getIndex: function( index ) { + // meta-function to give users option to provide a href string instead of a numerical index. + // also sanitizes numerical indexes to valid values. + if ( typeof index == "string" ) { + index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) ); + } + + return index; + }, + + destroy: function() { + var o = this.options; + + this.abort(); + + this.element + .unbind( ".tabs" ) + .removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" ) + .removeData( "tabs" ); + + this.list.removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ); + + this.anchors.each(function() { + var href = $.data( this, "href.tabs" ); + if ( href ) { + this.href = href; + } + var $this = $( this ).unbind( ".tabs" ); + $.each( [ "href", "load", "cache" ], function( i, prefix ) { + $this.removeData( prefix + ".tabs" ); + }); + }); + + this.lis.unbind( ".tabs" ).add( this.panels ).each(function() { + if ( $.data( this, "destroy.tabs" ) ) { + $( this ).remove(); + } else { + $( this ).removeClass([ + "ui-state-default", + "ui-corner-top", + "ui-tabs-selected", + "ui-state-active", + "ui-state-hover", + "ui-state-focus", + "ui-state-disabled", + "ui-tabs-panel", + "ui-widget-content", + "ui-corner-bottom", + "ui-tabs-hide" + ].join( " " ) ); + } + }); + + if ( o.cookie ) { + this._cookie( null, o.cookie ); + } + + return this; + }, + + add: function( url, label, index ) { + if ( index === undefined ) { + index = this.anchors.length; + } + + var self = this, + o = this.options, + $li = $( o.tabTemplate.replace( /#\{href\}/g, url ).replace( /#\{label\}/g, label ) ), + id = !url.indexOf( "#" ) ? url.replace( "#", "" ) : this._tabId( $( "a", $li )[ 0 ] ); + + $li.addClass( "ui-state-default ui-corner-top" ).data( "destroy.tabs", true ); + + // try to find an existing element before creating a new one + var $panel = self.element.find( "#" + id ); + if ( !$panel.length ) { + $panel = $( o.panelTemplate ) + .attr( "id", id ) + .data( "destroy.tabs", true ); + } + $panel.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" ); + + if ( index >= this.lis.length ) { + $li.appendTo( this.list ); + $panel.appendTo( this.list[ 0 ].parentNode ); + } else { + $li.insertBefore( this.lis[ index ] ); + $panel.insertBefore( this.panels[ index ] ); + } + + o.disabled = $.map( o.disabled, function( n, i ) { + return n >= index ? ++n : n; + }); + + this._tabify(); + + if ( this.anchors.length == 1 ) { + o.selected = 0; + $li.addClass( "ui-tabs-selected ui-state-active" ); + $panel.removeClass( "ui-tabs-hide" ); + this.element.queue( "tabs", function() { + self._trigger( "show", null, self._ui( self.anchors[ 0 ], self.panels[ 0 ] ) ); + }); + + this.load( 0 ); + } + + this._trigger( "add", null, this._ui( this.anchors[ index ], this.panels[ index ] ) ); + return this; + }, + + remove: function( index ) { + index = this._getIndex( index ); + var o = this.options, + $li = this.lis.eq( index ).remove(), + $panel = this.panels.eq( index ).remove(); + + // If selected tab was removed focus tab to the right or + // in case the last tab was removed the tab to the left. + if ( $li.hasClass( "ui-tabs-selected" ) && this.anchors.length > 1) { + this.select( index + ( index + 1 < this.anchors.length ? 1 : -1 ) ); + } + + o.disabled = $.map( + $.grep( o.disabled, function(n, i) { + return n != index; + }), + function( n, i ) { + return n >= index ? --n : n; + }); + + this._tabify(); + + this._trigger( "remove", null, this._ui( $li.find( "a" )[ 0 ], $panel[ 0 ] ) ); + return this; + }, + + enable: function( index ) { + index = this._getIndex( index ); + var o = this.options; + if ( $.inArray( index, o.disabled ) == -1 ) { + return; + } + + this.lis.eq( index ).removeClass( "ui-state-disabled" ); + o.disabled = $.grep( o.disabled, function( n, i ) { + return n != index; + }); + + this._trigger( "enable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) ); + return this; + }, + + disable: function( index ) { + index = this._getIndex( index ); + var self = this, o = this.options; + // cannot disable already selected tab + if ( index != o.selected ) { + this.lis.eq( index ).addClass( "ui-state-disabled" ); + + o.disabled.push( index ); + o.disabled.sort(); + + this._trigger( "disable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) ); + } + + return this; + }, + + select: function( index ) { + index = this._getIndex( index ); + if ( index == -1 ) { + if ( this.options.collapsible && this.options.selected != -1 ) { + index = this.options.selected; + } else { + return this; + } + } + this.anchors.eq( index ).trigger( this.options.event + ".tabs" ); + return this; + }, + + load: function( index ) { + index = this._getIndex( index ); + var self = this, + o = this.options, + a = this.anchors.eq( index )[ 0 ], + url = $.data( a, "load.tabs" ); + + this.abort(); + + // not remote or from cache + if ( !url || this.element.queue( "tabs" ).length !== 0 && $.data( a, "cache.tabs" ) ) { + this.element.dequeue( "tabs" ); + return; + } + + // load remote from here on + this.lis.eq( index ).addClass( "ui-state-processing" ); + + if ( o.spinner ) { + var span = $( "span", a ); + span.data( "label.tabs", span.html() ).html( o.spinner ); + } + + this.xhr = $.ajax( $.extend( {}, o.ajaxOptions, { + url: url, + success: function( r, s ) { + self.element.find( self._sanitizeSelector( a.hash ) ).html( r ); + + // take care of tab labels + self._cleanup(); + + if ( o.cache ) { + $.data( a, "cache.tabs", true ); + } + + self._trigger( "load", null, self._ui( self.anchors[ index ], self.panels[ index ] ) ); + try { + o.ajaxOptions.success( r, s ); + } + catch ( e ) {} + }, + error: function( xhr, s, e ) { + // take care of tab labels + self._cleanup(); + + self._trigger( "load", null, self._ui( self.anchors[ index ], self.panels[ index ] ) ); + try { + // Passing index avoid a race condition when this method is + // called after the user has selected another tab. + // Pass the anchor that initiated this request allows + // loadError to manipulate the tab content panel via $(a.hash) + o.ajaxOptions.error( xhr, s, index, a ); + } + catch ( e ) {} + } + } ) ); + + // last, so that load event is fired before show... + self.element.dequeue( "tabs" ); + + return this; + }, + + abort: function() { + // stop possibly running animations + this.element.queue( [] ); + this.panels.stop( false, true ); + + // "tabs" queue must not contain more than two elements, + // which are the callbacks for the latest clicked tab... + this.element.queue( "tabs", this.element.queue( "tabs" ).splice( -2, 2 ) ); + + // terminate pending requests from other tabs + if ( this.xhr ) { + this.xhr.abort(); + delete this.xhr; + } + + // take care of tab labels + this._cleanup(); + return this; + }, + + url: function( index, url ) { + this.anchors.eq( index ).removeData( "cache.tabs" ).data( "load.tabs", url ); + return this; + }, + + length: function() { + return this.anchors.length; + } +}); + +$.extend( $.ui.tabs, { + version: "1.8.22" +}); + +/* + * Tabs Extensions + */ + +/* + * Rotate + */ +$.extend( $.ui.tabs.prototype, { + rotation: null, + rotate: function( ms, continuing ) { + var self = this, + o = this.options; + + var rotate = self._rotate || ( self._rotate = function( e ) { + clearTimeout( self.rotation ); + self.rotation = setTimeout(function() { + var t = o.selected; + self.select( ++t < self.anchors.length ? t : 0 ); + }, ms ); + + if ( e ) { + e.stopPropagation(); + } + }); + + var stop = self._unrotate || ( self._unrotate = !continuing + ? function(e) { + if (e.clientX) { // in case of a true click + self.rotate(null); + } + } + : function( e ) { + rotate(); + }); + + // start rotation + if ( ms ) { + this.element.bind( "tabsshow", rotate ); + this.anchors.bind( o.event + ".tabs", stop ); + rotate(); + // stop rotation + } else { + clearTimeout( self.rotation ); + this.element.unbind( "tabsshow", rotate ); + this.anchors.unbind( o.event + ".tabs", stop ); + delete this._rotate; + delete this._unrotate; + } + + return this; + } +}); + +})( jQuery ); diff --git a/extensions/themes/silverblue/scripts/libraries/jquery-ui.js b/extensions/themes/silverblue/scripts/libraries/jquery-ui.js deleted file mode 100644 index a6ae8abff..000000000 --- a/extensions/themes/silverblue/scripts/libraries/jquery-ui.js +++ /dev/null @@ -1,781 +0,0 @@ -/*! - * jQuery UI 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.8",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106, -NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this, -"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position"); -if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f, -"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h, -d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}}); -c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a); -return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;a.target==this._mouseDownEvent.target&&c.data(a.target,this.widgetName+".preventClickEvent", -true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); -;/* - * jQuery UI Position 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Position - */ -(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, -left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= -k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-= -m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= -d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= -a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), -g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); -;/* - * jQuery UI Draggable 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Draggables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== -"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= -this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top- -this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions(); -d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis|| -this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode)return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element, -b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this== -a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]|| -0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], -this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top- -(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment== -"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"? -0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"), -10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor== -Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop(): -f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY; -if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.leftthis.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/ -b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?e:!(e-this.offset.click.left').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})}, -stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!= -document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= -i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), -top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= -this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", -nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== -String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); -this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; -if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), -d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset= -this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: -this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", -b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height; -f={width:c.size.width-(f?0:c.sizeDiff.width),height:c.size.height-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", -b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top= -a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidthb.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, -k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ -a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this, -arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable, -{version:"1.8.8"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize, -function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n= -(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition= -false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left- -a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize", -b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top", -"Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset, -f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left= -a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+ -a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&& -e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative", -height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width= -d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery); -;/* - * jQuery UI Selectable 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), -selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
        ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, -c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", -c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= -this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable"); -this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this, -arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem= -c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset, -{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment(); -if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start", -a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); -if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a, -c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]== -document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp();this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate", -null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem): -d(this.domPosition.parent).prepend(this.currentItem);return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute|| -"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")}, -_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!= -this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a= -this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable"); -if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h= -0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width= -this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f}, -update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b= -null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this)); -this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])? -g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive", -g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over= -0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); -a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); -if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", -function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("").addClass("ui-icon "+ -a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex"); -this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); -b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); -a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ -c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; -if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); -if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(), -e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight|| -e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false", -tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.8",animations:{slide:function(a,b){a=c.extend({easing:"swing", -duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0, -overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show", -paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); -;/* - * jQuery UI Autocomplete 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.position.js - */ -(function(d){d.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,f;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){f=false;var e=d.ui.keyCode; -switch(c.keyCode){case e.PAGE_UP:a._move("previousPage",c);break;case e.PAGE_DOWN:a._move("nextPage",c);break;case e.UP:a._move("previous",c);c.preventDefault();break;case e.DOWN:a._move("next",c);c.preventDefault();break;case e.ENTER:case e.NUMPAD_ENTER:if(a.menu.active){f=true;c.preventDefault()}case e.TAB:if(!a.menu.active)return;a.menu.select(c);break;case e.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem= -null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(f){f=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=d("
          ").addClass("ui-autocomplete").appendTo(d(this.options.appendTo|| -"body",b)[0]).mousedown(function(c){var e=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(g){g.target!==a.element[0]&&g.target!==e&&!d.ui.contains(e,g.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,e){e=e.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:e})&&/^key/.test(c.originalEvent.type)&&a.element.val(e.value)},selected:function(c,e){var g=e.item.data("item.autocomplete"), -h=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=h;setTimeout(function(){a.previous=h;a.selectedItem=g},1)}false!==a._trigger("select",c,{item:g})&&a.element.val(g.value);a.term=a.element.val();a.close(c);a.selectedItem=g},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); -this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&&b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,f;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,e){e(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source=== -"string"){f=this.options.source;this.source=function(c,e){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:f,data:c,dataType:"json",success:function(g,h,i){i===a.xhr&&e(g);a.xhr=null},error:function(g){g===a.xhr&&e([]);a.xhr=null}})}}else this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length
        • ").data("item.autocomplete",b).append(d("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b); -else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,b){var f=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return f.test(c.label||c.value||c)})}})})(jQuery); -(function(d){d.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(b){if(d(b.target).closest(".ui-menu-item a").length){b.preventDefault();a.select(b)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", --1).mouseenter(function(b){a.activate(b,d(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var f=b.offset().top-this.element.offset().top,c=this.element.attr("scrollTop"),e=this.element.height();if(f<0)this.element.attr("scrollTop",c+f);else f>=e&&this.element.attr("scrollTop",c+f-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:b})}, -deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,f){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0); -a.length?this.activate(f,a):this.activate(f,this.element.children(b))}else this.activate(f,this.element.children(b))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var b=this.active.offset().top,f=this.element.height(),c=this.element.children(".ui-menu-item").filter(function(){var e=d(this).offset().top-b-f+d(this).height();return e<10&&e>-10});c.length||(c=this.element.children(".ui-menu-item:last"));this.activate(a, -c)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(".ui-menu-item:last"));else{var b=this.active.offset().top,f=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-b+f-d(this).height();return c<10&&c>-10});result.length||(result=this.element.children(".ui-menu-item:first")); -this.activate(a,result)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary"); -this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, -destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); -;/* - * jQuery UI Dialog 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.button.js - * jquery.ui.draggable.js - * jquery.ui.mouse.js - * jquery.ui.position.js - * jquery.ui.resizable.js - */ -(function(c,j){var k={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},l={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&& -c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
          ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex", --1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
          ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role", -"button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose= -b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&& -a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0]){e=c(this).css("z-index"); -isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ); -d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===f[0]&&e.shiftKey){g.focus(1);return false}}}); -c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
          ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
          ").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(f, -h){h=c.isFunction(h)?{click:h,text:f}:h;f=c('').attr(h,true).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&f.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g= -d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize, -position:f.position,size:f.size}}a=a===j?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f, -h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length=== -1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);if(g in k)e=true;if(g in -l)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled"); -break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=this.options,b,d,e= -this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-b,0));this.uiDialog.is(":data(resizable)")&& -this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.8",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length=== -0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), -height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); -b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a");if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}else this.range=d("
          ");this.range.appendTo(this.element).addClass("ui-slider-range");if(a.range==="min"||a.range==="max")this.range.addClass("ui-slider-range-"+a.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("").appendTo(this.element).addClass("ui-slider-handle"); -if(a.values&&a.values.length)for(;d(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur(); -else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!b.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e= -false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");h=b._start(c,f);if(h===false)return}break}i=b.options.step;h=b.options.values&&b.options.values.length?(g=b.values(f)):(g=b.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=b._valueMin();break;case d.ui.keyCode.END:g=b._valueMax();break;case d.ui.keyCode.PAGE_UP:g=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h=== -b._valueMax())return;g=b._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===b._valueMin())return;g=b._trimAlignValue(h-i);break}b._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(c,e);b._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"); -this._mouseDestroy();return this},_mouseCapture:function(b){var a=this.options,c,e,f,h,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(a.range===true&&this.values(1)===a.min){g+=1;f=d(this.handles[g])}if(this._start(b, -g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();a=f.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-f.width()/2,top:b.pageY-a.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true}, -_mouseDrag:function(b){var a=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a; -if(this.orientation==="horizontal"){a=this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value= -this.values(a);c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var e;if(this.options.values&&this.options.values.length){e=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>e||a===1&&c1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max}, -_refreshValue:function(){var b=this.options.range,a=this.options,c=this,e=!this._animateOff?a.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},a.animate); -if(k===1)c.range[e?"animate":"css"]({width:f-g+"%"},{queue:false,duration:a.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},a.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:a.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1, -1)[e?"animate":"css"]({width:f+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.8"})})(jQuery); -;/* - * jQuery UI Tabs 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
          ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
        • #{label}
        • "},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& -e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= -d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| -(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); -this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= -this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); -if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); -this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ -g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", -function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; -this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= --1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; -d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= -d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, -e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); -j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); -if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, -this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, -load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, -"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, -url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.8"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k')}function E(a,b){d.extend(a,b);for(var c in b)if(b[c]== -null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.8"}});var y=(new Date).getTime();d.extend(K.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase(); -f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('
          ')}}, -_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&& -b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f== -""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a, -c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b), -true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{}); -b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass); -this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup", -this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs, -function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null: -f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true}, -_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos= -d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b, -c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&& -d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a));var e=a.dpDiv.find("iframe.ui-datepicker-cover");e.length&&e.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout", -function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!= --1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a, -"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus();if(a.yearshtml){var f=a.yearshtml;setTimeout(function(){f===a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);f=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]}, -_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e- -g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]? -b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, -_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"): -0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear= -false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay= -d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a); -else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b= -a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;for(var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames, -j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=z+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}w=this._daylightSavingAdjust(new Date(c,j-1,l));if(w.getFullYear()!=c||w.getMonth()+1!=j||w.getDate()!=l)throw"Invalid date";return w},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y", -RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay= -a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(), -b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n= -this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+r+"":f?"":''+r+"";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
          '+(c?h:"")+(this._isInRange(a,r)?'":"")+(c?"":h)+"
          ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z= -this._get(a,"monthNames"),w=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),v=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var L=this._getDefaultDate(a),I="",C=0;C1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]- -1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='
          '+(/all|left/.test(t)&&C==0?c?f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,C>0||D>0,z,w)+'
          ';var A=j?'":"";for(t=0;t<7;t++){var q= -(t+h)%7;A+="=5?' class="ui-datepicker-week-end"':"")+'>'+s[q]+""}x+=A+"";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O";var P=!j?"":'";for(t=0;t<7;t++){var F= -p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,J=B&&!H||!F[0]||k&&qo;P+='";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+= -P+""}g++;if(g>11){g=0;m++}x+="
          '+this._get(a,"weekHeader")+"
          '+this._get(a,"calculateWeek")(q)+""+(B&&!v?" ":J?''+q.getDate()+"":''+q.getDate()+"")+"
          "+(l?""+(i[0]>0&&D==i[1]-1?'
          ':""):"");M+=x}I+=M}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'':"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
          ', -o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&& -l)?" ":""));a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='";if(d.browser.mozilla)k+='";else{k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
          ";return k},_adjustInstDate:function(a,b,c){var e= -a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a, -"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); -c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, -"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= -function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b)); -return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new K;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.8";window["DP_jQuery_"+y]=d})(jQuery); -;/* - * jQuery UI Progressbar 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
          ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); -this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* -this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.8"})})(jQuery); -;/* - * jQuery UI Effects 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/ - */ -jQuery.effects||function(f,j){function n(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], -16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return o.transparent;return o[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return n(b)}function p(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, -a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function q(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= -a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function m(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", -"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=n(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var o={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, -0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, -211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},r=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, -d){if(f.isFunction(b)){d=b;b=null}return this.queue("fx",function(){var e=f(this),g=e.attr("style")||" ",h=q(p.call(this)),l,v=e.attr("className");f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});l=q(p.call(this));e.attr("className",v);e.animate(u(h,l),a,b,function(){f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)});h=f.queue(this);l=h.splice(h.length-1,1)[0]; -h.splice(1,0,l);f.dequeue(this)})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c, -a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.8",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent", -border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c); -return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments); -else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c), -b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c, -a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c, -a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a== -e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ -e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); -;/* - * jQuery UI Effects Fade 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fade - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Fold 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fold - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], -10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); -;/* - * jQuery UI Effects Highlight 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Highlight - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& -this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Pulsate 1.8.8 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Pulsate - * - * Depends: - * jquery.effects.core.js - */ -(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); -b.dequeue()})})}})(jQuery); -; \ No newline at end of file diff --git a/extensions/themes/silverblue/styles/jquery-ui.css b/extensions/themes/silverblue/styles/jquery-ui.css index c4de7363a..057ae9f35 100644 --- a/extensions/themes/silverblue/styles/jquery-ui.css +++ b/extensions/themes/silverblue/styles/jquery-ui.css @@ -1,24 +1,16 @@ -/* - * jQuery UI CSS Framework 1.8.7 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ +/*! jQuery UI - v1.8.22 - 2012-07-24 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.tabs.css, jquery.ui.theme.css +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ +.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; } +.ui-helper-clearfix:after { clear: both; } +.ui-helper-clearfix { zoom: 1; } .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } @@ -40,62 +32,229 @@ /* Overlays */ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; } + +.ui-autocomplete { position: absolute; cursor: default; } + +/* workarounds */ +* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ /* - * jQuery UI CSS Framework 1.8.7 + * jQuery UI Menu 1.8.22 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=sans-serif&fwDefault=normal&fsDefault=1em&cornerRadius=0px&bgColorHeader=dddddd&bgTextureHeader=01_flat.png&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=000000&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=100&borderColorContent=cccccc&fcContent=333333&iconColorContent=222222&bgColorDefault=dfdfdf&bgTextureDefault=01_flat.png&bgImgOpacityDefault=75&borderColorDefault=999999&fcDefault=333333&iconColorDefault=333333&bgColorHover=eff9ff&bgTextureHover=01_flat.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=333333&iconColorHover=000000&bgColorActive=f2f2f2&bgTextureActive=01_flat.png&bgImgOpacityActive=65&borderColorActive=666666&fcActive=333333&iconColorActive=333333&bgColorHighlight=f9f9f9&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=eeeeee&fcHighlight=333333&iconColorHighlight=2e83ff&bgColorError=ffbbbb&bgTextureError=01_flat.png&bgImgOpacityError=95&borderColorError=eeaaaa&fcError=000000&iconColorError=cd0a0a&bgColorOverlay=ffffff&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=50&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=50&thicknessShadow=10px&offsetTopShadow=-10px&offsetLeftShadow=-10px&cornerRadiusShadow=10px + * http://docs.jquery.com/UI/Menu#theming */ +.ui-menu { + list-style:none; + padding: 2px; + margin: 0; + display:block; + float: left; +} +.ui-menu .ui-menu { + margin-top: -3px; +} +.ui-menu .ui-menu-item { + margin:0; + padding: 0; + zoom: 1; + float: left; + clear: left; + width: 100%; +} +.ui-menu .ui-menu-item a { + text-decoration:none; + display:block; + padding:.2em .4em; + line-height:1.5; + zoom:1; +} +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} + +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1.4; } +.ui-button-text-only .ui-button-text { padding: .4em 1em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ + +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +} +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } + +.ui-progressbar { height:2em; text-align: left; overflow: hidden; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; } +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;} +.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } + +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; } +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } /* Component containers ----------------------------------*/ -.ui-widget { font-family: sans-serif; font-size: 0.8em; background-color: #fff; color:#333; } -.window .ui-widget { font-size:1em; } +.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; } .ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #cccccc; background-color:#fff; color: #333333; } -.ui-widget-content a { color: #07c; position:relative; } -.ui-widget-header -{ - border: 1px solid #cccccc; - background: url(../images/layout-windowtitle-gradient.png) repeat-x center #ddd; - color: #000000; - font-weight: bold; -} -.ui-widget-content .ui-widget-header -{ - width:100%; - position:relative; left:-0.2em; top:-0.2em; - border-style:none none solid none; - padding:0.3em 0.2em 0.2em 0.2em !important; - line-height:1; -} -.ui-widget-header a { color: #000000; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } +.ui-widget-content a { color: #222222/*{fcContent}*/; } +.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; } +.ui-widget-header a { color: #222222/*{fcHeader}*/; } /* Interaction states ----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #999999; background: #dfdfdf /*url(images/ui-bg_flat_75_dfdfdf_40x100.png) 50% 50% repeat-x*/; font-weight: normal; color: #333333; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #333333; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background-color: #eff9ff /*url(images/ui-bg_flat_75_eff9ff_40x100.png) 50% 50% repeat-x*/; font-weight: normal; color: #333333; } -.ui-state-hover a, .ui-state-hover a:hover { color: #333333; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #666666; background: #f2f2f2 /*url(images/ui-bg_flat_65_f2f2f2_40x100.png) 50% 50% repeat-x*/; font-weight: normal; color: #333333; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #333333; text-decoration: none; } +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; } +.ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; } .ui-widget :active { outline: none; } /* Interaction Cues ----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #eeeeee; background: #f9f9f9 /*url(images/ui-bg_flat_55_f9f9f9_40x100.png) 50% 50% repeat-x*/; color: #333333; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #eeaaaa; background: #ffbbbb /*url(images/ui-bg_flat_95_ffbbbb_40x100.png) 50% 50% repeat-x*/; color: #000000; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #000000; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #000000; } +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } @@ -104,15 +263,14 @@ ----------------------------------*/ /* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images-jqueryui/ui-icons_333333_256x240.png); } -.ui-dialog-titlebar .ui-icon {background-image: url(images-jqueryui/ui-icons_ffffff_256x240.png); } -/*.ui-widget-content .ui-icon {background-image: url(images-jqueryui/ui-icons_222222_256x240.png); } -.ui-widget-header .ui-icon {background-image: url(images-jqueryui/ui-icons_222222_256x240.png); } -.ui-state-default .ui-icon { background-image: url(images-jqueryui/ui-icons_333333_256x240.png); }*/ -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images-jqueryui/ui-icons_000000_256x240.png); } -/*.ui-state-active .ui-icon {background-image: url(images-jqueryui/ui-icons_333333_256x240.png); }*/ -/*.ui-state-highlight .ui-icon {background-image: url(images-jqueryui/ui-icons_2e83ff_256x240.png); }*/ -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images-jqueryui/ui-icons_cd0a0a_256x240.png); } +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; } /* positioning */ .ui-icon-carat-1-n { background-position: 0 0; } @@ -296,338 +454,11 @@ ----------------------------------*/ /* Corner radius */ -.ui-corner-tl { -moz-border-radius-topleft: 0px; -webkit-border-top-left-radius: 0px; border-top-left-radius: 0px; } -.ui-corner-tr { -moz-border-radius-topright: 0px; -webkit-border-top-right-radius: 0px; border-top-right-radius: 0px; } -.ui-corner-bl { -moz-border-radius-bottomleft: 0px; -webkit-border-bottom-left-radius: 0px; border-bottom-left-radius: 0px; } -.ui-corner-br { -moz-border-radius-bottomright: 0px; -webkit-border-bottom-right-radius: 0px; border-bottom-right-radius: 0px; } -.ui-corner-top { -moz-border-radius-topleft: 0px; -webkit-border-top-left-radius: 0px; border-top-left-radius: 0px; -moz-border-radius-topright: 0px; -webkit-border-top-right-radius: 0px; border-top-right-radius: 0px; } -.ui-corner-bottom { -moz-border-radius-bottomleft: 0px; -webkit-border-bottom-left-radius: 0px; border-bottom-left-radius: 0px; -moz-border-radius-bottomright: 0px; -webkit-border-bottom-right-radius: 0px; border-bottom-right-radius: 0px; } -.ui-corner-right { -moz-border-radius-topright: 0px; -webkit-border-top-right-radius: 0px; border-top-right-radius: 0px; -moz-border-radius-bottomright: 0px; -webkit-border-bottom-right-radius: 0px; border-bottom-right-radius: 0px; } -.ui-corner-left { -moz-border-radius-topleft: 0px; -webkit-border-top-left-radius: 0px; border-top-left-radius: 0px; -moz-border-radius-bottomleft: 0px; -webkit-border-bottom-left-radius: 0px; border-bottom-left-radius: 0px; } -.ui-corner-all { -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; } +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; } /* Overlays */ -.ui-widget-overlay { background: #ffffff /*url(images/ui-bg_flat_0_ffffff_40x100.png) 50% 50% repeat-x*/; opacity: .50;filter:Alpha(Opacity=50); } -.ui-widget-shadow { margin: -10px 0 0 -10px; padding: 10px; background: #cccccc /*url(images/ui-bg_flat_0_cccccc_40x100.png) 50% 50% repeat-x*/; opacity: .50;filter:Alpha(Opacity=50); -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; }/* - * jQuery UI Resizable 1.8.7 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Resizable#theming - */ -.ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} -.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } -.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } -.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } -.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } -.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } -.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } -.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } -.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } -.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* - * jQuery UI Selectable 1.8.7 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectable#theming - */ -.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } -/* - * jQuery UI Accordion 1.8.7 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Accordion#theming - */ -/* IE/Win - Fix animation bug - #4615 */ -.ui-accordion { width: 100%; overflow:hidden;} -.ui-accordion .ui-accordion-header -{ - font-size: 1em; - padding:0.3em 0.5em 0.2em; - cursor: pointer; position: relative; margin:0.2em 0 0 0; zoom: 1; - border: 1px solid #cccccc; - background: url(../images/layout-windowtitle-gradient.png) repeat-x center #ddd; - color: #000000; - font-weight: bold; -} -.ui-accordion .ui-accordion-li-fix { display: inline; } -.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } -.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } -.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } -.ui-accordion-icons .ui-accordion-header { padding-left: 2.2em; } -.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } -.ui-accordion .ui-accordion-content { padding: 0.5em; border-top: 0; margin: -1px 0 0.2em 0; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } -.ui-accordion .ui-accordion-content-active { display: block; }/* - * jQuery UI Autocomplete 1.8.7 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete#theming - */ -.ui-autocomplete { position: absolute; cursor: default; } -.ui-autocomplete a { color:#333; overflow:hidden; border-top:dotted 1px #666; margin-top:0 !important; } -.ui-autocomplete .ui-menu-item:first-child a { border-top:none; margin-top:1px !important; } -.ui-autocomplete .ui-menu-item:first-child a.ui-state-hover, -.ui-autocomplete .ui-menu-item:first-child a.ui-state-active { border-top:solid 1px #999; margin-top:0 !important; } -.ui-autocomplete a span.resource-edit-source { float:right; font-size:0.8em; color:#666; margin-top:0.25em;} -.ui-autocomplete a span.resource-edit-label { color:#000; } -.ui-autocomplete a span.resource-edit-uri { display:block; clear:both; font-family: monospace; font-size: 0.8em; color:#666; width:30em;} - -/* workarounds */ -* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ - -/* - * jQuery UI Menu 1.8.7 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Menu#theming - */ -.ui-menu { - list-style:none; - padding: 2px; - margin: 0; - display:block; - float: left; -} -.ui-menu .ui-menu { - margin-top: -3px; -} -.ui-menu .ui-menu-item { - margin:0; - padding: 0; - zoom: 1; - float: left; - clear: left; - width: 100%; -} -.ui-menu .ui-menu-item a { - text-decoration:none; - display:block; - padding:.2em .4em; - line-height:1.5; - zoom:1; -} -.ui-menu .ui-menu-item a.ui-state-hover, -.ui-menu .ui-menu-item a.ui-state-active { - font-weight: normal; - margin: -1px; -} -/* - * jQuery UI Button 1.8.7 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Button#theming - */ -.ui-button -{ - /* this is tweaked in defaul.css @3.1. */ - display: inline-block; - position: relative; - padding: 0 !important; margin-right: .1em; - text-decoration: none !important; - cursor: pointer; - text-align: center; - zoom: 1; - overflow: visible; -} /* the overflow property removes extra width in IE */ -.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ -button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ -.ui-button-icons-only { width: 3.4em; } -button.ui-button-icons-only { width: 3.7em; } - -/*button text element */ -.ui-button .ui-button-text { display: block; line-height: 1.4; } -.ui-button-text-only .ui-button-text, input.ui-button { padding: .4em 1em !important; } -.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } -.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } -.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } -.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } -/* no icon support for input elements, provide padding by default */ -input.ui-button { padding: .4em 1em; } - -/*button icon element(s) */ -.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } -.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } -.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } -.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } -.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } - -/*button sets*/ -.ui-buttonset { margin-right: 7px; } -.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } - -/* workarounds */ -button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ -/* - * jQuery UI Dialog 1.8.7 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog#theming - */ -.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0.3em; } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } -.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } - -.ui-widget-content.ui-dialog { border-color:#666; } -.ui-widget-header.ui-dialog-titlebar { color:#fff; background-color:#999; border-color:#666; } - -/* - * jQuery UI Slider 1.8.7 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Slider#theming - */ -.ui-slider { position: relative; text-align: left; } -.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } -.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } - -.ui-slider-horizontal { height: .8em; margin:0 0.6em;} -.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } -.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } -.ui-slider-horizontal .ui-slider-range-min { left: 0; } -.ui-slider-horizontal .ui-slider-range-max { right: 0; } - -.ui-slider-vertical { width: .8em; height: 100px; } -.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } -.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } -.ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; } - -/* - * jQuery UI Tabs 1.8.7 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs#theming - */ -.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ -.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0 !important; background:#f3f3f3; border-color:#666; } -.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } -.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } -.ui-tabs .ui-tabs-nav li.ui-state-default -{ - background-image:url("./../images/layout-tab-gradient.png"); - background-repeat: repeat-x; - background-position: left bottom; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-selected -{ - background:url("./../images/layout-tabactive-gradient.png") repeat-x right top #fff; - font-weight:bold; -} -.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ -.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 0.5em; background: none; } -.ui-tabs .ui-tabs-hide { display: none !important; } -/* - * jQuery UI Datepicker 1.8.7 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Datepicker#theming - */ -.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } -.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } -.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } -.ui-datepicker .ui-datepicker-prev { left:2px; } -.ui-datepicker .ui-datepicker-next { right:2px; } -.ui-datepicker .ui-datepicker-prev-hover { left:1px; } -.ui-datepicker .ui-datepicker-next-hover { right:1px; } -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } -.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } -.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } -.ui-datepicker select.ui-datepicker-month-year {width: 100%;} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { width: 49%;} -.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } -.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } -.ui-datepicker td { border: 0; padding: 1px; } -.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } -.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } -.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { width:auto; } -.ui-datepicker-multi .ui-datepicker-group { float:left; } -.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } -.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } -.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } -.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; } - -/* RTL support */ -.ui-datepicker-rtl { direction: rtl; } -.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } -.ui-datepicker-rtl .ui-datepicker-group { float:right; } -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } - -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ -.ui-datepicker-cover { - display: none; /*sorry for IE5*/ - display/**/: block; /*sorry for IE5*/ - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ -}/* - * jQuery UI Progressbar 1.8.7 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar#theming - */ -.ui-progressbar { height:1.5em; text-align: left; } -.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; padding:0 !important; position:static; border-style:solid; } \ No newline at end of file +.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } +.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; } \ No newline at end of file From 21ba5d45a9c929a74bc29c9e73cf334600993a0f Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 8 Mar 2016 13:47:07 +0100 Subject: [PATCH 103/156] Update jquery ui icons --- .../ui-icons_ffffff_256x240.png | Bin 1883 -> 0 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../ui-icons_222222_256x240.png | Bin 4369 -> 4369 bytes .../ui-icons_2e83ff_256x240.png | Bin 4369 -> 4369 bytes .../ui-icons_454545_256x240.png} | Bin 4369 -> 4369 bytes .../ui-icons_888888_256x240.png} | Bin 4369 -> 4369 bytes .../ui-icons_cd0a0a_256x240.png | Bin 4369 -> 4369 bytes 14 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 extensions/themes/silverblue/styles/images-jqueryui/ui-icons_ffffff_256x240.png create mode 100644 extensions/themes/silverblue/styles/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 extensions/themes/silverblue/styles/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 extensions/themes/silverblue/styles/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 extensions/themes/silverblue/styles/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 extensions/themes/silverblue/styles/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 extensions/themes/silverblue/styles/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 extensions/themes/silverblue/styles/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 extensions/themes/silverblue/styles/images/ui-bg_highlight-soft_75_cccccc_1x100.png rename extensions/themes/silverblue/styles/{images-jqueryui => images}/ui-icons_222222_256x240.png (91%) rename extensions/themes/silverblue/styles/{images-jqueryui => images}/ui-icons_2e83ff_256x240.png (91%) rename extensions/themes/silverblue/styles/{images-jqueryui/ui-icons_000000_256x240.png => images/ui-icons_454545_256x240.png} (91%) rename extensions/themes/silverblue/styles/{images-jqueryui/ui-icons_333333_256x240.png => images/ui-icons_888888_256x240.png} (91%) rename extensions/themes/silverblue/styles/{images-jqueryui => images}/ui-icons_cd0a0a_256x240.png (91%) diff --git a/extensions/themes/silverblue/styles/images-jqueryui/ui-icons_ffffff_256x240.png b/extensions/themes/silverblue/styles/images-jqueryui/ui-icons_ffffff_256x240.png deleted file mode 100644 index 2017634398f6c12e60d17bf88705228f19afdab8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1883 zcmV-h2c-CkP)Px#22e~?MF7B{`~CYf^9IN(2EfWd*lz<~_|4F@b}7$~ry zfx-Ts98cnoW6y!ByGll?*ly{kr}y+e)gk&HwEW1tDE19*e`G{zDzn;TREV64FjYi_ zD#J9K?f_IC6@;#)ibSqTqE@;C2zh!+g(wtpCyL`8Kx@kDK?SQpfx@�S!C=Kp@Xl zrZpbwQi!4^#eaNIFS+fU!qJWm%+k>P>JRFtcXFKc{?8g4Ls7*k#n2PSlScjAc{E)yl3b`bN zkPy$pVmzZp2Jg<`kGaewyMIp0AZakAgjH9Jonw2OT6#!Tb zDsrhv;3JaVP?zH2w-@ziyVLvDdGhby4h~6C zc{djM0nHByKSB93nRFOx1*_X&fU+I~W)g;il`c#Tp2Y%yg12xq?J%GWK>-shQ=Nj6 zSw$t(jj*vYF3LpSD2!_$@}K6W5|}hARd|5PjYDK9BYY#6=Iumj+7~U<4yF*3AcLpccUI>Q08niaImIrY1&A@i z23C{4x@XcN+c<;0!J2Di;KAx7c#u?VGp8v`m%~uP1q-t&lLzS}VzD-g1`m=mSNxeQH~A3mf@R=>>*d z9CvRK88nK66<(^^5! zV&aZ1R~#`q&opaHIY#W1N`9c&=5gVIB!mfY*=D?d;3QF$d4NpJTzu0O=ZS&=eiod3 zJkiv0TR=2}xxi1GaK5H{{l}}IGXS8uVsA!TsQ9QEU`lOItFC?n3W2861@C4Yj02a_ zhHIsw@PI$M|29<+lS#J#rf|x2B`BQ0$hv5C9w>;DU<24%_ZWpwbqV~dRyv9M{>LZ_iBlYO0U&Iw8tBDzs zN_V`Xs9nWy1x@2j#x1R5elvx`UewM}rDthtZnU1O5*AwYFLwb>rTs6TD|6H208j#O zb%25gTpr+oBVLV%T`8d1;@E{UdzR`J#{tn{x!Vbx9}#}j_W*uL5gY8b?E%DTl+wiN zxB8uacfJ>ZBH}QBzKO}fEy8m#Ilv_1%6VgQD9#qoLEW54pXzs^`02j6>s3#84;WpH z*Pp+P*5mc~g8xPrqc#49qv80^?|?y%KQVkU9*!=C>)~+tW!M}4%L4|zL2n2=J}-tt zhVsbof1>wx0BC-SJE(xdV7Rk|-(WpvAT}Ee2Uu``$(Tnh#5{UXN00i2G%lvL zeJ>!e+z$a3{_;4BTzI_~&{#EA!6Hn7
          N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/extensions/themes/silverblue/styles/images/ui-bg_flat_75_ffffff_40x100.png b/extensions/themes/silverblue/styles/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= literal 0 HcmV?d00001 diff --git a/extensions/themes/silverblue/styles/images/ui-bg_glass_55_fbf9ee_1x400.png b/extensions/themes/silverblue/styles/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3d6346e00f246102f72f2e026ed0491988b394 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hLi978O6-<~(*I$*%ybaDOn z{W;e!B}_MSUQoPXhYd^Y6RUoS1yepnPx`2Kz)7OXQG!!=-jY=F+d2OOy?#DnJ32>z UEim$g7SJdLPgg&ebxsLQ09~*s;{X5v literal 0 HcmV?d00001 diff --git a/extensions/themes/silverblue/styles/images/ui-bg_glass_65_ffffff_1x400.png b/extensions/themes/silverblue/styles/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/extensions/themes/silverblue/styles/images/ui-bg_glass_75_dadada_1x400.png b/extensions/themes/silverblue/styles/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..5a46b47cb16631068aee9e0bd61269fc4e95e5cd GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq|7{B978O6lPf+wIa#m9#>Unb zm^4K~wN3Zq+uP{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse literal 0 HcmV?d00001 diff --git a/extensions/themes/silverblue/styles/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/extensions/themes/silverblue/styles/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l#Zv1V~E7m~OP&FYM=_yM*_j$Z%( delta 267 ucmbQJG*M}SX1z|+pMga6^tJx)1A|{lkY6x^gn$vtW_89_`~ZR%I9mV! diff --git a/extensions/themes/silverblue/styles/images-jqueryui/ui-icons_cd0a0a_256x240.png b/extensions/themes/silverblue/styles/images/ui-icons_cd0a0a_256x240.png similarity index 91% rename from extensions/themes/silverblue/styles/images-jqueryui/ui-icons_cd0a0a_256x240.png rename to extensions/themes/silverblue/styles/images/ui-icons_cd0a0a_256x240.png index 2ab019b73ec11a485fa09378f3a0e155194f6a5d..7930a558099bc8d92b4264eb67a0f040460f4a4f 100644 GIT binary patch delta 267 ucmbQJG*M}SX8l<%u7O1L^tJw#`HVjd3=DoHL4Lsu5&}jno7EX#@dE(v+)pV0 delta 267 tcmbQJG*M}SX8jp1o`FR5^tJvqpIb5m1A|{lkY6x^gn$vtW_89_`~U=?PGtZ9 From 115fe9dd96ad0492f01ced23f0c8fa93c663df3e Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Tue, 8 Mar 2016 14:11:44 +0100 Subject: [PATCH 104/156] Add update instructions to README and update composer signature --- Makefile | 2 +- README.md | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 61ee42edc..e50b4a382 100644 --- a/Makefile +++ b/Makefile @@ -46,7 +46,7 @@ help-test: getcomposer: #seems that there is no way to constantly get the newest version(install way outdates with new versions) php -r "readfile('https://getcomposer.org/installer');" > composer-setup.php - php -r "if (hash('SHA384', file_get_contents('composer-setup.php')) === 'fd26ce67e3b237fffd5e5544b45b0d92c41a4afe3e3f778e942e43ce6be197b9cdc7c251dcde6e2a52297ea269370680') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); }" + php -r "if (hash('SHA384', file_get_contents('composer-setup.php')) === '41e71d86b40f28e771d4bb662b997f79625196afcca95a5abf44391188c695c6c1456e16154c75a211d238cc3bc5cb47') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); }" php composer-setup.php php -r "unlink('composer-setup.php');" php composer.phar self-update diff --git a/README.md b/README.md index cb38a163d..349fbece1 100644 --- a/README.md +++ b/README.md @@ -19,9 +19,12 @@ Other remarkable features are: * OntoWiki is backend independent, which means you can save your data on a MySQL database as well as on a Virtuoso Triple Store. * OntoWiki is easily extendible by you, since it features a sophisticated Extension System. -## Installation +## Installation/Update -For an installation guide have a look at our [wiki](https://github.com/AKSW/OntoWiki/wiki/GetOntowikiUsers). +If you are updating OntoWiki, please don't forget to run `make deploy`. +If `make deploy` fails, you might also have to run `make getcomposer` once before run `make deploy` again. + +For further installation instructions please have a look at our [wiki](https://github.com/AKSW/OntoWiki/wiki/GetOntowikiUsers) (might be outdated in some parts). ## Screenshot / Webinar Below is a screenshot showing OntoWiki in editing mode. From 5115bdb429b7590801eea1c775ada1a57c5de945 Mon Sep 17 00:00:00 2001 From: shinobu Date: Thu, 24 Mar 2016 19:57:54 +0100 Subject: [PATCH 105/156] added test makefile for new composer download --- Makefile.tmp | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 Makefile.tmp diff --git a/Makefile.tmp b/Makefile.tmp new file mode 100644 index 000000000..8cc8d0161 --- /dev/null +++ b/Makefile.tmp @@ -0,0 +1,157 @@ +PHPUNIT = ./vendor/bin/phpunit +PHPCS = ./vendor/bin/phpcs +PHPCBF = ./vendor/bin/phpcbf +COMPOSER = $(shell which composer) +ifeq (,$(findstring composer,$(TEST))) +ifneq ($(wildcard composer.phar),) +COMPOSER = php composer.phar +else +COMPOSER = null +endif +endif +default: + @echo "Typical targets your could want to reach:" + @echo "" + @echo "--> make deploy ............... Install OntoWiki <-- in doubt, use this" + @echo " (use this for server installations)" + @echo "" + @echo " make install .............. Install OntoWiki for developer" + @echo " (you will need github access and ssh for this)" + @echo "" + @echo " make help ................. Show more (developer related) make targets" + @echo "" + @echo " make help-cs .............. Show help for code sniffing targets" + @echo "" + @echo " make help-test ............ Show help for test related targets" + +help: + @echo "Please use: (e.g. make deploy)" + @echo " deploy ..................... Runs everything which is needed for a deployment" + @echo " install .................... Make directories and libraries" + @echo " help ....................... This help screen" + @echo " help-cs .................... Show help for code sniffing targets" + @echo " help-test .................. Show help for test related targets" + @echo " -------------------------------------------------------------------" + @echo " vagrant .................... Prepare environment to run with Vagrant" + @echo " vagrant-clean .............. Removes owdev box in order to ensure you have the latest version" + @echo " directories ................ Create cache/log dir and chmod environment" + @echo " clean ...................... Deletes all log and cache files" + @echo " odbctest ................... Executes some tests to check the Virtuoso connection" + +help-cs: + @echo "Please use: (e.g. make codesniffer)" + @echo " codesniffer ............................ Run CodeSniffer" + @echo " codebeautifier ......................... Run CodeBeautifier" + +help-test: + @echo " test ......................... Execute unit, integration and extension tests" + @echo " test-unit .................... Run OntoWiki unit tests" + @echo " test-integration-virtuoso .... Run OntoWiki integration tests with virtuoso" + @echo " test-integration-mysql ....... Run OntoWiki integration tests with mysql" + @echo " test-extensions .............. Run tests for extensions" + +# top level target +shorttest: + @echo $(COMPOSER) + +getcomposer: #seems that there is no way to constantly get the newest version(install way outdates with new versions) +ifeq ($(COMPOSER),null) + curl -o composer.phar "https://getcomposer.org/composer.phar" + php composer.phar self-update +endif + +install: deploy + +deploy: directories clean composer-install + +vagrant: directories clean #add composer install + rm -rf libraries/Zend # vagrant has own zend + rm -f Vagrantfile + !(ls $(PWD)/application/scripts/Vagrantfile > /dev/null 2> /dev/null) || ln -s $(PWD)/application/scripts/Vagrantfile $(PWD)/Vagrantfile + (ls $(PWD)/Vagrantfile > /dev/null 2> /dev/null) || ln -s $(PWD)/application/scripts/Vagrantfile-dist $(PWD)/Vagrantfile + (ls $(HOME)/.vagrant.d/boxes/owdev > /dev/null 2> /dev/null) || vagrant box add owdev http://files.ontowiki.net/owdev.box + @echo "" + @echo '=> Now type "vagrant up"' + +vagrant-clean: + rm -f Vagrantfile + vagrant box remove owdev + +clean: + rm -rf cache/* logs/* libraries/* + +directories: clean + mkdir -p logs cache + chmod 777 logs cache extensions + +composer-install: #add difference for user and dev (with phpunit etc and without) + php composer.phar install +# test stuff + +test-directories: + rm -rf application/tests/cache application/tests/unit/cache application/tests/integration/cache + mkdir -p application/tests/cache application/tests/unit/cache application/tests/integration/cache + +test-unit: test-directories + $(PHPUNIT) --testsuite "OntoWiki Unit Tests" + +test-integration-virtuoso: test-directories + EF_STORE_ADAPTER=virtuoso $(PHPUNIT) --testsuite "OntoWiki Virtuoso Integration Tests" + +test-integration-mysql: test-directories + EF_STORE_ADAPTER=zenddb $(PHPUNIT) --testsuite "OntoWiki Virtuoso Integration Tests" + +test-extensions: #directories + $(PHPUNIT) --testsuite "OntoWiki Extensions Tests" + +test: + make test-unit + @echo "" + @echo "-----------------------------------" + @echo "" + make test-integration-virtuoso + @echo "" + @echo "-----------------------------------" + @echo "" + make test-integration-mysql + @echo "" + @echo "-----------------------------------" + @echo "" + make test-extensions + + +odbctest: + @application/scripts/odbctest.php + +# packaging + +debianize: + rm extensions/markdown/parser/License.text + rm extensions/markdown/parser/PHP_Markdown_Readme.txt + rm extensions/markdown/parser/markdown.php + rm extensions/queries/resources/codemirror/LICENSE + rm extensions/themes/silverblue/scripts/libraries/jquery-1.9.1.js + rm libraries/RDFauthor/libraries/jquery.js + rm Makefile + @echo "now do: cp -R application/scripts/debian debian" + + +# coding standard +STANDARD =application/tests/CodeSniffer/Standards/Ontowiki/ruleset.xml +# #### config #### + +# ignore pattern +IGNOREPATTERN =libraries,extensions/exconf/pclzip.lib.php,extensions/exconf/Archive.php,application/scripts,extensions/markdown/parser/markdown.php,vendor + +REQUESTSTR =-p --standard=$(STANDARD) --ignore=$(IGNOREPATTERN) --extensions=php */ + +codesniffer: + $(PHPCS) $(REQUESTSTR) + +codebeautifier: + $(PHPCBF) $(REQUESTSTR) + +# other stuff + +list-events: + @grep -R "new Erfurt_Event" * 2> /dev/null | sed "s/.*new Erfurt_Event('//;s/');.*//" | sort -u From a37994942d60ad4ababb27f981424ea06d9de8b4 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Thu, 24 Mar 2016 21:15:41 +0100 Subject: [PATCH 106/156] Fix #338. Fix Makefile.tmp and add failure text. --- Makefile | 34 +++++++++-- Makefile.tmp | 157 --------------------------------------------------- 2 files changed, 28 insertions(+), 163 deletions(-) delete mode 100644 Makefile.tmp diff --git a/Makefile b/Makefile index e50b4a382..3557ea4cb 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,17 @@ PHPUNIT = ./vendor/bin/phpunit PHPCS = ./vendor/bin/phpcs PHPCBF = ./vendor/bin/phpcbf + +# Get calid composer executable +COMPOSER = $(shell which composer) +ifeq ($(findstring composer, $(COMPOSER)), ) + ifneq ($(wildcard composer.phar), ) + COMPOSER = php composer.phar + else + COMPOSER = + endif +endif + default: @echo "Typical targets your could want to reach:" @echo "" @@ -43,12 +54,11 @@ help-test: @echo " test-extensions .............. Run tests for extensions" # top level target +shorttest: + @echo $(COMPOSER) -getcomposer: #seems that there is no way to constantly get the newest version(install way outdates with new versions) - php -r "readfile('https://getcomposer.org/installer');" > composer-setup.php - php -r "if (hash('SHA384', file_get_contents('composer-setup.php')) === '41e71d86b40f28e771d4bb662b997f79625196afcca95a5abf44391188c695c6c1456e16154c75a211d238cc3bc5cb47') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); }" - php composer-setup.php - php -r "unlink('composer-setup.php');" +getcomposer: + curl -o composer.phar "https://getcomposer.org/composer.phar" php composer.phar self-update install: deploy @@ -75,8 +85,20 @@ directories: clean mkdir -p logs cache chmod 777 logs cache extensions +ifdef COMPOSER composer-install: #add difference for user and dev (with phpunit etc and without) - php composer.phar install + $(COMPOSER) install +else +composer-install: + @echo + @echo + @echo "!!! make $@ failed !!!" + @echo + @echo "Sorry, there doesn't seem to be a PHP composer (dependency manager for PHP) on your system!" + @echo "Please have a look at http://getcomposer.org/ for further information," + @echo "or just run 'make getcomposer' to download the composer locally" + @echo "and run 'make $@' again" +endif # test stuff test-directories: diff --git a/Makefile.tmp b/Makefile.tmp deleted file mode 100644 index 8cc8d0161..000000000 --- a/Makefile.tmp +++ /dev/null @@ -1,157 +0,0 @@ -PHPUNIT = ./vendor/bin/phpunit -PHPCS = ./vendor/bin/phpcs -PHPCBF = ./vendor/bin/phpcbf -COMPOSER = $(shell which composer) -ifeq (,$(findstring composer,$(TEST))) -ifneq ($(wildcard composer.phar),) -COMPOSER = php composer.phar -else -COMPOSER = null -endif -endif -default: - @echo "Typical targets your could want to reach:" - @echo "" - @echo "--> make deploy ............... Install OntoWiki <-- in doubt, use this" - @echo " (use this for server installations)" - @echo "" - @echo " make install .............. Install OntoWiki for developer" - @echo " (you will need github access and ssh for this)" - @echo "" - @echo " make help ................. Show more (developer related) make targets" - @echo "" - @echo " make help-cs .............. Show help for code sniffing targets" - @echo "" - @echo " make help-test ............ Show help for test related targets" - -help: - @echo "Please use: (e.g. make deploy)" - @echo " deploy ..................... Runs everything which is needed for a deployment" - @echo " install .................... Make directories and libraries" - @echo " help ....................... This help screen" - @echo " help-cs .................... Show help for code sniffing targets" - @echo " help-test .................. Show help for test related targets" - @echo " -------------------------------------------------------------------" - @echo " vagrant .................... Prepare environment to run with Vagrant" - @echo " vagrant-clean .............. Removes owdev box in order to ensure you have the latest version" - @echo " directories ................ Create cache/log dir and chmod environment" - @echo " clean ...................... Deletes all log and cache files" - @echo " odbctest ................... Executes some tests to check the Virtuoso connection" - -help-cs: - @echo "Please use: (e.g. make codesniffer)" - @echo " codesniffer ............................ Run CodeSniffer" - @echo " codebeautifier ......................... Run CodeBeautifier" - -help-test: - @echo " test ......................... Execute unit, integration and extension tests" - @echo " test-unit .................... Run OntoWiki unit tests" - @echo " test-integration-virtuoso .... Run OntoWiki integration tests with virtuoso" - @echo " test-integration-mysql ....... Run OntoWiki integration tests with mysql" - @echo " test-extensions .............. Run tests for extensions" - -# top level target -shorttest: - @echo $(COMPOSER) - -getcomposer: #seems that there is no way to constantly get the newest version(install way outdates with new versions) -ifeq ($(COMPOSER),null) - curl -o composer.phar "https://getcomposer.org/composer.phar" - php composer.phar self-update -endif - -install: deploy - -deploy: directories clean composer-install - -vagrant: directories clean #add composer install - rm -rf libraries/Zend # vagrant has own zend - rm -f Vagrantfile - !(ls $(PWD)/application/scripts/Vagrantfile > /dev/null 2> /dev/null) || ln -s $(PWD)/application/scripts/Vagrantfile $(PWD)/Vagrantfile - (ls $(PWD)/Vagrantfile > /dev/null 2> /dev/null) || ln -s $(PWD)/application/scripts/Vagrantfile-dist $(PWD)/Vagrantfile - (ls $(HOME)/.vagrant.d/boxes/owdev > /dev/null 2> /dev/null) || vagrant box add owdev http://files.ontowiki.net/owdev.box - @echo "" - @echo '=> Now type "vagrant up"' - -vagrant-clean: - rm -f Vagrantfile - vagrant box remove owdev - -clean: - rm -rf cache/* logs/* libraries/* - -directories: clean - mkdir -p logs cache - chmod 777 logs cache extensions - -composer-install: #add difference for user and dev (with phpunit etc and without) - php composer.phar install -# test stuff - -test-directories: - rm -rf application/tests/cache application/tests/unit/cache application/tests/integration/cache - mkdir -p application/tests/cache application/tests/unit/cache application/tests/integration/cache - -test-unit: test-directories - $(PHPUNIT) --testsuite "OntoWiki Unit Tests" - -test-integration-virtuoso: test-directories - EF_STORE_ADAPTER=virtuoso $(PHPUNIT) --testsuite "OntoWiki Virtuoso Integration Tests" - -test-integration-mysql: test-directories - EF_STORE_ADAPTER=zenddb $(PHPUNIT) --testsuite "OntoWiki Virtuoso Integration Tests" - -test-extensions: #directories - $(PHPUNIT) --testsuite "OntoWiki Extensions Tests" - -test: - make test-unit - @echo "" - @echo "-----------------------------------" - @echo "" - make test-integration-virtuoso - @echo "" - @echo "-----------------------------------" - @echo "" - make test-integration-mysql - @echo "" - @echo "-----------------------------------" - @echo "" - make test-extensions - - -odbctest: - @application/scripts/odbctest.php - -# packaging - -debianize: - rm extensions/markdown/parser/License.text - rm extensions/markdown/parser/PHP_Markdown_Readme.txt - rm extensions/markdown/parser/markdown.php - rm extensions/queries/resources/codemirror/LICENSE - rm extensions/themes/silverblue/scripts/libraries/jquery-1.9.1.js - rm libraries/RDFauthor/libraries/jquery.js - rm Makefile - @echo "now do: cp -R application/scripts/debian debian" - - -# coding standard -STANDARD =application/tests/CodeSniffer/Standards/Ontowiki/ruleset.xml -# #### config #### - -# ignore pattern -IGNOREPATTERN =libraries,extensions/exconf/pclzip.lib.php,extensions/exconf/Archive.php,application/scripts,extensions/markdown/parser/markdown.php,vendor - -REQUESTSTR =-p --standard=$(STANDARD) --ignore=$(IGNOREPATTERN) --extensions=php */ - -codesniffer: - $(PHPCS) $(REQUESTSTR) - -codebeautifier: - $(PHPCBF) $(REQUESTSTR) - -# other stuff - -list-events: - @grep -R "new Erfurt_Event" * 2> /dev/null | sed "s/.*new Erfurt_Event('//;s/');.*//" | sort -u From bc89888b83465afea99bff2eb01dd3c390688467 Mon Sep 17 00:00:00 2001 From: shinobu Date: Thu, 24 Mar 2016 21:30:38 +0100 Subject: [PATCH 107/156] removed test target in makefile --- Makefile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Makefile b/Makefile index 3557ea4cb..387a4b826 100644 --- a/Makefile +++ b/Makefile @@ -53,9 +53,6 @@ help-test: @echo " test-integration-mysql ....... Run OntoWiki integration tests with mysql" @echo " test-extensions .............. Run tests for extensions" -# top level target -shorttest: - @echo $(COMPOSER) getcomposer: curl -o composer.phar "https://getcomposer.org/composer.phar" From 750b94f31562b71c33c74c7b12b9a23e244abd77 Mon Sep 17 00:00:00 2001 From: shinobu Date: Fri, 25 Mar 2016 16:28:12 +0100 Subject: [PATCH 108/156] added TestSniff for CodeSniffer --- .../Commenting/TypoFileCommentSniff.php | 138 ++++++++++++++++++ .../Standards/Ontowiki/ruleset.xml | 3 +- 2 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/TypoFileCommentSniff.php diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/TypoFileCommentSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/TypoFileCommentSniff.php new file mode 100644 index 000000000..5eb92c4c7 --- /dev/null +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/TypoFileCommentSniff.php @@ -0,0 +1,138 @@ + + * @copyright 2015 Stefano Kowalke + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @link https://github.com/typo3-ci/TYPO3SniffPool + */ + +/** + * Parses and verifies the TYPO3 copyright notice. + * + * @category PHP + * @package TYPO3SniffPool + * @author Stefano Kowalke + * @copyright 2015 Stefano Kowalke + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @link https://github.com/typo3-ci/TYPO3SniffPool + */ + +class Ontowiki_Sniffs_Commenting_TypoFileCommentSniff implements PHP_CodeSniffer_Sniff +{ + /** + * The file comment in TYPO3 CMS must be the copyright notice. + * + * @var array + */ + protected $copyright = array( + 1 => "/**\n", + 2 => " * This file is part of the {@link http://ontowiki.net OntoWiki} project.\n", + 3 => " *\n", + 4 => " * @copyright Copyright (c) 2016, {@link http://aksw.org AKSW}\n", + 5 => " * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL)\n", + 6 => " */", + ); + + + /** + * Returns an array of tokens this test wants to listen for. + * + * @return array + */ + public function register() + { + return array(T_OPEN_TAG); + + }//end register() + + + /** + * Processes this test, when one of its tokens is encountered. + * + * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. + * @param int $stackPtr The position of the current token + * in the stack passed in $tokens. + * + * @return int + */ + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) + { + $tokens = $phpcsFile->getTokens(); + + // Find the next non whitespace token. + $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); + + // Allow namespace statements at the top of the file. + if ($tokens[$commentStart]['code'] === T_NAMESPACE) { + $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($commentStart + 1)); + $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($semicolon + 1), null, true); + } + + if ($tokens[$commentStart]['code'] !== T_DOC_COMMENT_OPEN_TAG) { + $fix = $phpcsFile->addFixableError( + 'Copyright notice must start with /**; but /* was found!', + $commentStart, + 'WrongStyle' + ); + + if ($fix === true) { + $phpcsFile->fixer->replaceToken($commentStart, "/**"); + } + + return; + } + + $commentEnd = ($phpcsFile->findNext(T_DOC_COMMENT_CLOSE_TAG, ($commentStart + 1)) - 1); + print($commentStart . ' ' . $commentEnd); + if ($tokens[$commentStart]['code'] !== T_DOC_COMMENT_OPEN_TAG) { + $phpcsFile->addError('Copyright notice missing', $commentStart, 'NoCopyrightFound'); + + return; + } + + if ((($commentEnd - $commentStart) + 1) < count($this->copyright)) { + $phpcsFile->addError( + 'Copyright notice too short', + $commentStart, + 'CommentTooShort' + ); + return; + } else if ((($commentEnd - $commentStart) + 1) > count($this->copyright)) { + $phpcsFile->addError( + 'Copyright notice too long', + $commentStart, + 'CommentTooLong' + ); + return; + } + + $j = 1; + for ($i = $commentStart; $i <= $commentEnd; $i++) { + if ($tokens[$i]['content'] !== $this->copyright[$j]) { + $error = 'Found wrong part of copyright notice. Expected "%s", but found "%s"'; + $data = array( + trim($this->copyright[$j]), + trim($tokens[$i]['content']), + ); + $fix = $phpcsFile->addFixableError($error, $i, 'WrongText', $data); + + if ($fix === true) { + $phpcsFile->fixer->replaceToken($i, $this->copyright[$j]); + } + } + + $j++; + } + + return; + + }//end process() + + +}//end class diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/ruleset.xml b/application/tests/CodeSniffer/Standards/Ontowiki/ruleset.xml index 60360aa5a..3382f20e0 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/ruleset.xml +++ b/application/tests/CodeSniffer/Standards/Ontowiki/ruleset.xml @@ -118,9 +118,10 @@ - + application/tests/Bootstrap.php From c4accf46b006e79fd5178fda08285257b87c1781 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Mon, 4 Apr 2016 17:30:53 +0200 Subject: [PATCH 109/156] Also look for "composer.phar" in the path --- Makefile | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 387a4b826..533e456f1 100644 --- a/Makefile +++ b/Makefile @@ -5,11 +5,14 @@ PHPCBF = ./vendor/bin/phpcbf # Get calid composer executable COMPOSER = $(shell which composer) ifeq ($(findstring composer, $(COMPOSER)), ) - ifneq ($(wildcard composer.phar), ) - COMPOSER = php composer.phar - else - COMPOSER = - endif + COMPOSER = $(shell which composer.phar) + ifeq ($(findstring composer.phar, $(COMPOSER)), ) + ifneq ($(wildcard composer.phar), ) + COMPOSER = php composer.phar + else + COMPOSER = + endif + endif endif default: From a43feb721cb72da4bc2b1bbe5d54651e86412ac4 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Mon, 4 Apr 2016 17:31:13 +0200 Subject: [PATCH 110/156] Always automatically install composer and update documentation --- Makefile | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 533e456f1..09f9b41f3 100644 --- a/Makefile +++ b/Makefile @@ -19,10 +19,7 @@ default: @echo "Typical targets your could want to reach:" @echo "" @echo "--> make deploy ............... Install OntoWiki <-- in doubt, use this" - @echo " (use this for server installations)" - @echo "" - @echo " make install .............. Install OntoWiki for developer" - @echo " (you will need github access and ssh for this)" + @echo " make install .............. deploy and install are equivalent" @echo "" @echo " make help ................. Show more (developer related) make targets" @echo "" @@ -33,7 +30,7 @@ default: help: @echo "Please use: (e.g. make deploy)" @echo " deploy ..................... Runs everything which is needed for a deployment" - @echo " install .................... Make directories and libraries" + @echo " install .................... Equivalent to deploy" @echo " help ....................... This help screen" @echo " help-cs .................... Show help for code sniffing targets" @echo " help-test .................. Show help for test related targets" @@ -56,14 +53,18 @@ help-test: @echo " test-integration-mysql ....... Run OntoWiki integration tests with mysql" @echo " test-extensions .............. Run tests for extensions" - getcomposer: curl -o composer.phar "https://getcomposer.org/composer.phar" php composer.phar self-update install: deploy +ifdef COMPOSER deploy: directories clean composer-install +else +deploy: getcomposer + make deploy +endif vagrant: directories clean #add composer install rm -rf libraries/Zend # vagrant has own zend From fb18b81d5d13e0c5e5eb043bb036435c0fecf2d9 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Mon, 4 Apr 2016 18:14:46 +0200 Subject: [PATCH 111/156] Squashed commit of Matthimatiker branch. Cherrypicked the minor additions as proposed in pull request #308. Close #308. Conflicts: application/controllers/ResourceController.php Original commits: commit 4a3dd0c0bdfe0c0f1a4b4c9bcc271822a211798d Author: Matthias Molitor Date: Sat Mar 22 14:01:44 2014 +0100 removed usage of undeclared properties that are not accessed afterwards commit 28b009e28f9ed66ec512fe4ee8be04d190bc99e0 Author: Matthias Molitor Date: Sat Mar 22 13:54:17 2014 +0100 introduced workaround to avoid storing global objects in the session commit 2be23058f1b476ae152c17cc871c781b0ddc4c65 Author: Matthias Molitor Date: Mon Mar 17 23:06:37 2014 +0100 changed handling of translator and view references to avoid storing the whole view graph in the session whenever a message is added commit db36002a5166b43715651f45ea0fc3dc9908d861 Author: Matthias Molitor Date: Tue Jan 28 22:02:58 2014 +0100 news feed url is now configurable commit e4961271451fe668599f51f11d508728ca559919 Author: Matthias Molitor Date: Tue Jan 28 21:42:27 2014 +0100 added stricter timeout to ensure that the Wiki is usable if the AKSW blog is not reachable commit 5439d7357c00a59aab6ec7075ec4262aeecfa277 Author: Matthias Molitor Date: Tue Jan 28 21:36:48 2014 +0100 refactoring: extracted method; reduced duplicated code commit af1740060af1d16f833bcdb8cd627b79dd35c23d Author: Matthias Molitor Date: Tue Jan 28 21:24:55 2014 +0100 fixed typo commit 333a3aa8f0e81cfc3ba260089f57509f37aee4c9 Author: Matthias Molitor Date: Mon Jan 27 19:07:33 2014 +0100 use line breaks to improve readability of SPARQL error commit 3734cc296fa6dd49f0dc409207eab091422bcc9c Author: Matthias Molitor Date: Mon Jan 27 19:06:27 2014 +0100 escape errors to ensure that they are readable in the browser commit 319fd034c994a7ad23180a194e5181909a3d32db Author: Matthias Molitor Date: Mon Jan 27 18:56:21 2014 +0100 OntoWiki recommends to disable short open tags, therefore, the templates should not rely on it commit ebb6e38a5256fff59422b229f09dacbde4a9e235 Author: Matthias Molitor Date: Mon Jan 27 13:37:55 2014 +0100 fixed query: according to , a comma is not allowed between variables commit 03d0a4ec5972ca80d2ed847eaf6278273715501e Author: Matthias Molitor Date: Sun Jan 26 16:26:23 2014 +0100 only apply max_execution_time setting if the execution time is increased commit 49ce0e77202adc1a939a35f6524ac99ef752200d Author: Matthias Molitor Date: Thu Jan 23 17:18:37 2014 +0100 changed parameter retrieval to avoid PHP notices when they do not exist commit 400300f3b50b6b2bf38a9d8cb0fcdf7f92181dcc Author: Matthias Molitor Date: Sun Jan 19 13:43:24 2014 +0100 escaped error text to ensure that messages with for example SPARQL queries are at least readable in the browser commit f4156e1c3adc96295334a9df0c12253e8c6de760 Author: Matthias Molitor Date: Sun Jan 19 12:53:10 2014 +0100 introduced optional class loading via Composer --- application/classes/OntoWiki/Message.php | 61 +++++++------- application/classes/OntoWiki/Model.php | 51 ++++++------ .../classes/OntoWiki/Model/Instances.php | 4 - application/controllers/IndexController.php | 82 ++++++++++--------- application/controllers/ModelController.php | 5 +- .../controllers/ResourceController.php | 2 +- application/views/templates/error/error.phtml | 2 +- config.ini.dist | 1 + .../queries/templates/queries/editor.phtml | 10 +-- index.php | 4 +- 10 files changed, 112 insertions(+), 110 deletions(-) diff --git a/application/classes/OntoWiki/Message.php b/application/classes/OntoWiki/Message.php index 1200b16b8..b56d493d3 100644 --- a/application/classes/OntoWiki/Message.php +++ b/application/classes/OntoWiki/Message.php @@ -66,20 +66,6 @@ class OntoWiki_Message */ protected $_text = null; - /** - * The current view object - * - * @var OntoWiki_View - */ - protected $_view = null; - - /** - * The translation object - * - * @var Zend_Translate - */ - protected $_translate = null; - /** * Constructor * @@ -97,19 +83,6 @@ public function __construct($text, $type = self::INFO, $options = array()) $this->_type = $type; $this->_text = $text; - - // Clone view - if (null === $this->_view) { - $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); - if (null === $viewRenderer->view) { - $viewRenderer->initView(); - } - $this->_view = clone $viewRenderer->view; - $this->_view->clearVars(); - } - - // get translation for current language - $this->_translate = OntoWiki::getInstance()->translate; } /** @@ -133,19 +106,45 @@ public function getText() if (strlen($text) > 1000) { $text = substr($text, 0, 1000) . '...'; } - $text = $this->_options['escape'] ? $this->_view->escape($text) : $text; + $text = $this->_options['escape'] ? $this->getView()->escape($text) : $text; return $text; } - private function _translate($text) + /** + * Returns the view object. + * + * @return OntoWiki_View + */ + protected function getView() { - if (($this->_options['translate'] === true) && (null !== $this->_translate)) { - return $this->_translate->translate($text); + $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); + if (null === $viewRenderer->view) { + $viewRenderer->initView(); } + $view = clone $viewRenderer->view; + $view->clearVars(); + return $view; + } + /** + * Returns the translator. + * + * @return Zend_Translate + */ + protected function getTranslator() + { + return OntoWiki::getInstance()->translate; + } + + private function _translate($text) + { + if (($this->_options['translate'] === true) && ($translator = $this->getTranslator()) !== null) { + return $translator->translate($text); + } return $text; } + } diff --git a/application/classes/OntoWiki/Model.php b/application/classes/OntoWiki/Model.php index 3f9101a55..b57c1cfbf 100644 --- a/application/classes/OntoWiki/Model.php +++ b/application/classes/OntoWiki/Model.php @@ -14,6 +14,9 @@ * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) * @author Norman Heino + * @property Zend_Log $_logger + * @property Erfurt_Event_Dispatcher $_eventDispatcher + * @property Zend_Config $_config The application configuration. */ class OntoWiki_Model { @@ -24,13 +27,6 @@ class OntoWiki_Model */ protected $_store = null; - /** - * The OntoWiki Application config - * - * @var Zend_Config - */ - protected $_config = null; - /** * Whether inference features are turned on * @@ -38,13 +34,6 @@ class OntoWiki_Model */ protected $_inference = true; - /** - * The Application logger - * - * @var Zend_Log - */ - protected $_logger = null; - /** * Model instance * @@ -59,13 +48,6 @@ class OntoWiki_Model */ protected $_graph = null; - /** - * The Erfurt event dispatcher - * - * @var Erfurt_Event_Dispatcher - */ - protected $_eventDispatcher = null; - /** * Constructor */ @@ -73,9 +55,6 @@ public function __construct(Erfurt_Store $store, Erfurt_Rdf_Model $graph) { // system variables $this->_store = $store; - $this->_config = OntoWiki::getInstance()->config; - $this->_logger = OntoWiki::getInstance()->logger; - $this->_eventDispatcher = Erfurt_Event_Dispatcher::getInstance(); if (isset($this->_config->system->inference) && !(bool)$this->_config->system->inference) { $this->_inference = false; @@ -110,5 +89,29 @@ public function getGraph() { return $this->_model; } + + /** + * Simulates properties that reference global objects. + * + * The globals are *not* stored as properties of this objects, otherwise + * these globals (and the whole object graph that is connected to them) + * are serialized when this object is stored in the session. + * + * @param string $name + * @return Erfurt_Event_Dispatcher|Zend_Log|Zend_Config|null + */ + public function __get($name) + { + switch ($name) { + case '_logger': + return OntoWiki::getInstance()->logger;; + case '_eventDispatcher': + return Erfurt_Event_Dispatcher::getInstance(); + case '_config': + return OntoWiki::getInstance()->config; + } + return null; + } + } diff --git a/application/classes/OntoWiki/Model/Instances.php b/application/classes/OntoWiki/Model/Instances.php index 5f54982c0..b7269be1a 100644 --- a/application/classes/OntoWiki/Model/Instances.php +++ b/application/classes/OntoWiki/Model/Instances.php @@ -164,10 +164,6 @@ public function __construct(Erfurt_Store $store, Erfurt_Rdf_Model $model, $optio $this->_useCache = $options[Erfurt_Store::USE_CACHE]; } - //TODO still needed? - $this->_defaultUrl['resource'] = new OntoWiki_Url(array('route' => 'properties'), array()); - $this->_defaultUrlParam['resource'] = 'r'; - $this->_resourceQuery = new Erfurt_Sparql_Query2(); $this->_resourceVar = new Erfurt_Sparql_Query2_Var('resourceUri'); diff --git a/application/controllers/IndexController.php b/application/controllers/IndexController.php index 63a17a672..058302920 100644 --- a/application/controllers/IndexController.php +++ b/application/controllers/IndexController.php @@ -15,6 +15,12 @@ */ class IndexController extends OntoWiki_Controller_Base { + + /** + * Timeout for reading the OntoWiki RSS news feed. + */ + const NEWS_FEED_TIMEOUT_IN_SECONDS = 3; + /** * Displays the OntoWiki news feed short summary (dashboard part) */ @@ -23,26 +29,8 @@ public function newsshortAction() // requires zend Feed module // number of news $feedCount = 3; - // create empty var for feed - $owFeed = null; - // get current version - $version = $this->_config->version; - // try reading - try { - $url = 'http://blog.aksw.org/feed/?cat=5&client=' - . $version->label - . '&version=' - . $version->number - . '&suffix=' - . $version->suffix; + $owFeed = $this->getNews(); - $owFeed = Zend_Feed::import($url); - } catch (Exception $e) { - $this->_owApp->appendMessage( - new OntoWiki_Message('Error loading feed: ' . $url, OntoWiki_Message::WARNING) - ); - $owFeed = array(); - } // create new array for data $data = array(); // parse feed items into array @@ -67,7 +55,7 @@ public function newsshortAction() } /** - * Displays messages only without any othe content. + * Displays messages only without any other content. */ public function messagesAction() { @@ -81,32 +69,15 @@ public function messagesAction() */ public function newsAction() { - $owFeed = null; - $version = $this->_config->version; - $this->view->placeholder('main.window.title')->set('News'); - try { - $url = 'http://blog.aksw.org/feed/?cat=5&client=' - . urlencode($version->label) - . '&version=' - . urlencode($version->number) - . '&suffix=' - . urlencode($version->suffix); - - $owFeed = Zend_Feed::import($url); - - $this->view->feed = $owFeed; + $owFeed = $this->getNews(); + $this->view->feed = $owFeed; + if ($owFeed instanceof Zend_Feed_Abstract) { $this->view->title = $owFeed->title(); $this->view->link = $owFeed->link(); $this->view->description = $owFeed->description(); - } catch (Exception $e) { - $this->_owApp->appendMessage( - new OntoWiki_Message('Error loading feed: ' . $url, OntoWiki_Message::WARNING) - ); - $this->view->feed = array(); } - OntoWiki::getInstance()->getNavigation()->disableNavigation(); } @@ -143,4 +114,35 @@ public function emptyAction() // sorry for this hack, but I dont wanted to modify the the main layout too much ... $this->view->placeholder('main.window.additionalclasses')->set('hidden'); } + + /** + * Reads OntoWiki news from the AKSW RSS feed. + * + * @return array|Zend_Feed_Abstract + */ + public function getNews() + { + // get current version + $version = $this->_config->version; + // try reading + try { + $url = $this->_config->news->feedUrl; + $url = strtr($url, array( + '{{version.label}}' => urlencode($version->label), + '{{version.number}}' => urlencode($version->number), + '{{version.suffix}}' => urlencode($version->suffix) + )); + + /* @var $client Zend_Http_Client */ + $client = Zend_Feed::getHttpClient(); + $client->setConfig(array('timeout' => self::NEWS_FEED_TIMEOUT_IN_SECONDS)); + $owFeed = Zend_Feed::import($url); + return $owFeed; + } catch (Exception $e) { + $this->_owApp->appendMessage( + new OntoWiki_Message('Error loading feed: ' . $url, OntoWiki_Message::WARNING) + ); + return array(); + } + } } diff --git a/application/controllers/ModelController.php b/application/controllers/ModelController.php index 553236592..b05725477 100644 --- a/application/controllers/ModelController.php +++ b/application/controllers/ModelController.php @@ -840,9 +840,8 @@ public function updateAction() */ private function _doImportActionRedirect($modelUri) { - $post = $this->_request->getPost(); - $id = $post['importAction']; - $importOptions = $post['importOptions']; + $id = $this->_request->getPost('importAction'); + $importOptions = $this->_request->getPost('importOptions'); $actions = $this->_getImportActions(); if (isset($actions[$id])) { diff --git a/application/controllers/ResourceController.php b/application/controllers/ResourceController.php index 3d316f49e..1855dc1c9 100644 --- a/application/controllers/ResourceController.php +++ b/application/controllers/ResourceController.php @@ -371,7 +371,7 @@ public function deleteAction() // query for all triples to delete them $sparqlQuery = new Erfurt_Sparql_SimpleQuery(); - $sparqlQuery->setSelectClause('SELECT ?p, ?o'); + $sparqlQuery->setSelectClause('SELECT ?p ?o'); $sparqlQuery->addFrom($modelIri); $sparqlQuery->setWherePart('{ <' . $resource . '> ?p ?o . }'); diff --git a/application/views/templates/error/error.phtml b/application/views/templates/error/error.phtml index 66a607b61..5f2f643b0 100644 --- a/application/views/templates/error/error.phtml +++ b/application/views/templates/error/error.phtml @@ -42,7 +42,7 @@ body {
          -errorText ?> +escape($this->errorText) ?> exceptionType)): ?>

          exceptionType ?>

          diff --git a/config.ini.dist b/config.ini.dist index ebbd0cc34..2a11acc3c 100644 --- a/config.ini.dist +++ b/config.ini.dist @@ -147,6 +147,7 @@ cache.backend.sqlite.cache_db_complete_path = "/tmp/ow_cache.sqlite" ;; Options for Gearman/worker worker.enable = false +news.feedUrl = "http://blog.aksw.org/feed/?cat=5&client={{version.label}}&version={{version.number}}&suffix={{version.suffix}}" ;;;; ;; uncomment this line if you need more information diff --git a/extensions/queries/templates/queries/editor.phtml b/extensions/queries/templates/queries/editor.phtml index ece706de3..5cb4e27b2 100644 --- a/extensions/queries/templates/queries/editor.phtml +++ b/extensions/queries/templates/queries/editor.phtml @@ -20,12 +20,12 @@ if (isset($this->errorFlag) && $this->errorFlag !== false) {
          -_('Output Format') ?> -render('sparqloptions.phtml') ?> +_('Output Format') ?> +render('sparqloptions.phtml') ?>
          -_('Query Source') ?> -render('queryeditorfromsetter.phtml') ?> +_('Query Source') ?> +render('queryeditorfromsetter.phtml') ?>

          _('Predefined namespaces') ?>: @@ -44,7 +44,7 @@ if (isset($this->errorFlag) && $this->errorFlag !== false) { has('error')): ?>

          -
          error ?>
          +
          escape($this->error)) ?>
          diff --git a/index.php b/index.php index 076d3d3f2..bb423a5f6 100644 --- a/index.php +++ b/index.php @@ -73,7 +73,9 @@ function getEnvVar ($key) // PHP environment settings -ini_set('max_execution_time', 240); +if ((int)ini_get('max_execution_time') < 240) { + ini_set('max_execution_time', 240); +} if ((int)substr(ini_get('memory_limit'), 0, -1) < 256) { ini_set('memory_limit', '256M'); From 6c71e188bb92e8ef8ec48e5f5c998f53fdccb824 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Mon, 4 Apr 2016 19:09:46 +0200 Subject: [PATCH 112/156] Fall back if no feed is specified Also make it possible to disable the feed completely --- application/controllers/IndexController.php | 38 +++++++++++++++------ config.ini.dist | 2 ++ 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/application/controllers/IndexController.php b/application/controllers/IndexController.php index 058302920..b8a9aca48 100644 --- a/application/controllers/IndexController.php +++ b/application/controllers/IndexController.php @@ -126,18 +126,34 @@ public function getNews() $version = $this->_config->version; // try reading try { - $url = $this->_config->news->feedUrl; - $url = strtr($url, array( - '{{version.label}}' => urlencode($version->label), - '{{version.number}}' => urlencode($version->number), - '{{version.suffix}}' => urlencode($version->suffix) - )); + if (isset($this->_config->news) && isset($this->_config->news->feedUrl)) { + $url = $this->_config->news->feedUrl; + } else { + $url = 'http://blog.aksw.org/feed/?cat=5&client=' + . urlencode($version->label) + . '&version=' + . urlencode($version->number) + . '&suffix=' + . urlencode($version->suffix); + } + if ($url) { + $url = strtr($url, array( + '{{version.label}}' => urlencode($version->label), + '{{version.number}}' => urlencode($version->number), + '{{version.suffix}}' => urlencode($version->suffix) + )); - /* @var $client Zend_Http_Client */ - $client = Zend_Feed::getHttpClient(); - $client->setConfig(array('timeout' => self::NEWS_FEED_TIMEOUT_IN_SECONDS)); - $owFeed = Zend_Feed::import($url); - return $owFeed; + /* @var $client Zend_Http_Client */ + $client = Zend_Feed::getHttpClient(); + $client->setConfig(array('timeout' => self::NEWS_FEED_TIMEOUT_IN_SECONDS)); + $owFeed = Zend_Feed::import($url); + return $owFeed; + } else { + $this->_owApp->appendMessage( + new OntoWiki_Message('Feed disabled in config.ini. You can configure a feed using the "news.feedUrl" key in your config.ini.', OntoWiki_Message::INFO) + ); + return array(); + } } catch (Exception $e) { $this->_owApp->appendMessage( new OntoWiki_Message('Error loading feed: ' . $url, OntoWiki_Message::WARNING) diff --git a/config.ini.dist b/config.ini.dist index 2a11acc3c..a3d699f2b 100644 --- a/config.ini.dist +++ b/config.ini.dist @@ -147,6 +147,8 @@ cache.backend.sqlite.cache_db_complete_path = "/tmp/ow_cache.sqlite" ;; Options for Gearman/worker worker.enable = false +;; Option for specifying the RSS/Atom feed loaded in the OntoWiki index actions "News" module +;; set to "false" to completely disable the feed news.feedUrl = "http://blog.aksw.org/feed/?cat=5&client={{version.label}}&version={{version.number}}&suffix={{version.suffix}}" ;;;; From eaf54435ac59ecc1cc6b7f6788813b434bd451ce Mon Sep 17 00:00:00 2001 From: shinobu Date: Mon, 4 Apr 2016 20:46:30 +0200 Subject: [PATCH 113/156] modified Typo3's FileCommentSniff to work with our Filecomments cleaned and renamed FileCommentSniff removed OntoWiki entries in ruleset.xml Fix filename of sniff Use phpcs.xml now to configure the codesniffer year for copyright is now the year of the last git commit for this file deleted testfile --- Makefile | 12 +- .../Sniffs/Commenting/FileCommentSniff.php | 207 +++++++++--------- .../Commenting/TypoFileCommentSniff.php | 138 ------------ .../Standards/Ontowiki/ruleset.xml | 128 +---------- phpcs.xml | 139 ++++++++++++ 5 files changed, 241 insertions(+), 383 deletions(-) delete mode 100644 application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/TypoFileCommentSniff.php create mode 100644 phpcs.xml diff --git a/Makefile b/Makefile index 09f9b41f3..a5c9613a3 100644 --- a/Makefile +++ b/Makefile @@ -149,21 +149,13 @@ debianize: rm Makefile @echo "now do: cp -R application/scripts/debian debian" - -# coding standard -STANDARD =application/tests/CodeSniffer/Standards/Ontowiki/ruleset.xml # #### config #### -# ignore pattern -IGNOREPATTERN =libraries,extensions/exconf/pclzip.lib.php,extensions/exconf/Archive.php,application/scripts,extensions/markdown/parser/markdown.php,vendor - -REQUESTSTR =-p --standard=$(STANDARD) --ignore=$(IGNOREPATTERN) --extensions=php */ - codesniffer: - $(PHPCS) $(REQUESTSTR) + $(PHPCS) codebeautifier: - $(PHPCBF) $(REQUESTSTR) + $(PHPCBF) # other stuff diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php index ee7fb6007..7809499a3 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php @@ -1,53 +1,43 @@ + * @package TYPO3SniffPool + * @author Stefano Kowalke + * @copyright 2015 Stefano Kowalke + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @link https://github.com/typo3-ci/TYPO3SniffPool */ /** - * Ontowiki_Sniffs_Commenting_FileCommentSniff. - * Check for functions, they are not allowed. + * Parses and verifies the TYPO3 copyright notice. * * @category PHP - * @package PHP_CodeSniffer_Sniff - * @author Lars Eidam + * @package TYPO3SniffPool + * @author Stefano Kowalke + * @copyright 2015 Stefano Kowalke + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License + * @link https://github.com/typo3-ci/TYPO3SniffPool */ + class Ontowiki_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sniff { - private $_commentStr; - private $_yearRegEx = "/.*(?[0-9]{4}).*/"; - private $_dateLine = 3; - private $_dateColumn = 4; - private $_date; - - public function __construct() - { - // this avoid timezone warnings - date_default_timezone_set('Europe/Berlin'); - $this->_date = date("Y"); - $this->_commentStr = array( - "/**\n", - " * This file is part of the {@link http://ontowiki.net OntoWiki} project.\n", - " *\n", - " * @copyright Copyright (c) 2006-$this->_date, {@link http://aksw.org AKSW}\n", - " * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL)\n", - " */" - ); - } + /** + * The file comment in TYPO3 CMS must be the copyright notice. + * + * @var array + */ + protected $copyright = array( + 1 => "/**\n", + 2 => " * This file is part of the {@link http://ontowiki.net OntoWiki} project.\n", + 3 => " *\n", + 4 => "", + 5 => " * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL)\n", + 6 => " */", + ); /** * Returns an array of tokens this test wants to listen for. @@ -57,100 +47,99 @@ public function __construct() public function register() { return array(T_OPEN_TAG); + }//end register() + /** * Processes this test, when one of its tokens is encountered. * * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token in the - * stack passed in $tokens. + * @param int $stackPtr The position of the current token + * in the stack passed in $tokens. * - * @return void + * @return int */ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { + exec('git log -1 ' . $phpcsFile->getFilename(), $output); + preg_match("/( )[0-9]{4}( )/", $output[2],$git_year_array); + $git_year=str_replace(' ','',$git_year_array[0]); + //$year = " * @copyright Copyright (c) " . date('Y') . ", {@link http://aksw.org AKSW}\n"; + $year = " * @copyright Copyright (c) " . $git_year . ", {@link http://aksw.org AKSW}\n"; + $this->copyright[4]= $year; $tokens = $phpcsFile->getTokens(); + $tokenizer = new PHP_CodeSniffer_Tokenizers_Comment(); + $expectedString = implode($this->copyright); + $expectedTokens = $tokenizer->tokenizeString($expectedString, PHP_EOL, 0); + // Find the next non whitespace token. + $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - // all line of a DocComment will be checked but if there was fount an error - // the Loop will break and only this error will be shown, because if there - // is one error in the DocComment it is quite likely that there are much - // more errors - foreach ($this->_commentStr as $commentStrLineNumber => $commentStrLine) { - $tokenNumber = $stackPtr + $commentStrLineNumber + 1; + // Allow namespace statements at the top of the file. + if ($tokens[$commentStart]['code'] === T_NAMESPACE) { + $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($commentStart + 1)); + $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($semicolon + 1), null, true); + } + + if ($tokens[$commentStart]['code'] !== T_DOC_COMMENT_OPEN_TAG) { + $fix = $phpcsFile->addFixableError( + 'Copyright notice must start with /**; but /* was found!', + $commentStart, + 'WrongStyle' + ); - if (!isset($tokens[$tokenNumber])) { - continue; + if ($fix === true) { + $phpcsFile->fixer->replaceToken($commentStart, "/**"); } - // check if every line direct after the php open tag is a doc comment line - if ("T_DOC_COMMENT" != $tokens[$tokenNumber]['type']) { - $error = 'Wrong DocComment: Found "%s" instead of the File Comment.'; - $data = addcslashes($tokens[$tokenNumber]['content'], "\n"); - $phpcsFile->addError($error, $tokenNumber, 'NoFileComment', $data); - return; - // check if ever comment line is the same as the defined one in the $commentStr - } else if ($commentStrLine != $tokens[$tokenNumber]['content']) { - $commentStrLinePartsDirty = explode(' ', $commentStrLine); - $commentStrLineParts = array(); - foreach ($commentStrLinePartsDirty as $item) { - if (trim($item) !== '') { - $commentStrLineParts[] = trim($item); - } - } + return; + } - $contentPartsDirty = explode(' ', $tokens[$tokenNumber]['content']); - $contentParts = array(); - foreach ($contentPartsDirty as $item) { - if (trim($item) !== '') { - $contentParts[] = trim($item); - } - } + $commentEnd = ($phpcsFile->findNext(T_WHITESPACE, ($commentStart + 1)) - 1); + if ($tokens[$commentStart]['code'] !== T_DOC_COMMENT_OPEN_TAG) { + $phpcsFile->addError('Copyright notice missing', $commentStart, 'NoCopyrightFound'); - if (count($commentStrLineParts) !== count($contentParts)) { - // add error - $data = $tokens[$tokenNumber]['content']; - $error = 'Wrong DocComment: Found ' . $data . ' instead of "' . $commentStrLine . '".'; - $phpcsFile->addError($error, $tokenNumber, 'WrongFileCommentLine'); - return; - } + return; + } + $commentEndLine = $tokens[$commentEnd]['line']; + $commentStartLine = $tokens[$commentStart]['line']; + if ((($commentEndLine - $commentStartLine) + 1) < count($this->copyright)) { + $phpcsFile->addError( + 'Copyright notice too short', + $commentStart, + 'CommentTooShort' + ); + return; + } else if ((($commentEndLine - $commentStartLine) + 1) > count($this->copyright)) { + $phpcsFile->addError( + 'Copyright notice too long', + $commentStart, + 'CommentTooLong' + ); + return; + } - foreach ($commentStrLineParts as $i => $part) { - if ($part !== $contentParts[$i]) { - if (($this->_dateLine === $commentStrLineNumber) && ($this->_dateColumn === $i)) { - // add warning for wrong date - $error = 'Wrong DocComment: Found "%s" instead of "' . $this->_date . '".'; - $phpcsFile->addWarning( - $error, - $tokenNumber, - 'WrongFileCommentYear', - trim($contentParts[$i]) - ); - continue; - } else { - // add error - $data = $contentParts[$i]; - $error = 'Wrong DocComment: Found ' . $data . ' instead of "' . $part . '".'; - $phpcsFile->addError($error, $tokenNumber, 'WrongFileCommentLine'); - return; - } - } + $j = 0; + for ($i = $commentStart; $i <= $commentEnd; $i++) { + if ($tokens[$i]['content'] !== $expectedTokens[$j]["content"]) { + $error = 'Found wrong part of copyright notice. Expected "%s", but found "%s"'; + $data = array( + trim($expectedTokens[$j]["content"]), + trim($tokens[$i]['content']), + ); + $fix = $phpcsFile->addFixableError($error, $i, 'WrongText', $data); + + if ($fix === true) { + $phpcsFile->fixer->replaceToken($i, $expectedTokens[$j]["content"]); } } - } - // check if ever line after doc comment is a blank line - if (isset($tokens[$stackPtr + count($this->_commentStr) + 2]) - && ("T_WHITESPACE" != $tokens[$stackPtr + count($this->_commentStr) + 2]['type']) - ) { - $data = addcslashes($tokens[$stackPtr + count($this->_commentStr) + 2]['content'], "\n"); - $error = 'Wrong DocComment: Found "%s" instead of the blank line.'; - $phpcsFile->addError( - $error, - $stackPtr + count($this->_commentStr) + 2, - 'NoBlankLineAfterFileComment', - $data - ); + $j++; } + + return; + }//end process() + + }//end class diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/TypoFileCommentSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/TypoFileCommentSniff.php deleted file mode 100644 index 5eb92c4c7..000000000 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/TypoFileCommentSniff.php +++ /dev/null @@ -1,138 +0,0 @@ - - * @copyright 2015 Stefano Kowalke - * @license http://www.gnu.org/copyleft/gpl.html GNU Public License - * @link https://github.com/typo3-ci/TYPO3SniffPool - */ - -/** - * Parses and verifies the TYPO3 copyright notice. - * - * @category PHP - * @package TYPO3SniffPool - * @author Stefano Kowalke - * @copyright 2015 Stefano Kowalke - * @license http://www.gnu.org/copyleft/gpl.html GNU Public License - * @link https://github.com/typo3-ci/TYPO3SniffPool - */ - -class Ontowiki_Sniffs_Commenting_TypoFileCommentSniff implements PHP_CodeSniffer_Sniff -{ - /** - * The file comment in TYPO3 CMS must be the copyright notice. - * - * @var array - */ - protected $copyright = array( - 1 => "/**\n", - 2 => " * This file is part of the {@link http://ontowiki.net OntoWiki} project.\n", - 3 => " *\n", - 4 => " * @copyright Copyright (c) 2016, {@link http://aksw.org AKSW}\n", - 5 => " * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL)\n", - 6 => " */", - ); - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return array(T_OPEN_TAG); - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return int - */ - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // Find the next non whitespace token. - $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - - // Allow namespace statements at the top of the file. - if ($tokens[$commentStart]['code'] === T_NAMESPACE) { - $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($commentStart + 1)); - $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($semicolon + 1), null, true); - } - - if ($tokens[$commentStart]['code'] !== T_DOC_COMMENT_OPEN_TAG) { - $fix = $phpcsFile->addFixableError( - 'Copyright notice must start with /**; but /* was found!', - $commentStart, - 'WrongStyle' - ); - - if ($fix === true) { - $phpcsFile->fixer->replaceToken($commentStart, "/**"); - } - - return; - } - - $commentEnd = ($phpcsFile->findNext(T_DOC_COMMENT_CLOSE_TAG, ($commentStart + 1)) - 1); - print($commentStart . ' ' . $commentEnd); - if ($tokens[$commentStart]['code'] !== T_DOC_COMMENT_OPEN_TAG) { - $phpcsFile->addError('Copyright notice missing', $commentStart, 'NoCopyrightFound'); - - return; - } - - if ((($commentEnd - $commentStart) + 1) < count($this->copyright)) { - $phpcsFile->addError( - 'Copyright notice too short', - $commentStart, - 'CommentTooShort' - ); - return; - } else if ((($commentEnd - $commentStart) + 1) > count($this->copyright)) { - $phpcsFile->addError( - 'Copyright notice too long', - $commentStart, - 'CommentTooLong' - ); - return; - } - - $j = 1; - for ($i = $commentStart; $i <= $commentEnd; $i++) { - if ($tokens[$i]['content'] !== $this->copyright[$j]) { - $error = 'Found wrong part of copyright notice. Expected "%s", but found "%s"'; - $data = array( - trim($this->copyright[$j]), - trim($tokens[$i]['content']), - ); - $fix = $phpcsFile->addFixableError($error, $i, 'WrongText', $data); - - if ($fix === true) { - $phpcsFile->fixer->replaceToken($i, $this->copyright[$j]); - } - } - - $j++; - } - - return; - - }//end process() - - -}//end class diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/ruleset.xml b/application/tests/CodeSniffer/Standards/Ontowiki/ruleset.xml index 3382f20e0..193cb96aa 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/ruleset.xml +++ b/application/tests/CodeSniffer/Standards/Ontowiki/ruleset.xml @@ -1,128 +1,4 @@ - - A Ontowiki coding standard. - - - - - - - - - - - - - - - - - - - - - - - - 3 - - - - - - - - 3 - - - - - - - - - - - - - - - - - - - - - - - - - * - - - - - - - - - - - - - - - - - - - - index.php - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */Sniffs/* - - - - - - - application/tests/Bootstrap.php - + + Ontowiki's additiona sniffs for the coding standard. diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 000000000..567eb4c07 --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,139 @@ + + + The combination of codingstandards used for Ontowiki. + + ./application/ + ./extensions/ + + + + + + + ./application/scripts/ + ./extensions/exconf/pclzip.lib.php + ./extensions/exconf/Archive.php + ./extensions/markdown/parser/markdown.php + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + * + + + + + + + + + + + + + + + + + + + + index.php + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + */Sniffs/* + + + + + + + application/tests/Bootstrap.php + + + From e5ae6d9146ab037208a8beb31f4e72079eb060b0 Mon Sep 17 00:00:00 2001 From: shinobu Date: Mon, 25 Apr 2016 19:41:15 +0200 Subject: [PATCH 114/156] make codesniffer now ignores the FileCommentSniff and make codesniffer_year includes the Sniff --- Makefile | 5 +- phpcs.xml | 7 +-- phpcs_year.xml | 138 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 phpcs_year.xml diff --git a/Makefile b/Makefile index a5c9613a3..ad4ee942d 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,8 @@ help: help-cs: @echo "Please use: (e.g. make codesniffer)" - @echo " codesniffer ............................ Run CodeSniffer" + @echo " codesniffer ............................ Run CodeSniffer except for the FileCommentSniff" + @echo " codesniffer_year ....................... Run CodeSniffer including the FileCommentSniff" @echo " codebeautifier ......................... Run CodeBeautifier" help-test: @@ -154,6 +155,8 @@ debianize: codesniffer: $(PHPCS) +codesniffer_year: + $(PHPCS) --standard=phpcs_year.xml codebeautifier: $(PHPCBF) diff --git a/phpcs.xml b/phpcs.xml index 567eb4c07..ffcbf1e16 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -6,8 +6,7 @@ ./extensions/ - - + > ./application/scripts/ @@ -135,5 +134,7 @@ application/tests/Bootstrap.php - + + + diff --git a/phpcs_year.xml b/phpcs_year.xml new file mode 100644 index 000000000..1940476ef --- /dev/null +++ b/phpcs_year.xml @@ -0,0 +1,138 @@ + + + The combination of codingstandards used for Ontowiki. + + ./application/ + ./extensions/ + + + > + + + ./application/scripts/ + ./extensions/exconf/pclzip.lib.php + ./extensions/exconf/Archive.php + ./extensions/markdown/parser/markdown.php + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + * + + + + + + + + + + + + + + + + + + + + index.php + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + */Sniffs/* + + + + + + + application/tests/Bootstrap.php + + + From a0b43904d9411ddc6954acd6c669ff16ffd1156a Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Thu, 28 Apr 2016 13:48:31 +0200 Subject: [PATCH 115/156] Fix #347. Remove require_once because we are using autoloader now. --- extensions/account/AccountController.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/extensions/account/AccountController.php b/extensions/account/AccountController.php index cb13b60ef..3010f1d68 100644 --- a/extensions/account/AccountController.php +++ b/extensions/account/AccountController.php @@ -63,8 +63,6 @@ public function recoverAction() $this->view->placeholder('main.window.title')->set($title); $this->view->phase = $phase; - require_once 'Erfurt/Auth/Identity/Recovery.php'; - $recoveryObject = new Erfurt_Auth_Identity_Recovery(); try { From 348d1425d50dda9d3200099f36177cc991bf4fb9 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Fri, 29 Apr 2016 14:51:57 +0200 Subject: [PATCH 116/156] Change erfurt dependency to dev-develop --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 0121a1762..9226a3b81 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "require": { "php": ">=5.3.3", "mnsami/composer-custom-directory-installer": "1.1.*", - "aksw/erfurt": "dev-feature/php-composer", + "aksw/erfurt": "dev-develop", "bitworking/mimeparse": "2.1.*", "zendframework/zendframework1": "1.*", "aksw/rdfauthor": "dev-develop" From f4592f84db300dd72f1c91b861f93b857c0d0bc9 Mon Sep 17 00:00:00 2001 From: shinobu Date: Sun, 1 May 2016 17:07:31 +0200 Subject: [PATCH 117/156] removed ignoring FileCommentSniff option; Furthermore now the FileCommentSniff checks for the creation-now and works without git as simple regex check for valid years --- Makefile | 3 - .../Sniffs/Commenting/FileCommentSniff.php | 30 +++- phpcs.xml | 4 +- phpcs_year.xml | 138 ------------------ 4 files changed, 24 insertions(+), 151 deletions(-) delete mode 100644 phpcs_year.xml diff --git a/Makefile b/Makefile index ad4ee942d..0d6baf446 100644 --- a/Makefile +++ b/Makefile @@ -154,9 +154,6 @@ debianize: codesniffer: $(PHPCS) - -codesniffer_year: - $(PHPCS) --standard=phpcs_year.xml codebeautifier: $(PHPCBF) diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php index 7809499a3..fd624af78 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php @@ -62,13 +62,30 @@ public function register() */ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { - exec('git log -1 ' . $phpcsFile->getFilename(), $output); - preg_match("/( )[0-9]{4}( )/", $output[2],$git_year_array); - $git_year=str_replace(' ','',$git_year_array[0]); - //$year = " * @copyright Copyright (c) " . date('Y') . ", {@link http://aksw.org AKSW}\n"; - $year = " * @copyright Copyright (c) " . $git_year . ", {@link http://aksw.org AKSW}\n"; - $this->copyright[4]= $year; $tokens = $phpcsFile->getTokens(); + exec('([ -d .git ] && echo .git) || git rev-parse --git-dir 2> /dev/null', $git_test); + if(!empty($git_test)) + { + exec('git log --reverse ' . $phpcsFile->getFilename() . ' | head -3' , $output1); + preg_match("/( )[0-9]{4}( )/", $output1[2],$git_year_array1); + $git_year1=str_replace(' ','',$git_year_array1[0]); + exec('git log -1 ' . $phpcsFile->getFilename(), $output2); + preg_match("/( )[0-9]{4}( )/", $output2[2],$git_year_array2); + $git_year2=str_replace(' ','',$git_year_array2[0]); + if(strcmp($git_year1,$git_year2)!=0) + { + $git_year1 .='-'; + $git_year1 .=$git_year2; + } + //$year = " * @copyright Copyright (c) " . date('Y') . ", {@link http://aksw.org AKSW}\n"; + $year = " * @copyright Copyright (c) " . $git_year1 . ", {@link http://aksw.org AKSW}\n"; + $this->copyright[4]= $year; + } + else { + preg_match("/( )[0-9]{4}(-[0-9]{4})?/",$tokens[16]['content'],$non_git_year); + $year = " * @copyright Copyright (c) " . str_replace(' ','',$non_git_year[0]) . ", {@link http://aksw.org AKSW}\n"; + $this->copyright[4]= $year; + } $tokenizer = new PHP_CodeSniffer_Tokenizers_Comment(); $expectedString = implode($this->copyright); $expectedTokens = $tokenizer->tokenizeString($expectedString, PHP_EOL, 0); @@ -118,7 +135,6 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) ); return; } - $j = 0; for ($i = $commentStart; $i <= $commentEnd; $i++) { if ($tokens[$i]['content'] !== $expectedTokens[$j]["content"]) { diff --git a/phpcs.xml b/phpcs.xml index ffcbf1e16..1940476ef 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -134,7 +134,5 @@ application/tests/Bootstrap.php - - - + diff --git a/phpcs_year.xml b/phpcs_year.xml deleted file mode 100644 index 1940476ef..000000000 --- a/phpcs_year.xml +++ /dev/null @@ -1,138 +0,0 @@ - - - The combination of codingstandards used for Ontowiki. - - ./application/ - ./extensions/ - - - > - - - ./application/scripts/ - ./extensions/exconf/pclzip.lib.php - ./extensions/exconf/Archive.php - ./extensions/markdown/parser/markdown.php - - - - - - - - - - - - - - - - - - - - - - - - 3 - - - - - - - - 3 - - - - - - - - - - - - - - - - - - - - - - - - - * - - - - - - - - - - - - - - - - - - - - index.php - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */Sniffs/* - - - - - - - application/tests/Bootstrap.php - - - From 4b3d0e8bcbeb25d2b56ff7d277824cab6d1c853e Mon Sep 17 00:00:00 2001 From: shinobu Date: Tue, 3 May 2016 20:35:01 +0200 Subject: [PATCH 118/156] disable front-end cache in config.ini.dist --- config.ini.dist | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/config.ini.dist b/config.ini.dist index a3d699f2b..3455e3296 100644 --- a/config.ini.dist +++ b/config.ini.dist @@ -110,7 +110,7 @@ mail.localname.recovery = "ontowiki-account-recovery" ;; Options for cache frontend -cache.frontend.enable = true +cache.frontend.enable = false cache.frontend.lifetime = 0 ;cache.frontend.logging = false ;cache.frontend.write_control = true @@ -122,7 +122,7 @@ cache.frontend.cache_id_prefix = 'OW_' ;; Available: file | memcached | database | sqlite | apc ;; Recommended: memcached | file cache.backend.type = "file" - + ;; Options for file cache backend cache.backend.file.cache_dir = "./cache/" cache.backend.file.file_locking = NULL @@ -155,4 +155,3 @@ news.feedUrl = "http://blog.aksw.org/feed/?cat=5&client={{version.label}}&versio ;; uncomment this line if you need more information ;; ;debug = true - From 3824486e314d092cbdd51ce2fa6343f76cce4752 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Thu, 12 May 2016 18:47:20 +0200 Subject: [PATCH 119/156] Move progress parameter for phpcs to makefile Move the progress parameter (-p) for phpcs to the makefile in order for IDEs (Atom) to automatically understand the output of phpcs --- Makefile | 3 ++- phpcs.xml | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 0d6baf446..bd46c3cbd 100644 --- a/Makefile +++ b/Makefile @@ -153,7 +153,8 @@ debianize: # #### config #### codesniffer: - $(PHPCS) + $(PHPCS) -p + codebeautifier: $(PHPCBF) diff --git a/phpcs.xml b/phpcs.xml index 1940476ef..5a9d9f02a 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -6,8 +6,6 @@ ./extensions/ - > - ./application/scripts/ ./extensions/exconf/pclzip.lib.php From 0558949774982f15bcca06dd4b0ee4f0f7796223 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Fri, 13 May 2016 14:27:17 +0200 Subject: [PATCH 120/156] Clean up default.ini/config.ini.dist, disable caches per default --- application/config/default.ini | 9 ++++++--- config.ini.dist | 28 ++++++++++++++-------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/application/config/default.ini b/application/config/default.ini index 6dd0c3b8b..29282528c 100644 --- a/application/config/default.ini +++ b/application/config/default.ini @@ -30,6 +30,9 @@ title.prefix = "OntoWiki" ;; title.separator = " — " +;; Option for specifying the RSS/Atom feed loaded in the OntoWiki index actions "News" module +;; set to "false" to completely disable the feed +news.feedUrl = "http://blog.aksw.org/feed/?cat=5&client={{version.label}}&version={{version.number}}&suffix={{version.suffix}}" ;; ; Title Helper Configuration @@ -265,19 +268,19 @@ log.path = "logs" versioning = true ;; Erfurt Query Cache -cache.query.enable = true +cache.query.enable = false ;; logging is not recommended (performance) ;cache.query.logging = 0 ;; only database caching at the moment cache.query.type = database ;; Erfurt Object Cache -cache.enable = true ; clear the cache if you switch from 0 to 1! +cache.enable = false ; clear the cache if you switch from 0 to 1! cache.type = database ; database, sqllite ;; Options for cache frontend -cache.frontend.enable = true +cache.frontend.enable = false cache.frontend.lifetime = 0 ;cache.frontend.logging = false ;cache.frontend.write_control = true diff --git a/config.ini.dist b/config.ini.dist index 3455e3296..f0ae821a3 100644 --- a/config.ini.dist +++ b/config.ini.dist @@ -103,35 +103,35 @@ mail.localname.recovery = "ontowiki-account-recovery" ;vhosts[] = "http://graph2.ontowiki.de" ;;;; -;; Uncomment this line to turn off the query and object cache (NOT recommended) +;; Uncomment this line to turn on the query and object cache (experimental) ;; -;cache.enable = false -;cache.query.enable = false +;cache.enable = true +;cache.query.enable = true -;; Options for cache frontend -cache.frontend.enable = false -cache.frontend.lifetime = 0 +;; Options for cache frontend (experimental) +;cache.frontend.enable = true +;cache.frontend.lifetime = 0 ;cache.frontend.logging = false ;cache.frontend.write_control = true ;cache.frontend.automatic_cleaning_factor = 10 ;cache.frontend.ignore_user_abort = false -cache.frontend.cache_id_prefix = 'OW_' +;cache.frontend.cache_id_prefix = 'OW_' ;; Cache backend options ;; Available: file | memcached | database | sqlite | apc ;; Recommended: memcached | file -cache.backend.type = "file" +;cache.backend.type = "file" ;; Options for file cache backend -cache.backend.file.cache_dir = "./cache/" -cache.backend.file.file_locking = NULL +;cache.backend.file.cache_dir = "./cache/" +;cache.backend.file.file_locking = NULL ;; Options for memcached cache backend ;cache.backend.memcached.compression = false ;cache.backend.memcached.compatibility = false ;; You can define several servers: copy block, below and increase number and configure properly -cache.backend.memcached.servers.0.host = "localhost" +;cache.backend.memcached.servers.0.host = "localhost" ;cache.backend.memcached.servers.0.port = 11211 ;cache.backend.memcached.servers.0.persistent = true ;cache.backend.memcached.servers.0.weight = 1 @@ -144,12 +144,12 @@ cache.backend.sqlite.cache_db_complete_path = "/tmp/ow_cache.sqlite" ;cache.backend.sqlite.automatic_vacuum_factor = 10 -;; Options for Gearman/worker -worker.enable = false +;; Options for Gearman/worker (experimental) +;worker.enable = true ;; Option for specifying the RSS/Atom feed loaded in the OntoWiki index actions "News" module ;; set to "false" to completely disable the feed -news.feedUrl = "http://blog.aksw.org/feed/?cat=5&client={{version.label}}&version={{version.number}}&suffix={{version.suffix}}" +;news.feedUrl = "http://blog.aksw.org/feed/?cat=5&client={{version.label}}&version={{version.number}}&suffix={{version.suffix}}" ;;;; ;; uncomment this line if you need more information From 24aeae77b3268a219ee07f56bc31a6a917b95ceb Mon Sep 17 00:00:00 2001 From: shinobu Date: Thu, 12 May 2016 14:47:54 +0200 Subject: [PATCH 121/156] fixed the errors about empty arrays tests now safely if git exists and if a git log for the file exists, if neither exists, the date that is in the file will be used --- .../Sniffs/Commenting/FileCommentSniff.php | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php index fd624af78..cde87d8f2 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php @@ -63,35 +63,43 @@ public function register() public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { $tokens = $phpcsFile->getTokens(); - exec('([ -d .git ] && echo .git) || git rev-parse --git-dir 2> /dev/null', $git_test); - if(!empty($git_test)) - { - exec('git log --reverse ' . $phpcsFile->getFilename() . ' | head -3' , $output1); - preg_match("/( )[0-9]{4}( )/", $output1[2],$git_year_array1); - $git_year1=str_replace(' ','',$git_year_array1[0]); - exec('git log -1 ' . $phpcsFile->getFilename(), $output2); - preg_match("/( )[0-9]{4}( )/", $output2[2],$git_year_array2); - $git_year2=str_replace(' ','',$git_year_array2[0]); - if(strcmp($git_year1,$git_year2)!=0) - { - $git_year1 .='-'; - $git_year1 .=$git_year2; - } - //$year = " * @copyright Copyright (c) " . date('Y') . ", {@link http://aksw.org AKSW}\n"; - $year = " * @copyright Copyright (c) " . $git_year1 . ", {@link http://aksw.org AKSW}\n"; - $this->copyright[4]= $year; + // Find the next non whitespace token. + $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); + $noGit= true; + //test if a git exists to get the years from 'git log' + exec('([ -d .git ] && echo .git) || git rev-parse --git-dir 2> /dev/null', $gitTest); + if(!empty($gitTest)){ + //test if a git entry exists to get the years from 'git log' + exec('git log --reverse ' . $phpcsFile->getFilename() . ' | head -3' , $outputCreationYear); + if(!empty($outputCreationYear)) { + preg_match("/( )[0-9]{4}( )/", $outputCreationYear[2],$gitOldYearArray); + $gitYearOld=str_replace(' ','',$gitOldYearArray[0]); + exec('git log -1 ' . $phpcsFile->getFilename(), $outputLastEditYear); + preg_match("/( )[0-9]{4}( )/", $outputLastEditYear[2],$gitNewYearArray); + $gitYearNew=str_replace(' ','',$gitNewYearArray[0]); + if(strcmp($gitYearOld,$gitYearNew)!=0) + { + $gitYearOld .='-'; + $gitYearOld .=$gitYearNew; + } + $year = " * @copyright Copyright (c) " . $gitYearOld . ", {@link http://aksw.org AKSW}\n"; + $this->copyright[4]= $year; + $noGit = false; + } } - else { - preg_match("/( )[0-9]{4}(-[0-9]{4})?/",$tokens[16]['content'],$non_git_year); - $year = " * @copyright Copyright (c) " . str_replace(' ','',$non_git_year[0]) . ", {@link http://aksw.org AKSW}\n"; - $this->copyright[4]= $year; + if($noGit) { + if(count($tokens)>15) + preg_match("/( )[0-9]{4}(-[0-9]{4})?/",$tokens[$commentStart+15]['content'],$nonGitYear); + //tests if the file has no year/wrong editing and the year can't be found + if(!empty($nonGitYear)) + { + $year = " * @copyright Copyright (c) " . str_replace(' ','',$nonGitYear[0]) . ", {@link http://aksw.org AKSW}\n"; + $this->copyright[4]= $year; + } } $tokenizer = new PHP_CodeSniffer_Tokenizers_Comment(); $expectedString = implode($this->copyright); $expectedTokens = $tokenizer->tokenizeString($expectedString, PHP_EOL, 0); - // Find the next non whitespace token. - $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - // Allow namespace statements at the top of the file. if ($tokens[$commentStart]['code'] === T_NAMESPACE) { $semicolon = $phpcsFile->findNext(T_SEMICOLON, ($commentStart + 1)); @@ -108,7 +116,6 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) if ($fix === true) { $phpcsFile->fixer->replaceToken($commentStart, "/**"); } - return; } From f4c2d80d366358d28b0955d69e7451cdfc0dae59 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Fri, 20 May 2016 22:28:44 +0200 Subject: [PATCH 122/156] Remove trim() to give more meaningfull output --- .../Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php index cde87d8f2..d58850bb2 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php @@ -147,8 +147,8 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) if ($tokens[$i]['content'] !== $expectedTokens[$j]["content"]) { $error = 'Found wrong part of copyright notice. Expected "%s", but found "%s"'; $data = array( - trim($expectedTokens[$j]["content"]), - trim($tokens[$i]['content']), + $expectedTokens[$j]["content"], + $tokens[$i]['content'], ); $fix = $phpcsFile->addFixableError($error, $i, 'WrongText', $data); From bf495062410fb7b2b0490a0fa3e0eef457ac797b Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Sat, 21 May 2016 01:13:56 +0200 Subject: [PATCH 123/156] Improve FileCommentSniff to also accept older years and to ignore sub repos --- .../Sniffs/Commenting/FileCommentSniff.php | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php index d58850bb2..1a5900378 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php @@ -65,31 +65,42 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) $tokens = $phpcsFile->getTokens(); // Find the next non whitespace token. $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); + $noGit= true; + if(count($tokens)>15) { + preg_match("/ ([0-9]{4})(-[0-9]{4})?/",$tokens[$commentStart+15]['content'], $nonGitYear); + } + //test if a git exists to get the years from 'git log' exec('([ -d .git ] && echo .git) || git rev-parse --git-dir 2> /dev/null', $gitTest); if(!empty($gitTest)){ + $output = array(); + exec('git ls-files --error-unmatch ' . $phpcsFile->getFilename() . ' 2> /dev/null', $output, $returnValue); + if ($returnValue == 0) { + $noGit = false; + } + } + + if(!$noGit){ //test if a git entry exists to get the years from 'git log' exec('git log --reverse ' . $phpcsFile->getFilename() . ' | head -3' , $outputCreationYear); - if(!empty($outputCreationYear)) { + //if(!empty($outputCreationYear)) { preg_match("/( )[0-9]{4}( )/", $outputCreationYear[2],$gitOldYearArray); $gitYearOld=str_replace(' ','',$gitOldYearArray[0]); + if (isset($nonGitYear) && isset($nonGitYear[1]) && $gitYearOld > $nonGitYear[1]) { + $gitYearOld = $nonGitYear[1]; + } exec('git log -1 ' . $phpcsFile->getFilename(), $outputLastEditYear); preg_match("/( )[0-9]{4}( )/", $outputLastEditYear[2],$gitNewYearArray); $gitYearNew=str_replace(' ','',$gitNewYearArray[0]); - if(strcmp($gitYearOld,$gitYearNew)!=0) - { + if(strcmp($gitYearOld,$gitYearNew)!=0) { $gitYearOld .='-'; $gitYearOld .=$gitYearNew; } $year = " * @copyright Copyright (c) " . $gitYearOld . ", {@link http://aksw.org AKSW}\n"; $this->copyright[4]= $year; - $noGit = false; - } - } - if($noGit) { - if(count($tokens)>15) - preg_match("/( )[0-9]{4}(-[0-9]{4})?/",$tokens[$commentStart+15]['content'],$nonGitYear); + //} + } else { //tests if the file has no year/wrong editing and the year can't be found if(!empty($nonGitYear)) { @@ -97,6 +108,7 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) $this->copyright[4]= $year; } } + $tokenizer = new PHP_CodeSniffer_Tokenizers_Comment(); $expectedString = implode($this->copyright); $expectedTokens = $tokenizer->tokenizeString($expectedString, PHP_EOL, 0); From cc80d93b7492322c2c5208e4becc04a81783b1df Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Sat, 21 May 2016 01:21:58 +0200 Subject: [PATCH 124/156] Fix File Comments with new Sniff - Fix the file level comments with the new Sniff to adjust the year and white spaces - Now this also means to advance the year to 2016 ;-) --- application/Bootstrap.php | 4 ++-- application/classes/OntoWiki.php | 2 +- application/classes/OntoWiki/Component/Helper.php | 2 +- application/classes/OntoWiki/Dispatcher.php | 2 +- application/classes/OntoWiki/Extension/Manager.php | 2 +- application/classes/OntoWiki/Menu/Registry.php | 2 +- application/classes/OntoWiki/Message.php | 2 +- application/classes/OntoWiki/Model.php | 2 +- application/classes/OntoWiki/Model/Hierarchy.php | 2 +- application/classes/OntoWiki/Model/Instances.php | 2 +- application/classes/OntoWiki/Model/Resource.php | 2 +- application/classes/OntoWiki/Model/TitleHelper.php | 2 +- application/classes/OntoWiki/Module.php | 2 +- application/classes/OntoWiki/Module/Exception.php | 2 +- application/classes/OntoWiki/Module/Registry.php | 2 +- application/classes/OntoWiki/Navigation.php | 2 +- application/classes/OntoWiki/Toolbar.php | 2 +- application/classes/OntoWiki/Utils.php | 2 +- application/controllers/ApplicationController.php | 2 +- application/controllers/IndexController.php | 2 +- application/controllers/ModelController.php | 2 +- application/controllers/ResourceController.php | 2 +- application/controllers/ServiceController.php | 2 +- application/shell.worker.client.php | 5 ++--- application/shell.worker.php | 4 ++-- application/tests/Bootstrap.php | 2 +- application/tests/BootstrapExtensions.php | 2 +- .../Standards/Ontowiki/Sniffs/Classes/ClassFilePathSniff.php | 2 +- .../Ontowiki/Sniffs/Functions/ForbiddenFunctionsSniff.php | 2 +- .../Sniffs/Functions/FunctionCallArgumentSpacingSniff.php | 2 +- .../Standards/Ontowiki/Sniffs/PHP/GetRequestDataSniff.php | 2 +- .../OntoWiki/Extension/ManagerIntegrationTest.php | 2 +- .../integration/OntoWiki/Model/InstancesIntegrationTest.php | 2 +- .../OntoWiki/Model/TitleHelperIntegrationTest.php | 2 +- application/tests/unit/OntoWiki/Model/InstancesTest.php | 2 +- application/tests/unit/OntoWiki/UtilsTest.php | 2 +- extensions/account/AccountController.php | 2 +- extensions/account/LoginModule.php | 2 +- extensions/application/ApplicationModule.php | 2 +- extensions/auth/AuthController.php | 4 ++-- extensions/autologin/AutologinPlugin.php | 4 ++-- extensions/basicimporter/BasicimporterPlugin.php | 2 +- extensions/bookmarklet/BookmarkletModule.php | 4 ++-- extensions/ckan/CkanController.php | 2 +- extensions/ckan/CkanHelper.php | 2 +- extensions/community/CommentModule.php | 2 +- extensions/community/CommunityController.php | 2 +- extensions/community/CommunityHelper.php | 2 +- extensions/community/RatingModule.php | 2 +- extensions/cors/CorsPlugin.php | 2 +- extensions/datagathering/DatagatheringController.php | 2 +- extensions/datagathering/DatagatheringHelper.php | 2 +- extensions/datagathering/DatagatheringPlugin.php | 2 +- extensions/defaultmodel/DefaultmodelPlugin.php | 2 +- extensions/exconf/ExconfController.php | 2 +- extensions/exconf/ExconfHelper.php | 2 +- extensions/exconf/OutlineModule.php | 2 +- extensions/filter/CustomfilterModule.php | 2 +- extensions/filter/FilterController.php | 2 +- extensions/filter/FilterModule.php | 2 +- extensions/googletracking/GoogletrackingPlugin.php | 2 +- extensions/hideproperties/HidepropertiesPlugin.php | 2 +- extensions/history/HistoryController.php | 4 ++-- extensions/history/HistoryHelper.php | 4 ++-- extensions/imagelink/ImagelinkPlugin.php | 2 +- extensions/imprint/ImprintModule.php | 2 +- extensions/jsonrpc/EvolutionJsonrpcAdapter.php | 2 +- extensions/jsonrpc/JsonrpcController.php | 2 +- extensions/jsonrpc/MetaJsonrpcAdapter.php | 2 +- extensions/jsonrpc/ModelJsonrpcAdapter.php | 2 +- extensions/jsonrpc/StoreJsonrpcAdapter.php | 2 +- extensions/linkeddataserver/LinkeddataPlugin.php | 2 +- extensions/listmodules/ShowpropertiesModule.php | 2 +- extensions/literaltypes/LiteraltypesPlugin.php | 2 +- extensions/mail/jobs/Mail.php | 4 ++-- extensions/mailtolink/MailtolinkPlugin.php | 2 +- extensions/markdown/MarkdownPlugin.php | 2 +- extensions/modellist/ModellistModule.php | 2 +- extensions/navigation/NavigationController.php | 2 +- extensions/navigation/NavigationHelper.php | 2 +- extensions/navigation/NavigationModule.php | 2 +- extensions/pingback/PingbackController.php | 2 +- extensions/pingback/PingbackPlugin.php | 2 +- extensions/queries/QueriesController.php | 4 ++-- extensions/queries/QueriesHelper.php | 2 +- extensions/queries/SavequeryModule.php | 2 +- extensions/resourcecreationuri/ResourcecreationuriPlugin.php | 2 +- .../resourcecreationuri/classes/ResourceUriGenerator.php | 2 +- extensions/resourcemodules/LinkinghereModule.php | 2 +- extensions/resourcemodules/SimilarinstancesModule.php | 2 +- extensions/resourcemodules/UsageModule.php | 2 +- extensions/savedqueries/SavedqueriesController.php | 2 +- extensions/savedqueries/SavedqueriesModule.php | 2 +- extensions/selectlanguage/SelectlanguagePlugin.php | 2 +- extensions/semanticsitemap/SemanticsitemapController.php | 2 +- extensions/semanticsitemap/semanticsitemap.php | 2 +- extensions/sendmail/SendmailPlugin.php | 2 +- extensions/sindice/SindicePlugin.php | 2 +- extensions/sortproperties/SortpropertiesPlugin.php | 2 +- extensions/source/SourceHelper.php | 2 +- extensions/weblink/WeblinkPlugin.php | 2 +- 101 files changed, 111 insertions(+), 112 deletions(-) diff --git a/application/Bootstrap.php b/application/Bootstrap.php index 18d0a6193..48d9d92c4 100644 --- a/application/Bootstrap.php +++ b/application/Bootstrap.php @@ -2,8 +2,8 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} - * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ /** diff --git a/application/classes/OntoWiki.php b/application/classes/OntoWiki.php index f543c1621..18391193c 100644 --- a/application/classes/OntoWiki.php +++ b/application/classes/OntoWiki.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Component/Helper.php b/application/classes/OntoWiki/Component/Helper.php index 74af28197..930fa3adc 100644 --- a/application/classes/OntoWiki/Component/Helper.php +++ b/application/classes/OntoWiki/Component/Helper.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Dispatcher.php b/application/classes/OntoWiki/Dispatcher.php index 133cd90c2..f96282609 100644 --- a/application/classes/OntoWiki/Dispatcher.php +++ b/application/classes/OntoWiki/Dispatcher.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Extension/Manager.php b/application/classes/OntoWiki/Extension/Manager.php index fe83bc1d0..9e6d5e644 100644 --- a/application/classes/OntoWiki/Extension/Manager.php +++ b/application/classes/OntoWiki/Extension/Manager.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2010-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Menu/Registry.php b/application/classes/OntoWiki/Menu/Registry.php index 250078b8e..d27aef5a2 100644 --- a/application/classes/OntoWiki/Menu/Registry.php +++ b/application/classes/OntoWiki/Menu/Registry.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Message.php b/application/classes/OntoWiki/Message.php index b56d493d3..0efbd86b0 100644 --- a/application/classes/OntoWiki/Message.php +++ b/application/classes/OntoWiki/Message.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Model.php b/application/classes/OntoWiki/Model.php index b57c1cfbf..e592b20d8 100644 --- a/application/classes/OntoWiki/Model.php +++ b/application/classes/OntoWiki/Model.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Model/Hierarchy.php b/application/classes/OntoWiki/Model/Hierarchy.php index f2bc9cc1b..1bd1b5ad0 100644 --- a/application/classes/OntoWiki/Model/Hierarchy.php +++ b/application/classes/OntoWiki/Model/Hierarchy.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Model/Instances.php b/application/classes/OntoWiki/Model/Instances.php index b7269be1a..42121f4f1 100644 --- a/application/classes/OntoWiki/Model/Instances.php +++ b/application/classes/OntoWiki/Model/Instances.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Model/Resource.php b/application/classes/OntoWiki/Model/Resource.php index 565986d99..5532b84e7 100644 --- a/application/classes/OntoWiki/Model/Resource.php +++ b/application/classes/OntoWiki/Model/Resource.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Model/TitleHelper.php b/application/classes/OntoWiki/Model/TitleHelper.php index 15e51d1df..22fef3b6b 100644 --- a/application/classes/OntoWiki/Model/TitleHelper.php +++ b/application/classes/OntoWiki/Model/TitleHelper.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Module.php b/application/classes/OntoWiki/Module.php index 9453ea267..498b947b1 100644 --- a/application/classes/OntoWiki/Module.php +++ b/application/classes/OntoWiki/Module.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2011, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Module/Exception.php b/application/classes/OntoWiki/Module/Exception.php index a0d5091d4..0bf92c04a 100644 --- a/application/classes/OntoWiki/Module/Exception.php +++ b/application/classes/OntoWiki/Module/Exception.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Module/Registry.php b/application/classes/OntoWiki/Module/Registry.php index ea8001e2a..a8a4924b0 100644 --- a/application/classes/OntoWiki/Module/Registry.php +++ b/application/classes/OntoWiki/Module/Registry.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Navigation.php b/application/classes/OntoWiki/Navigation.php index 1dc55518b..85b4740e8 100644 --- a/application/classes/OntoWiki/Navigation.php +++ b/application/classes/OntoWiki/Navigation.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2009-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Toolbar.php b/application/classes/OntoWiki/Toolbar.php index 895dacfff..2b6531874 100644 --- a/application/classes/OntoWiki/Toolbar.php +++ b/application/classes/OntoWiki/Toolbar.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Utils.php b/application/classes/OntoWiki/Utils.php index f8c0b8435..1a995f59d 100644 --- a/application/classes/OntoWiki/Utils.php +++ b/application/classes/OntoWiki/Utils.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/controllers/ApplicationController.php b/application/controllers/ApplicationController.php index ffa9e2091..4de61227d 100644 --- a/application/controllers/ApplicationController.php +++ b/application/controllers/ApplicationController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/controllers/IndexController.php b/application/controllers/IndexController.php index b8a9aca48..c96e035ad 100644 --- a/application/controllers/IndexController.php +++ b/application/controllers/IndexController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/controllers/ModelController.php b/application/controllers/ModelController.php index b05725477..763e22094 100644 --- a/application/controllers/ModelController.php +++ b/application/controllers/ModelController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/controllers/ResourceController.php b/application/controllers/ResourceController.php index 1855dc1c9..582d2d934 100644 --- a/application/controllers/ResourceController.php +++ b/application/controllers/ResourceController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/controllers/ServiceController.php b/application/controllers/ServiceController.php index 1eba39bd1..d9eb4eafd 100644 --- a/application/controllers/ServiceController.php +++ b/application/controllers/ServiceController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/shell.worker.client.php b/application/shell.worker.client.php index 963a5edbd..e24733b4c 100755 --- a/application/shell.worker.client.php +++ b/application/shell.worker.client.php @@ -3,8 +3,8 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} - * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * @copyright Copyright (c) 2012-2016, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ /** @@ -186,4 +186,3 @@ function initApp() /* -- END OF EXAMPLE -------------------------------------------------- */ echo "done in " . round((microtime(true) - $timeStart) * 1000, 2) . "ms" . PHP_EOL; - diff --git a/application/shell.worker.php b/application/shell.worker.php index fae9e533b..9511900d0 100755 --- a/application/shell.worker.php +++ b/application/shell.worker.php @@ -3,8 +3,8 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} - * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * @copyright Copyright (c) 2012-2016, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ /** diff --git a/application/tests/Bootstrap.php b/application/tests/Bootstrap.php index c585bc2de..c8e97ff4a 100644 --- a/application/tests/Bootstrap.php +++ b/application/tests/Bootstrap.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/tests/BootstrapExtensions.php b/application/tests/BootstrapExtensions.php index 016a51f51..cf57d73ed 100644 --- a/application/tests/BootstrapExtensions.php +++ b/application/tests/BootstrapExtensions.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Classes/ClassFilePathSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Classes/ClassFilePathSniff.php index 302d7014d..f86205a61 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Classes/ClassFilePathSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Classes/ClassFilePathSniff.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Functions/ForbiddenFunctionsSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Functions/ForbiddenFunctionsSniff.php index 45e91401d..1992daf5b 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Functions/ForbiddenFunctionsSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Functions/ForbiddenFunctionsSniff.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Functions/FunctionCallArgumentSpacingSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Functions/FunctionCallArgumentSpacingSniff.php index 170416a39..41f32876c 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Functions/FunctionCallArgumentSpacingSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Functions/FunctionCallArgumentSpacingSniff.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2012-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/PHP/GetRequestDataSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/PHP/GetRequestDataSniff.php index e75c55fb2..5822d4682 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/PHP/GetRequestDataSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/PHP/GetRequestDataSniff.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/tests/integration/OntoWiki/Extension/ManagerIntegrationTest.php b/application/tests/integration/OntoWiki/Extension/ManagerIntegrationTest.php index a2b2cbea9..301009bb3 100644 --- a/application/tests/integration/OntoWiki/Extension/ManagerIntegrationTest.php +++ b/application/tests/integration/OntoWiki/Extension/ManagerIntegrationTest.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php b/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php index 2425005da..462c15027 100644 --- a/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php +++ b/application/tests/integration/OntoWiki/Model/InstancesIntegrationTest.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/tests/integration/OntoWiki/Model/TitleHelperIntegrationTest.php b/application/tests/integration/OntoWiki/Model/TitleHelperIntegrationTest.php index ef771e4cf..c52492b04 100644 --- a/application/tests/integration/OntoWiki/Model/TitleHelperIntegrationTest.php +++ b/application/tests/integration/OntoWiki/Model/TitleHelperIntegrationTest.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/tests/unit/OntoWiki/Model/InstancesTest.php b/application/tests/unit/OntoWiki/Model/InstancesTest.php index a859a98a5..68fc22aae 100644 --- a/application/tests/unit/OntoWiki/Model/InstancesTest.php +++ b/application/tests/unit/OntoWiki/Model/InstancesTest.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/tests/unit/OntoWiki/UtilsTest.php b/application/tests/unit/OntoWiki/UtilsTest.php index a16e86eef..de7b4436f 100644 --- a/application/tests/unit/OntoWiki/UtilsTest.php +++ b/application/tests/unit/OntoWiki/UtilsTest.php @@ -14,7 +14,7 @@ * @subpackage UnitTests * @copyright Copyright (c) 2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License, version 2 (GPLv2) - * @author Natanael Arndt + * @author Natanael Arndt */ class OntoWiki_UtilsTest extends PHPUnit_Framework_TestCase { diff --git a/extensions/account/AccountController.php b/extensions/account/AccountController.php index 3010f1d68..e3b92aef8 100644 --- a/extensions/account/AccountController.php +++ b/extensions/account/AccountController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/account/LoginModule.php b/extensions/account/LoginModule.php index 5dcfaa1d8..fd4750bec 100644 --- a/extensions/account/LoginModule.php +++ b/extensions/account/LoginModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/application/ApplicationModule.php b/extensions/application/ApplicationModule.php index bfcb1c553..f457718aa 100644 --- a/extensions/application/ApplicationModule.php +++ b/extensions/application/ApplicationModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/auth/AuthController.php b/extensions/auth/AuthController.php index 79faac85c..abecfbe9e 100644 --- a/extensions/auth/AuthController.php +++ b/extensions/auth/AuthController.php @@ -2,8 +2,8 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} - * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ require_once 'OntoWiki/Controller/Component.php'; diff --git a/extensions/autologin/AutologinPlugin.php b/extensions/autologin/AutologinPlugin.php index 66a2ef1e3..f54d8591a 100644 --- a/extensions/autologin/AutologinPlugin.php +++ b/extensions/autologin/AutologinPlugin.php @@ -2,8 +2,8 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} - * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ require_once 'OntoWiki/Plugin.php'; diff --git a/extensions/basicimporter/BasicimporterPlugin.php b/extensions/basicimporter/BasicimporterPlugin.php index 32c1414ee..fb6701df1 100644 --- a/extensions/basicimporter/BasicimporterPlugin.php +++ b/extensions/basicimporter/BasicimporterPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2013-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/bookmarklet/BookmarkletModule.php b/extensions/bookmarklet/BookmarkletModule.php index 94a123f13..5142e4a4b 100644 --- a/extensions/bookmarklet/BookmarkletModule.php +++ b/extensions/bookmarklet/BookmarkletModule.php @@ -2,8 +2,8 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} - * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ /** diff --git a/extensions/ckan/CkanController.php b/extensions/ckan/CkanController.php index 0884fbb40..f46ad2473 100644 --- a/extensions/ckan/CkanController.php +++ b/extensions/ckan/CkanController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/ckan/CkanHelper.php b/extensions/ckan/CkanHelper.php index 2996d7742..d25410636 100644 --- a/extensions/ckan/CkanHelper.php +++ b/extensions/ckan/CkanHelper.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/community/CommentModule.php b/extensions/community/CommentModule.php index 2c0427a82..29f2f0c1c 100644 --- a/extensions/community/CommentModule.php +++ b/extensions/community/CommentModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/community/CommunityController.php b/extensions/community/CommunityController.php index 96dd1acd9..66b91599b 100644 --- a/extensions/community/CommunityController.php +++ b/extensions/community/CommunityController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/community/CommunityHelper.php b/extensions/community/CommunityHelper.php index 50c8adb43..355b409ca 100644 --- a/extensions/community/CommunityHelper.php +++ b/extensions/community/CommunityHelper.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/community/RatingModule.php b/extensions/community/RatingModule.php index 30c9839e3..94f3c1711 100644 --- a/extensions/community/RatingModule.php +++ b/extensions/community/RatingModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/cors/CorsPlugin.php b/extensions/cors/CorsPlugin.php index dc77aec59..239b9318d 100644 --- a/extensions/cors/CorsPlugin.php +++ b/extensions/cors/CorsPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/datagathering/DatagatheringController.php b/extensions/datagathering/DatagatheringController.php index eb14fa235..c6e80ff0b 100644 --- a/extensions/datagathering/DatagatheringController.php +++ b/extensions/datagathering/DatagatheringController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/datagathering/DatagatheringHelper.php b/extensions/datagathering/DatagatheringHelper.php index cc85d7d64..5e2e3b687 100644 --- a/extensions/datagathering/DatagatheringHelper.php +++ b/extensions/datagathering/DatagatheringHelper.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/datagathering/DatagatheringPlugin.php b/extensions/datagathering/DatagatheringPlugin.php index fe37e56e9..446af6a9c 100644 --- a/extensions/datagathering/DatagatheringPlugin.php +++ b/extensions/datagathering/DatagatheringPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/defaultmodel/DefaultmodelPlugin.php b/extensions/defaultmodel/DefaultmodelPlugin.php index effc5004e..44fb298b4 100644 --- a/extensions/defaultmodel/DefaultmodelPlugin.php +++ b/extensions/defaultmodel/DefaultmodelPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/exconf/ExconfController.php b/extensions/exconf/ExconfController.php index 215e34619..d1d29a7e1 100644 --- a/extensions/exconf/ExconfController.php +++ b/extensions/exconf/ExconfController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/exconf/ExconfHelper.php b/extensions/exconf/ExconfHelper.php index 5be85766a..e56b90d1f 100644 --- a/extensions/exconf/ExconfHelper.php +++ b/extensions/exconf/ExconfHelper.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/exconf/OutlineModule.php b/extensions/exconf/OutlineModule.php index 9f7a65065..54e80a13e 100644 --- a/extensions/exconf/OutlineModule.php +++ b/extensions/exconf/OutlineModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/filter/CustomfilterModule.php b/extensions/filter/CustomfilterModule.php index cddda60e4..bfa317154 100644 --- a/extensions/filter/CustomfilterModule.php +++ b/extensions/filter/CustomfilterModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/filter/FilterController.php b/extensions/filter/FilterController.php index 6cb28c34e..9bc856c5e 100644 --- a/extensions/filter/FilterController.php +++ b/extensions/filter/FilterController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/filter/FilterModule.php b/extensions/filter/FilterModule.php index 1c06edf4c..3b9c6f3ac 100644 --- a/extensions/filter/FilterModule.php +++ b/extensions/filter/FilterModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/googletracking/GoogletrackingPlugin.php b/extensions/googletracking/GoogletrackingPlugin.php index 4a1815ea6..c77ec3f30 100644 --- a/extensions/googletracking/GoogletrackingPlugin.php +++ b/extensions/googletracking/GoogletrackingPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/hideproperties/HidepropertiesPlugin.php b/extensions/hideproperties/HidepropertiesPlugin.php index 799e66b02..42b35f7b2 100644 --- a/extensions/hideproperties/HidepropertiesPlugin.php +++ b/extensions/hideproperties/HidepropertiesPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/history/HistoryController.php b/extensions/history/HistoryController.php index d6080e385..598d911e4 100644 --- a/extensions/history/HistoryController.php +++ b/extensions/history/HistoryController.php @@ -2,8 +2,8 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} - * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ /** diff --git a/extensions/history/HistoryHelper.php b/extensions/history/HistoryHelper.php index 5af949c3e..b47f621b4 100644 --- a/extensions/history/HistoryHelper.php +++ b/extensions/history/HistoryHelper.php @@ -2,8 +2,8 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} - * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ /** diff --git a/extensions/imagelink/ImagelinkPlugin.php b/extensions/imagelink/ImagelinkPlugin.php index c45de25d5..2af23b303 100644 --- a/extensions/imagelink/ImagelinkPlugin.php +++ b/extensions/imagelink/ImagelinkPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/imprint/ImprintModule.php b/extensions/imprint/ImprintModule.php index b2fe2d8c7..48f26c492 100644 --- a/extensions/imprint/ImprintModule.php +++ b/extensions/imprint/ImprintModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/jsonrpc/EvolutionJsonrpcAdapter.php b/extensions/jsonrpc/EvolutionJsonrpcAdapter.php index cc0f60192..35bc7f26a 100644 --- a/extensions/jsonrpc/EvolutionJsonrpcAdapter.php +++ b/extensions/jsonrpc/EvolutionJsonrpcAdapter.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2012-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/jsonrpc/JsonrpcController.php b/extensions/jsonrpc/JsonrpcController.php index 9be535fbb..0150f7b04 100644 --- a/extensions/jsonrpc/JsonrpcController.php +++ b/extensions/jsonrpc/JsonrpcController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/jsonrpc/MetaJsonrpcAdapter.php b/extensions/jsonrpc/MetaJsonrpcAdapter.php index d4838e5a7..96b820ecd 100644 --- a/extensions/jsonrpc/MetaJsonrpcAdapter.php +++ b/extensions/jsonrpc/MetaJsonrpcAdapter.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2012-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/jsonrpc/ModelJsonrpcAdapter.php b/extensions/jsonrpc/ModelJsonrpcAdapter.php index 66f22db8f..44ae3ba17 100644 --- a/extensions/jsonrpc/ModelJsonrpcAdapter.php +++ b/extensions/jsonrpc/ModelJsonrpcAdapter.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2012-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/jsonrpc/StoreJsonrpcAdapter.php b/extensions/jsonrpc/StoreJsonrpcAdapter.php index b8ddc5591..e4deffd25 100644 --- a/extensions/jsonrpc/StoreJsonrpcAdapter.php +++ b/extensions/jsonrpc/StoreJsonrpcAdapter.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2012-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/linkeddataserver/LinkeddataPlugin.php b/extensions/linkeddataserver/LinkeddataPlugin.php index 6a71f2454..9a10a94b7 100644 --- a/extensions/linkeddataserver/LinkeddataPlugin.php +++ b/extensions/linkeddataserver/LinkeddataPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/listmodules/ShowpropertiesModule.php b/extensions/listmodules/ShowpropertiesModule.php index 426bf2005..ab876eb80 100644 --- a/extensions/listmodules/ShowpropertiesModule.php +++ b/extensions/listmodules/ShowpropertiesModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/literaltypes/LiteraltypesPlugin.php b/extensions/literaltypes/LiteraltypesPlugin.php index 3a2225e64..eff831e99 100644 --- a/extensions/literaltypes/LiteraltypesPlugin.php +++ b/extensions/literaltypes/LiteraltypesPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/mail/jobs/Mail.php b/extensions/mail/jobs/Mail.php index c77c39409..88a73a555 100644 --- a/extensions/mail/jobs/Mail.php +++ b/extensions/mail/jobs/Mail.php @@ -2,8 +2,8 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} - * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * @copyright Copyright (c) 2013-2016, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ /** diff --git a/extensions/mailtolink/MailtolinkPlugin.php b/extensions/mailtolink/MailtolinkPlugin.php index 170757a8f..0718d6e33 100644 --- a/extensions/mailtolink/MailtolinkPlugin.php +++ b/extensions/mailtolink/MailtolinkPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/markdown/MarkdownPlugin.php b/extensions/markdown/MarkdownPlugin.php index bc1589b99..5ac628139 100644 --- a/extensions/markdown/MarkdownPlugin.php +++ b/extensions/markdown/MarkdownPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/modellist/ModellistModule.php b/extensions/modellist/ModellistModule.php index 0654dd097..5c3fea6ca 100644 --- a/extensions/modellist/ModellistModule.php +++ b/extensions/modellist/ModellistModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/navigation/NavigationController.php b/extensions/navigation/NavigationController.php index 7ba21c7b3..de61d14ae 100644 --- a/extensions/navigation/NavigationController.php +++ b/extensions/navigation/NavigationController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/navigation/NavigationHelper.php b/extensions/navigation/NavigationHelper.php index 78205ebf2..56f456eb5 100644 --- a/extensions/navigation/NavigationHelper.php +++ b/extensions/navigation/NavigationHelper.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/navigation/NavigationModule.php b/extensions/navigation/NavigationModule.php index 9c9ce8ed3..15a714990 100644 --- a/extensions/navigation/NavigationModule.php +++ b/extensions/navigation/NavigationModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/pingback/PingbackController.php b/extensions/pingback/PingbackController.php index d08ca9efa..4ac257d3e 100644 --- a/extensions/pingback/PingbackController.php +++ b/extensions/pingback/PingbackController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/pingback/PingbackPlugin.php b/extensions/pingback/PingbackPlugin.php index 30413bef7..4c1cc61c1 100644 --- a/extensions/pingback/PingbackPlugin.php +++ b/extensions/pingback/PingbackPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/queries/QueriesController.php b/extensions/queries/QueriesController.php index 3acd9d440..ead6f38c9 100644 --- a/extensions/queries/QueriesController.php +++ b/extensions/queries/QueriesController.php @@ -2,8 +2,8 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} - * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ /** diff --git a/extensions/queries/QueriesHelper.php b/extensions/queries/QueriesHelper.php index 118dbd6bb..7330795f5 100644 --- a/extensions/queries/QueriesHelper.php +++ b/extensions/queries/QueriesHelper.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/queries/SavequeryModule.php b/extensions/queries/SavequeryModule.php index 708990e74..13b0b60b8 100644 --- a/extensions/queries/SavequeryModule.php +++ b/extensions/queries/SavequeryModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/resourcecreationuri/ResourcecreationuriPlugin.php b/extensions/resourcecreationuri/ResourcecreationuriPlugin.php index 47fdfcd65..8c4b24ab5 100644 --- a/extensions/resourcecreationuri/ResourcecreationuriPlugin.php +++ b/extensions/resourcecreationuri/ResourcecreationuriPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/resourcecreationuri/classes/ResourceUriGenerator.php b/extensions/resourcecreationuri/classes/ResourceUriGenerator.php index d663ca4b6..02677842f 100644 --- a/extensions/resourcecreationuri/classes/ResourceUriGenerator.php +++ b/extensions/resourcecreationuri/classes/ResourceUriGenerator.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/resourcemodules/LinkinghereModule.php b/extensions/resourcemodules/LinkinghereModule.php index 724154bed..7399694b1 100644 --- a/extensions/resourcemodules/LinkinghereModule.php +++ b/extensions/resourcemodules/LinkinghereModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/resourcemodules/SimilarinstancesModule.php b/extensions/resourcemodules/SimilarinstancesModule.php index 455174ccd..c841a8f8d 100644 --- a/extensions/resourcemodules/SimilarinstancesModule.php +++ b/extensions/resourcemodules/SimilarinstancesModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/resourcemodules/UsageModule.php b/extensions/resourcemodules/UsageModule.php index 03259ab8d..ce518a2ac 100644 --- a/extensions/resourcemodules/UsageModule.php +++ b/extensions/resourcemodules/UsageModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/savedqueries/SavedqueriesController.php b/extensions/savedqueries/SavedqueriesController.php index 9d231c378..d301f0e81 100644 --- a/extensions/savedqueries/SavedqueriesController.php +++ b/extensions/savedqueries/SavedqueriesController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/savedqueries/SavedqueriesModule.php b/extensions/savedqueries/SavedqueriesModule.php index e6729aac8..b530c434a 100644 --- a/extensions/savedqueries/SavedqueriesModule.php +++ b/extensions/savedqueries/SavedqueriesModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/selectlanguage/SelectlanguagePlugin.php b/extensions/selectlanguage/SelectlanguagePlugin.php index 263d0da1e..bc030f1fd 100644 --- a/extensions/selectlanguage/SelectlanguagePlugin.php +++ b/extensions/selectlanguage/SelectlanguagePlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/semanticsitemap/SemanticsitemapController.php b/extensions/semanticsitemap/SemanticsitemapController.php index 35cc92b22..fbd6f32eb 100644 --- a/extensions/semanticsitemap/SemanticsitemapController.php +++ b/extensions/semanticsitemap/SemanticsitemapController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/semanticsitemap/semanticsitemap.php b/extensions/semanticsitemap/semanticsitemap.php index ea2eb9142..2876c82bc 100644 --- a/extensions/semanticsitemap/semanticsitemap.php +++ b/extensions/semanticsitemap/semanticsitemap.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/sendmail/SendmailPlugin.php b/extensions/sendmail/SendmailPlugin.php index 6d852e3f6..7134442b5 100644 --- a/extensions/sendmail/SendmailPlugin.php +++ b/extensions/sendmail/SendmailPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/sindice/SindicePlugin.php b/extensions/sindice/SindicePlugin.php index 89b8482de..9dee2c65f 100644 --- a/extensions/sindice/SindicePlugin.php +++ b/extensions/sindice/SindicePlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/sortproperties/SortpropertiesPlugin.php b/extensions/sortproperties/SortpropertiesPlugin.php index 4bf997b8e..0d96781ab 100644 --- a/extensions/sortproperties/SortpropertiesPlugin.php +++ b/extensions/sortproperties/SortpropertiesPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/source/SourceHelper.php b/extensions/source/SourceHelper.php index ad0314901..8f8e664b0 100644 --- a/extensions/source/SourceHelper.php +++ b/extensions/source/SourceHelper.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/weblink/WeblinkPlugin.php b/extensions/weblink/WeblinkPlugin.php index 1d5d61c78..638cccca1 100644 --- a/extensions/weblink/WeblinkPlugin.php +++ b/extensions/weblink/WeblinkPlugin.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2012, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2011-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ From e80a01f84a96688e03c5a8e3c600a35161aed1bc Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Mon, 23 May 2016 15:42:55 +0200 Subject: [PATCH 125/156] Exclude 3rd party extensions from FileCommentSniff --- phpcs.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phpcs.xml b/phpcs.xml index 5a9d9f02a..089d9b3e2 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -132,5 +132,8 @@ application/tests/Bootstrap.php + + extensions\/(?!account\/|application\/|auth\/|autologin\/|basicimporter\/|bookmarklet\/|ckan\/|community\/|cors\/|datagathering\/|defaultmodel\/|exconf\/|filter\/|googletracking\/|hideproperties\/|history\/|imagelink\/|imprint\/|jsonrpc\/|linkeddataserver\/|listmodules\/|literaltypes\/|mail\/|mailtolink\/|manchester\/|markdown\/|modellist\/|navigation\/|pingback\/|queries\/|resourcecreationuri\/|resourcemodules\/|savedqueries\/|selectlanguage\/|semanticsitemap\/|sendmail\/|sindice\/|sortproperties\/|source\/|themes\/|translations\/|weblink\/).* + From 24a161c6e72892e458e480a317211765c70c20ec Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Mon, 23 May 2016 15:57:52 +0200 Subject: [PATCH 126/156] Some minor coding standard issues --- .../OntoWiki/Controller/ActionHelper/List.php | 2 +- .../classes/OntoWiki/Controller/Base.php | 4 +- .../classes/OntoWiki/Menu/Registry.php | 6 +- application/classes/OntoWiki/Module.php | 4 +- .../controllers/ApplicationController.php | 27 +- application/controllers/ModelController.php | 6 +- application/shell.worker.client.php | 4 +- application/shell.worker.php | 21 +- .../Sniffs/Commenting/FileCommentSniff.php | 35 +- .../MultiLineConditionSniff.php | 2 +- .../unit/OntoWiki/Extension/ManagerTest.php | 1374 ++++++----------- extensions/account/AccountController.php | 2 +- .../basicimporter/BasicimporterPlugin.php | 2 +- extensions/cors/CorsPlugin.php | 2 +- .../datagathering/DatagatheringPlugin.php | 3 +- extensions/jsonrpc/ResourceJsonrpcAdapter.php | 2 +- extensions/mail/jobs/Mail.php | 8 +- extensions/pingback/PingbackPlugin.php | 3 +- .../savedqueries/SavedqueriesController.php | 2 +- 19 files changed, 516 insertions(+), 993 deletions(-) diff --git a/application/classes/OntoWiki/Controller/ActionHelper/List.php b/application/classes/OntoWiki/Controller/ActionHelper/List.php index 63fa97519..a95148d90 100644 --- a/application/classes/OntoWiki/Controller/ActionHelper/List.php +++ b/application/classes/OntoWiki/Controller/ActionHelper/List.php @@ -171,7 +171,7 @@ public function removeList($name) $lists = $this->_owApp->session->managedLists; if (key_exists($name, $lists)) { - unset ($lists[$name]); + unset($lists[$name]); } throw new InvalidArgumentException('list was not found. check with listExists() first'); diff --git a/application/classes/OntoWiki/Controller/Base.php b/application/classes/OntoWiki/Controller/Base.php index 6602ab341..fc1c39d26 100644 --- a/application/classes/OntoWiki/Controller/Base.php +++ b/application/classes/OntoWiki/Controller/Base.php @@ -115,9 +115,7 @@ public function init() $this->view->headMeta()->setName('generator', 'OntoWiki — Collaborative Knowledge Engineering'); // RDFauthor view configuration - $viewMode = isset($this->_config->rdfauthor->viewmode) - ? $this->_config->rdfauthor->viewmode - : 'inline'; + $viewMode = isset($this->_config->rdfauthor->viewmode) ? $this->_config->rdfauthor->viewmode : 'inline'; // inject JSON variables into view $this->view->jsonVars diff --git a/application/classes/OntoWiki/Menu/Registry.php b/application/classes/OntoWiki/Menu/Registry.php index d27aef5a2..f1ece02a3 100644 --- a/application/classes/OntoWiki/Menu/Registry.php +++ b/application/classes/OntoWiki/Menu/Registry.php @@ -280,8 +280,7 @@ private function _getModelMenu($model = null) } // can user delete models? - if ( - $owApp->erfurt->getAc()->isModelAllowed('edit', $model) + if ($owApp->erfurt->getAc()->isModelAllowed('edit', $model) && $owApp->erfurt->getAc()->isActionAllowed('ModelManagement') ) { @@ -408,8 +407,7 @@ private function _getClassMenu($resource = null) $typeArray[] = $row['type']; } - if ( - in_array(EF_RDFS_CLASS, $typeArray) + if (in_array(EF_RDFS_CLASS, $typeArray) || in_array(EF_OWL_CLASS, $typeArray) || $hasInstances ) { diff --git a/application/classes/OntoWiki/Module.php b/application/classes/OntoWiki/Module.php index 498b947b1..18f5fbe55 100644 --- a/application/classes/OntoWiki/Module.php +++ b/application/classes/OntoWiki/Module.php @@ -192,9 +192,7 @@ public function render($template, $vars = array(), $spec = null) */ public function setContext($context) { - $this->_context = $context - ? (string)$context - : OntoWiki_Module_Registry::DEFAULT_CONTEXT; + $this->_context = $context ? (string)$context : OntoWiki_Module_Registry::DEFAULT_CONTEXT; } /** diff --git a/application/controllers/ApplicationController.php b/application/controllers/ApplicationController.php index 4de61227d..76e3c5411 100644 --- a/application/controllers/ApplicationController.php +++ b/application/controllers/ApplicationController.php @@ -257,8 +257,7 @@ public function registerAction() $emailValidator = new Zend_Validate_EmailAddress(); - if ( - !$this->_erfurt->isActionAllowed('RegisterNewUser') + if (!$this->_erfurt->isActionAllowed('RegisterNewUser') || !($actionConfig = $this->_erfurt->getActionConfig('RegisterNewUser')) ) { $message = 'Action not permitted for the current user.'; @@ -272,23 +271,20 @@ public function registerAction() $message = 'Email address is already registered.'; $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR)); } else { - if ( - isset($actionConfig['mailvalidation']) + if (isset($actionConfig['mailvalidation']) && $actionConfig['mailvalidation'] == 'yes' && !$emailValidator->isValid($email) ) { $message = 'Email address validation failed.'; $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR)); } else { - if ( - in_array($username, $registeredUsernames) + if (in_array($username, $registeredUsernames) || ($username == $this->_owApp->erfurt->getStore()->getDbUser()) ) { $message = 'Username already registered.'; $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR)); } else { - if ( - isset($actionConfig['uidregexp']) + if (isset($actionConfig['uidregexp']) && !preg_match($actionConfig['uidregexp'], $username) ) { $message = 'Username contains illegal characters.'; @@ -304,8 +300,7 @@ public function registerAction() new OntoWiki_Message($message, OntoWiki_Message::ERROR) ); } else { - if ( - isset($actionConfig['passregexp']) + if (isset($actionConfig['passregexp']) && $actionConfig['passregexp'] != '' && !@preg_match($actionConfig['passregexp'], $password) ) { @@ -388,8 +383,7 @@ public function openidregAction() $emailValidator = new Zend_Validate_EmailAddress(); // Is register action allowed for current user? - if ( - !$this->_erfurt->isActionAllowed('RegisterNewUser') + if (!$this->_erfurt->isActionAllowed('RegisterNewUser') || !($actionConfig = $this->_erfurt->getActionConfig('RegisterNewUser')) ) { @@ -403,8 +397,7 @@ public function openidregAction() // Does user already exist? $message = 'A user with the given OpenID is already registered.'; $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR)); - } else if ( - !empty($email) + } else if (!empty($email) && isset($actionConfig['mailvalidation']) && $actionConfig['mailvalidation'] === 'yes' && !$emailValidator->isValid($email) @@ -663,8 +656,7 @@ public function webidregAction() $emailValidator = new Zend_Validate_EmailAddress(); // Is register action allowed for current user? - if ( - !$this->_erfurt->isActionAllowed('RegisterNewUser') + if (!$this->_erfurt->isActionAllowed('RegisterNewUser') || !($actionConfig = $this->_erfurt->getActionConfig('RegisterNewUser')) ) { $message = 'Action not permitted for the current user.'; @@ -677,8 +669,7 @@ public function webidregAction() // Does user already exist? $message = 'A user with the given WebID is already registered.'; $this->_owApp->appendMessage(new OntoWiki_Message($message, OntoWiki_Message::ERROR)); - } else if ( - !empty($email) + } else if (!empty($email) && isset($actionConfig['mailvalidation']) && $actionConfig['mailvalidation'] === 'yes' && !$emailValidator->isValid($email) diff --git a/application/controllers/ModelController.php b/application/controllers/ModelController.php index 763e22094..575b1667e 100644 --- a/application/controllers/ModelController.php +++ b/application/controllers/ModelController.php @@ -545,8 +545,7 @@ public function deleteAction() try { $this->_erfurt->getStore()->deleteModel($model); - if ( - (null !== $this->_owApp->selectedModel) + if ((null !== $this->_owApp->selectedModel) && ($this->_owApp->selectedModel->getModelIri() === $model) ) { $this->_owApp->selectedModel = null; @@ -725,8 +724,7 @@ public function infoAction() . ' <' . (string)$resource . '> a ' . ' }'; $q = Erfurt_Sparql_SimpleQuery::initWithString($query); - if ( - $this->_owApp->extensionManager->isExtensionActive('foafprofileviewer') + if ($this->_owApp->extensionManager->isExtensionActive('foafprofileviewer') && $store->sparqlAsk($q) === true ) { $this->view->showFoafLink = true; diff --git a/application/shell.worker.client.php b/application/shell.worker.client.php index e24733b4c..37e76fb56 100755 --- a/application/shell.worker.client.php +++ b/application/shell.worker.client.php @@ -18,7 +18,7 @@ * error handling for the very first includes etc. * http://stackoverflow.com/questions/1241728/ */ -function errorHandler ($errno, $errstr, $errfile, $errline, array $errcontext) +function errorHandler($errno, $errstr, $errfile, $errline, array $errcontext) { // error was suppressed with the @-operator if (0 === error_reporting()) { @@ -32,7 +32,7 @@ function errorHandler ($errno, $errstr, $errfile, $errline, array $errcontext) * in some configurations Apache prefixes the environment variables on each rewrite walkthrough * e.g. under centos */ -function getEnvVar ($key) +function getEnvVar($key) { $prefix = "REDIRECT_"; if (isset($_SERVER[$key])) { diff --git a/application/shell.worker.php b/application/shell.worker.php index 9511900d0..5f07bc90a 100755 --- a/application/shell.worker.php +++ b/application/shell.worker.php @@ -18,7 +18,7 @@ * error handling for the very first includes etc. * http://stackoverflow.com/questions/1241728/ */ -function errorHandler ($errno, $errstr, $errfile, $errline, array $errcontext) +function errorHandler($errno, $errstr, $errfile, $errline, array $errcontext) { // error was suppressed with the @-operator if (0 === error_reporting()) { @@ -32,7 +32,7 @@ function errorHandler ($errno, $errstr, $errfile, $errline, array $errcontext) * in some configurations Apache prefixes the environment variables on each rewrite walkthrough * e.g. under centos */ -function getEnvVar ($key) +function getEnvVar($key) { $prefix = "REDIRECT_"; if (isset($_SERVER[$key])) { @@ -48,7 +48,8 @@ function getEnvVar ($key) return null; } -function initApp(){ +function initApp() +{ /* Profiling */ define('REQUEST_START', microtime(true)); @@ -127,8 +128,8 @@ function initApp(){ // use include, so we can catch it with the error handler require_once 'OntoWiki.php'; } catch (Exception $e) { - print('Fatal Error: Could not load the OntoWiki Application Framework classes.' . PHP_EOL); - print('Your installation directory seems to be screwed.' . PHP_EOL); + print ('Fatal Error: Could not load the OntoWiki Application Framework classes.' . PHP_EOL); + print ('Your installation directory seems to be screwed.' . PHP_EOL); exit; } @@ -137,8 +138,8 @@ function initApp(){ // use include, so we can catch it with the error handler require_once 'Erfurt/App.php'; } catch (Exception $e) { - print('Fatal Error: Could not load the Erfurt Framework classes.' . PHP_EOL); - print('Maybe you should install it with apt-get or with "make deploy"?' . PHP_EOL); + print ('Fatal Error: Could not load the Erfurt Framework classes.' . PHP_EOL); + print ('Maybe you should install it with apt-get or with "make deploy"?' . PHP_EOL); exit; } @@ -149,7 +150,7 @@ function initApp(){ try { $application->bootstrap(); } catch (Exception $e) { - print('Error on bootstrapping application: ' . $e->getMessage() . PHP_EOL); + print ('Error on bootstrapping application: ' . $e->getMessage() . PHP_EOL); exit; } return $application; @@ -162,7 +163,7 @@ function initApp(){ $extManager = $ontoWiki->extensionManager; $extensions = $extManager->getExtensions(); -print($ontoWiki->config->version->label . ' ' . $ontoWiki->config->version->number . PHP_EOL); +print ($ontoWiki->config->version->label . ' ' . $ontoWiki->config->version->number . PHP_EOL); // create a worker registry $workerRegistry = Erfurt_Worker_Registry::getInstance(); @@ -173,7 +174,7 @@ function initApp(){ $event->registry = $workerRegistry; $event->trigger(); if (!count($workerRegistry->getJobs())) { - print('No jobs registered - nothing to do or wait for.' . PHP_EOL ); + print ('No jobs registered - nothing to do or wait for.' . PHP_EOL ); exit; } diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php index 1a5900378..56242ac2d 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php @@ -66,14 +66,14 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) // Find the next non whitespace token. $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); - $noGit= true; - if(count($tokens)>15) { - preg_match("/ ([0-9]{4})(-[0-9]{4})?/",$tokens[$commentStart+15]['content'], $nonGitYear); + $noGit = true; + if(count($tokens) > 15) { + preg_match("/ ([0-9]{4})(-[0-9]{4})?/", $tokens[$commentStart + 15]['content'], $nonGitYear); } //test if a git exists to get the years from 'git log' exec('([ -d .git ] && echo .git) || git rev-parse --git-dir 2> /dev/null', $gitTest); - if(!empty($gitTest)){ + if(!empty($gitTest)) { $output = array(); exec('git ls-files --error-unmatch ' . $phpcsFile->getFilename() . ' 2> /dev/null', $output, $returnValue); if ($returnValue == 0) { @@ -81,31 +81,30 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) } } - if(!$noGit){ + if(!$noGit) { //test if a git entry exists to get the years from 'git log' - exec('git log --reverse ' . $phpcsFile->getFilename() . ' | head -3' , $outputCreationYear); + exec('git log --reverse ' . $phpcsFile->getFilename() . ' | head -3', $outputCreationYear); //if(!empty($outputCreationYear)) { - preg_match("/( )[0-9]{4}( )/", $outputCreationYear[2],$gitOldYearArray); - $gitYearOld=str_replace(' ','',$gitOldYearArray[0]); + preg_match("/( )[0-9]{4}( )/", $outputCreationYear[2], $gitOldYearArray); + $gitYearOld = str_replace(' ', '', $gitOldYearArray[0]); if (isset($nonGitYear) && isset($nonGitYear[1]) && $gitYearOld > $nonGitYear[1]) { $gitYearOld = $nonGitYear[1]; } exec('git log -1 ' . $phpcsFile->getFilename(), $outputLastEditYear); - preg_match("/( )[0-9]{4}( )/", $outputLastEditYear[2],$gitNewYearArray); - $gitYearNew=str_replace(' ','',$gitNewYearArray[0]); - if(strcmp($gitYearOld,$gitYearNew)!=0) { - $gitYearOld .='-'; - $gitYearOld .=$gitYearNew; + preg_match("/( )[0-9]{4}( )/", $outputLastEditYear[2], $gitNewYearArray); + $gitYearNew = str_replace(' ', '', $gitNewYearArray[0]); + if(strcmp($gitYearOld, $gitYearNew) != 0) { + $gitYearOld .= '-'; + $gitYearOld .= $gitYearNew; } $year = " * @copyright Copyright (c) " . $gitYearOld . ", {@link http://aksw.org AKSW}\n"; - $this->copyright[4]= $year; + $this->copyright[4] = $year; //} } else { //tests if the file has no year/wrong editing and the year can't be found - if(!empty($nonGitYear)) - { - $year = " * @copyright Copyright (c) " . str_replace(' ','',$nonGitYear[0]) . ", {@link http://aksw.org AKSW}\n"; - $this->copyright[4]= $year; + if(!empty($nonGitYear)) { + $year = " * @copyright Copyright (c) " . str_replace(' ', '', $nonGitYear[0]) . ", {@link http://aksw.org AKSW}\n"; + $this->copyright[4] = $year; } } diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/ControlStructures/MultiLineConditionSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/ControlStructures/MultiLineConditionSniff.php index 67a8d327c..c719e93e4 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/ControlStructures/MultiLineConditionSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/ControlStructures/MultiLineConditionSniff.php @@ -5,7 +5,7 @@ * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ - + /** * Ontowiki_Sniffs_ControlStructures_MultiLineConditionSniff. * diff --git a/application/tests/unit/OntoWiki/Extension/ManagerTest.php b/application/tests/unit/OntoWiki/Extension/ManagerTest.php index fb3b51e26..2819dab02 100644 --- a/application/tests/unit/OntoWiki/Extension/ManagerTest.php +++ b/application/tests/unit/OntoWiki/Extension/ManagerTest.php @@ -17,229 +17,172 @@ class ManagerTest extends PHPUnit_Framework_TestCase public function testTriple2ConfigArray() { $triples = array( - 'file:///home/jonas/programming/php-workspace/ow/extensions/account/' => - array( - 'http://xmlns.com/foaf/0.1/primaryTopic' => - array( - 0 => - array( + 'file:///home/jonas/programming/php-workspace/ow/extensions/account/' => array( + 'http://xmlns.com/foaf/0.1/primaryTopic' => array( + 0 => array( 'type' => 'uri', 'value' => 'https://github.com/AKSW/account/raw/master/doap.n3#account', ), ), ), - 'https://github.com/AKSW/account/raw/master/doap.n3#account' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + 'https://github.com/AKSW/account/raw/master/doap.n3#account' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://usefulinc.com/ns/doap#Project', ), ), - 'http://usefulinc.com/ns/doap#name' => - array( - 0 => - array( + 'http://usefulinc.com/ns/doap#name' => array( + 0 => array( 'type' => 'literal', 'value' => 'account', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/privateNamespace' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/privateNamespace' => array( + 0 => array( 'type' => 'uri', 'value' => 'https://github.com/AKSW/account/raw/master/doap.n3#', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/enabled' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/enabled' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'Login Module', ), ), - 'http://usefulinc.com/ns/doap#description' => - array( - 0 => - array( + 'http://usefulinc.com/ns/doap#description' => array( + 0 => array( 'type' => 'literal', 'value' => 'provides a login module and a recover action.', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/authorLabel' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/authorLabel' => array( + 0 => array( 'type' => 'literal', 'value' => 'AKSW', ), ), - 'http://usefulinc.com/ns/doap#maintainer' => - array( - 0 => - array( + 'http://usefulinc.com/ns/doap#maintainer' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://aksw.org', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/templates' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/templates' => array( + 0 => array( 'type' => 'literal', 'value' => 'templates', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/languages' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/languages' => array( + 0 => array( 'type' => 'literal', 'value' => 'languages', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/hasModule' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/hasModule' => array( + 0 => array( 'type' => 'uri', 'value' => 'https://github.com/AKSW/account/raw/master/doap.n3#Default', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => array( + 0 => array( 'type' => 'bnode', 'value' => '_:node1', ), ), - 'http://usefulinc.com/ns/doap#release' => - array( - 0 => - array( + 'http://usefulinc.com/ns/doap#release' => array( + 0 => array( 'type' => 'uri', 'value' => 'https://github.com/AKSW/account/raw/master/doap.n3#v1-0', ), ), ), - 'https://github.com/AKSW/account/raw/master/doap.n3#Default' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + 'https://github.com/AKSW/account/raw/master/doap.n3#Default' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Module', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'Default', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/caching' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/caching' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/priority' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/priority' => array( + 0 => array( 'type' => 'literal', 'value' => '40', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/context' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/context' => array( + 0 => array( 'type' => 'literal', 'value' => 'main.sidewindows', ), ), ), - '_:node1' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node1' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'allow', ), ), - 'https://github.com/AKSW/account/raw/master/doap.n3#local' => - array( - 0 => - array( + 'https://github.com/AKSW/account/raw/master/doap.n3#local' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/account/raw/master/doap.n3#webid' => - array( - 0 => - array( + 'https://github.com/AKSW/account/raw/master/doap.n3#webid' => array( + 0 => array( 'type' => 'literal', 'value' => 'false', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/account/raw/master/doap.n3#openid' => - array( - 0 => - array( + 'https://github.com/AKSW/account/raw/master/doap.n3#openid' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), ), - 'https://github.com/AKSW/account/raw/master/doap.n3#v1-0' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + 'https://github.com/AKSW/account/raw/master/doap.n3#v1-0' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://usefulinc.com/ns/doap#Version', ), ), - 'http://usefulinc.com/ns/doap#revision' => - array( - 0 => - array( + 'http://usefulinc.com/ns/doap#revision' => array( + 0 => array( 'type' => 'literal', 'value' => '1.0', ), @@ -259,1615 +202,1219 @@ public function testTriple2ConfigArray() public function testTriple2ConfigArray2() { $triples = array( - 'file:///home/jonas/programming/php-workspace/ow/extensions/navigation/' => - array( - 'http://xmlns.com/foaf/0.1/primaryTopic' => - array( - 0 => - array( + 'file:///home/jonas/programming/php-workspace/ow/extensions/navigation/' => array( + 'http://xmlns.com/foaf/0.1/primaryTopic' => array( + 0 => array( 'type' => 'uri', 'value' => 'https://github.com/AKSW/navigation/raw/master/doap.n3#navigation', ), ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#navigation' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#navigation' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://usefulinc.com/ns/doap#Project', ), ), - 'http://usefulinc.com/ns/doap#name' => - array( - 0 => - array( + 'http://usefulinc.com/ns/doap#name' => array( + 0 => array( 'type' => 'literal', 'value' => 'navigation', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/privateNamespace' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/privateNamespace' => array( + 0 => array( 'type' => 'uri', 'value' => 'https://github.com/AKSW/navigation/raw/master/doap.n3#', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/enabled' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/enabled' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'Navigation Module', ), ), - 'http://usefulinc.com/ns/doap#description' => - array( - 0 => - array( + 'http://usefulinc.com/ns/doap#description' => array( + 0 => array( 'type' => 'literal', 'value' => 'an extensible and highly customizable module to navigate in knowledge bases ' . 'via tree-based information (e.g. classes)', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/authorLabel' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/authorLabel' => array( + 0 => array( 'type' => 'literal', 'value' => 'AKSW', ), ), - 'http://usefulinc.com/ns/doap#maintainer' => - array( - 0 => - array( + 'http://usefulinc.com/ns/doap#maintainer' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://aksw.org', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/templates' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/templates' => array( + 0 => array( 'type' => 'literal', 'value' => 'templates', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/languages' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/languages' => array( + 0 => array( 'type' => 'literal', 'value' => 'languages', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/hasModule' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/hasModule' => array( + 0 => array( 'type' => 'uri', 'value' => 'https://github.com/AKSW/navigation/raw/master/doap.n3#Default', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => array( + 0 => array( 'type' => 'bnode', 'value' => '_:node1', ), - 1 => - array( + 1 => array( 'type' => 'bnode', 'value' => '_:node2', ), - 2 => - array( + 2 => array( 'type' => 'bnode', 'value' => '_:node4', ), ), - 'http://usefulinc.com/ns/doap#release' => - array( - 0 => - array( + 'http://usefulinc.com/ns/doap#release' => array( + 0 => array( 'type' => 'uri', 'value' => 'https://github.com/AKSW/navigation/raw/master/doap.n3#v1-0', ), ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#Default' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#Default' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Module', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'Default', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/context' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/context' => array( + 0 => array( 'type' => 'literal', 'value' => 'main.sidewindows', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/priority' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/priority' => array( + 0 => array( 'type' => 'literal', 'value' => '30', ), ), ), - '_:node1' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node1' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'defaults', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#config' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#config' => array( + 0 => array( 'type' => 'literal', 'value' => 'classes', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#limit' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#limit' => array( + 0 => array( 'type' => 'literal', 'value' => '10', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkTypes' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkTypes' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#showMenu' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#showMenu' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), ), - '_:node2' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node2' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'sorting', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => array( + 0 => array( 'type' => 'bnode', 'value' => '_:node3', ), ), ), - '_:node3' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node3' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'label', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'By Label', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#type' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2000/01/rdf-schema#label', ), ), ), - '_:node4' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node4' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => array( + 0 => array( 'type' => 'bnode', 'value' => '_:node5', ), - 1 => - array( + 1 => array( 'type' => 'bnode', 'value' => '_:node9', ), - 2 => - array( + 2 => array( 'type' => 'bnode', 'value' => '_:node13', ), - 3 => - array( + 3 => array( 'type' => 'bnode', 'value' => '_:node16', ), - 4 => - array( + 4 => array( 'type' => 'bnode', 'value' => '_:node19', ), - 5 => - array( + 5 => array( 'type' => 'bnode', 'value' => '_:node22', ), - 6 => - array( + 6 => array( 'type' => 'bnode', 'value' => '_:node25', ), - 7 => - array( + 7 => array( 'type' => 'bnode', 'value' => '_:node28', ), ), ), - '_:node5' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node5' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'classes', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'Classes', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#cache' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#cache' => array( + 0 => array( 'type' => 'literal', 'value' => 'false', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => array( + 0 => array( 'type' => 'literal', 'value' => 'titleHelper', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkVisibility' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkVisibility' => array( + 0 => array( 'type' => 'literal', 'value' => 'false', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2002/07/owl#Class', ), - 1 => - array( + 1 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2000/01/rdf-schema#Class', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => array( + 0 => array( 'type' => 'bnode', 'value' => '_:node6', ), - 1 => - array( + 1 => array( 'type' => 'bnode', 'value' => '_:node7', ), - 2 => - array( + 2 => array( 'type' => 'bnode', 'value' => '_:node8', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hiddenNS' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hiddenNS' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', ), - 1 => - array( + 1 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2000/01/rdf-schema#', ), - 2 => - array( + 2 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2002/07/owl#', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hiddenRelation' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hiddenRelation' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/hidden', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#showImplicitElements' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#showImplicitElements' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#showEmptyElements' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#showEmptyElements' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#showCounts' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#showCounts' => array( + 0 => array( 'type' => 'literal', 'value' => 'false', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkSub' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkSub' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hideDefaultHierarchy' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hideDefaultHierarchy' => array( + 0 => array( 'type' => 'literal', 'value' => 'false', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), ), - '_:node6' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node6' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'hierarchyRelations', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2000/01/rdf-schema#subClassOf', ), ), ), - '_:node7' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node7' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'instanceRelation', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', ), ), ), - '_:node8' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node8' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'list', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#config' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#config' => array( + 0 => array( 'type' => 'literal', 'value' => '{|filter|:[{|rdfsclass|:|%resource%|,|mode|:|rdfsclass|}]}', ), ), ), - '_:node9' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node9' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'properties', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'Properties', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => array( + 0 => array( 'type' => 'literal', 'value' => 'titleHelper', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#Property', ), - 1 => - array( + 1 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2002/07/owl#DatatypeProperty', ), - 2 => - array( + 2 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2002/07/owl#ObjectProperty', ), - 3 => - array( + 3 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2002/07/owl#AnnotationProperty', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => array( + 0 => array( 'type' => 'bnode', 'value' => '_:node10', ), - 1 => - array( + 1 => array( 'type' => 'bnode', 'value' => '_:node11', ), - 2 => - array( + 2 => array( 'type' => 'bnode', 'value' => '_:node12', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#showImplicitElements' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#showImplicitElements' => array( + 0 => array( 'type' => 'literal', 'value' => 'false', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#showEmptyElements' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#showEmptyElements' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#showCounts' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#showCounts' => array( + 0 => array( 'type' => 'literal', 'value' => 'false', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hideDefaultHierarchy' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hideDefaultHierarchy' => array( + 0 => array( 'type' => 'literal', 'value' => 'false', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkSub' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkSub' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), ), - '_:node10' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node10' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'hierarchyRelations', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2000/01/rdf-schema#subPropertyOf', ), ), ), - '_:node11' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node11' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'instanceRelation', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2000/01/rdf-schema#subPropertyOf', ), ), ), - '_:node12' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node12' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'list', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#config' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#config' => array( + 0 => array( 'type' => 'literal', 'value' => '{|shownProperties|:[{|uri|:|%resource%|,|label|:|Label 1|,|action|:|add|,' . '|inverse|:false}],|filter|:[{|property|:|%resource%|,|filter|:|bound|}]}', ), ), ), - '_:node13' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node13' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'spatial', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'Spatial', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.aksw.org/spatialHierarchy/SpatialArea', ), - 1 => - array( + 1 => array( 'type' => 'uri', 'value' => 'http://ns.aksw.org/spatialHierarchy/Planet', ), - 2 => - array( + 2 => array( 'type' => 'uri', 'value' => 'http://ns.aksw.org/spatialHierarchy/Continent', ), - 3 => - array( + 3 => array( 'type' => 'uri', 'value' => 'http://ns.aksw.org/spatialHierarchy/Country', ), - 4 => - array( + 4 => array( 'type' => 'uri', 'value' => 'http://ns.aksw.org/spatialHierarchy/Province', ), - 5 => - array( + 5 => array( 'type' => 'uri', 'value' => 'http://ns.aksw.org/spatialHierarchy/District', ), - 6 => - array( + 6 => array( 'type' => 'uri', 'value' => 'http://ns.aksw.org/spatialHierarchy/City', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => array( + 0 => array( 'type' => 'bnode', 'value' => '_:node14', ), - 1 => - array( + 1 => array( 'type' => 'bnode', 'value' => '_:node15', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => array( + 0 => array( 'type' => 'literal', 'value' => 'titleHelper', ), ), ), - '_:node14' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node14' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'hierarchyRelations', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.aksw.org/spatialHierarchy/isLocatedIn', ), ), ), - '_:node15' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node15' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'instanceRelation', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.aksw.org/addressFeatures/physical/country', ), - 1 => - array( + 1 => array( 'type' => 'uri', 'value' => 'http://ns.aksw.org/addressFeatures/physical/city', ), ), ), - '_:node16' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node16' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'faun', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'Faunistics', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://purl.org/net/faunistics#Family', ), - 1 => - array( + 1 => array( 'type' => 'uri', 'value' => 'http://purl.org/net/faunistics#Genus', ), - 2 => - array( + 2 => array( 'type' => 'uri', 'value' => 'http://purl.org/net/faunistics#Species', ), - 3 => - array( + 3 => array( 'type' => 'uri', 'value' => 'http://purl.org/net/faunistics#Order', ), - 4 => - array( + 4 => array( 'type' => 'uri', 'value' => 'http://purl.org/net/faunistics#SubOrder', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => array( + 0 => array( 'type' => 'bnode', 'value' => '_:node17', ), - 1 => - array( + 1 => array( 'type' => 'bnode', 'value' => '_:node18', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => array( + 0 => array( 'type' => 'literal', 'value' => 'titleHelper', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkSub' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkSub' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), ), - '_:node17' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node17' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'hierarchyRelations', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://purl.org/net/faunistics#subTaxonOf', ), ), ), - '_:node18' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node18' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'instanceRelation', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://purl.org/net/faunistics#identifiesAs', ), ), ), - '_:node19' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node19' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'skos', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'SKOS', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2004/02/skos/core#Concept', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => array( + 0 => array( 'type' => 'bnode', 'value' => '_:node20', ), - 1 => - array( + 1 => array( 'type' => 'bnode', 'value' => '_:node21', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => array( + 0 => array( 'type' => 'literal', 'value' => 'titleHelper', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#showCounts' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#showCounts' => array( + 0 => array( 'type' => 'literal', 'value' => 'false', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), ), - '_:node20' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node20' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'hierarchyRelations', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2004/02/skos/core#broader', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2004/02/skos/core#narrower', ), ), ), - '_:node21' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node21' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'instanceRelation', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2004/02/skos/core#narrower', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.w3.org/2004/02/skos/core#broader', ), ), ), - '_:node22' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node22' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'org', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'Groups', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://xmlns.com/foaf/0.1/Group', ), - 1 => - array( + 1 => array( 'type' => 'uri', 'value' => 'http://xmlns.com/foaf/0.1/Organization', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => array( + 0 => array( 'type' => 'bnode', 'value' => '_:node23', ), - 1 => - array( + 1 => array( 'type' => 'bnode', 'value' => '_:node24', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => array( + 0 => array( 'type' => 'literal', 'value' => 'titleHelper', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#showCounts' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#showCounts' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), ), - '_:node23' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node23' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'hierarchyRelations', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/subGroup', ), ), ), - '_:node24' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node24' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'instanceRelation', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://xmlns.com/foaf/0.1/member', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#out' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://xmlns.com/foaf/0.1/member_of', ), ), ), - '_:node25' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node25' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'go', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'Gene Ontology', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.geneontology.org/dtds/go.dtd#term', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => array( + 0 => array( 'type' => 'bnode', 'value' => '_:node26', ), - 1 => - array( + 1 => array( 'type' => 'bnode', 'value' => '_:node27', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => array( + 0 => array( 'type' => 'literal', 'value' => 'titleHelper', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#showCounts' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#showCounts' => array( + 0 => array( 'type' => 'literal', 'value' => 'false', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkSub' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkSub' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hideDefaultHierarchy' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hideDefaultHierarchy' => array( + 0 => array( 'type' => 'literal', 'value' => 'false', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), ), - '_:node26' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node26' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'hierarchyRelations', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.geneontology.org/dtds/go.dtd#is_a', ), ), ), - '_:node27' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node27' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'list', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#query' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#query' => array( + 0 => array( 'type' => 'literal', 'value' => 'SELECT DISTINCT ?resourceUri WHERE { ?resourceUri <%resource%> }', ), ), ), - '_:node28' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node28' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'checklist', ), ), - 'http://www.w3.org/2000/01/rdf-schema#label' => - array( - 0 => - array( + 'http://www.w3.org/2000/01/rdf-schema#label' => array( + 0 => array( 'type' => 'literal', 'value' => 'Checklist', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#titleMode' => array( + 0 => array( 'type' => 'literal', 'value' => 'titleHelper', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#hierarchyTypes' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.mindswap.org/2003/owl/geo/geoFeatures.owl#Country', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/config' => array( + 0 => array( 'type' => 'bnode', 'value' => '_:node29', ), - 1 => - array( + 1 => array( 'type' => 'bnode', 'value' => '_:node30', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkSub' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#checkSub' => array( + 0 => array( 'type' => 'literal', 'value' => 'true', 'datatype' => 'http://www.w3.org/2001/XMLSchema#boolean', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#rootName' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#rootName' => array( + 0 => array( 'type' => 'literal', 'value' => 'Caucasus Spiders', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#rootURI' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#rootURI' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://db.caucasus-spiders.info/Area/152', ), ), ), - '_:node29' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node29' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'hierarchyRelations', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#in' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://www.mindswap.org/2003/owl/geo/geoFeatures.owl#within', ), ), ), - '_:node30' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + '_:node30' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/Config', ), ), - 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => - array( - 0 => - array( + 'http://ns.ontowiki.net/SysOnt/ExtensionConfig/id' => array( + 0 => array( 'type' => 'literal', 'value' => 'list', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#shownProperties' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#shownProperties' => array( + 0 => array( 'type' => 'literal', 'value' => '{|uri|:|http://purl.org/net/faunistics#citationSuffix|,|label|:|citation suffix|' . ',|action|:|add|,|inverse|:false}', ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#query' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#query' => array( + 0 => array( 'type' => 'literal', 'value' => 'SELECT DISTINCT ?resourceUri ?famUri WHERE { ?recUri ?resourceLocation OPTIONAL{ ?resourceLocation ' . @@ -1882,20 +1429,15 @@ public function testTriple2ConfigArray2() ), ), ), - 'https://github.com/AKSW/navigation/raw/master/doap.n3#v1-0' => - array( - 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => - array( - 0 => - array( + 'https://github.com/AKSW/navigation/raw/master/doap.n3#v1-0' => array( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' => array( + 0 => array( 'type' => 'uri', 'value' => 'http://usefulinc.com/ns/doap#Version', ), ), - 'http://usefulinc.com/ns/doap#revision' => - array( - 0 => - array( + 'http://usefulinc.com/ns/doap#revision' => array( + 0 => array( 'type' => 'literal', 'value' => '1.0', ), diff --git a/extensions/account/AccountController.php b/extensions/account/AccountController.php index e3b92aef8..584425fd8 100644 --- a/extensions/account/AccountController.php +++ b/extensions/account/AccountController.php @@ -51,7 +51,7 @@ public function recoverAction() // phase 3 for cleanup and password change in ow system $params['password_o'] = $this->getParam('password_o'); $params['password_r'] = $this->getParam('password_r'); - if (empty($params['hash']) || empty($params['password_o']) || empty ($params['password_r'])) { + if (empty($params['hash']) || empty($params['password_o']) || empty($params['password_r'])) { unset($params['password_o']); unset($params['password_r']); } else { diff --git a/extensions/basicimporter/BasicimporterPlugin.php b/extensions/basicimporter/BasicimporterPlugin.php index fb6701df1..a203796cb 100644 --- a/extensions/basicimporter/BasicimporterPlugin.php +++ b/extensions/basicimporter/BasicimporterPlugin.php @@ -66,7 +66,7 @@ private function provideImportActions($event) return $event; } - private function importModels () + private function importModels() { // read config for models to import $owApp = OntoWiki::getInstance(); diff --git a/extensions/cors/CorsPlugin.php b/extensions/cors/CorsPlugin.php index 239b9318d..221dc4281 100644 --- a/extensions/cors/CorsPlugin.php +++ b/extensions/cors/CorsPlugin.php @@ -33,7 +33,7 @@ private function addCorsHeader() /* * TODO: allow more CORS header fields here */ - if (isset ($this->_privateConfig->accessControlAllowOrigin)) { + if (isset($this->_privateConfig->accessControlAllowOrigin)) { $value = $this->_privateConfig->accessControlAllowOrigin; $response->setHeader('Access-Control-Allow-Origin', $value, true); } diff --git a/extensions/datagathering/DatagatheringPlugin.php b/extensions/datagathering/DatagatheringPlugin.php index 446af6a9c..847a7350c 100644 --- a/extensions/datagathering/DatagatheringPlugin.php +++ b/extensions/datagathering/DatagatheringPlugin.php @@ -94,8 +94,7 @@ public function onCreateMenu($event) // We only add entries to the menu, if all params are given and the // model is editable. - if ( - (null === $resource) || (null === $model) || !$model->isEditable() + if ((null === $resource) || (null === $model) || !$model->isEditable() || !$owApp->erfurt->getAc()->isModelAllowed('edit', $owApp->selectedModel) ) { return; diff --git a/extensions/jsonrpc/ResourceJsonrpcAdapter.php b/extensions/jsonrpc/ResourceJsonrpcAdapter.php index 888341758..38aa5e626 100644 --- a/extensions/jsonrpc/ResourceJsonrpcAdapter.php +++ b/extensions/jsonrpc/ResourceJsonrpcAdapter.php @@ -145,7 +145,7 @@ public function drop($modelIri) * * @return string with the hash value */ - private function _getCurrentResourceHash ($modelIri, $resourceIri) + private function _getCurrentResourceHash($modelIri, $resourceIri) { $resource = $this->_store->getModel($modelIri)->getResource($resourceIri); $statements = $resource->getDescription(); diff --git a/extensions/mail/jobs/Mail.php b/extensions/mail/jobs/Mail.php index 88a73a555..c8b03bd79 100644 --- a/extensions/mail/jobs/Mail.php +++ b/extensions/mail/jobs/Mail.php @@ -40,16 +40,16 @@ public function run($workload) $transport = new Zend_Mail_Transport_Smtp($smtpServer, $config); if (is_object($workload)) { - if (empty($workload->sender)){ + if (empty($workload->sender)) { throw new InvalidArgumentException('Workload is missing sender'); } - if (empty($workload->receiver)){ + if (empty($workload->receiver)) { throw new InvalidArgumentException('Workload is missing receiver'); } - if (empty($workload->subject)){ + if (empty($workload->subject)) { throw new InvalidArgumentException('Workload is missing subject'); } - if (empty($workload->body)){ + if (empty($workload->body)) { throw new InvalidArgumentException('Workload is missing body'); } $mail = new Zend_Mail(); diff --git a/extensions/pingback/PingbackPlugin.php b/extensions/pingback/PingbackPlugin.php index 4c1cc61c1..5ed6ddb49 100644 --- a/extensions/pingback/PingbackPlugin.php +++ b/extensions/pingback/PingbackPlugin.php @@ -89,8 +89,7 @@ public function onAddMultipleStatements($event) public function onDeleteMultipleStatements($event) { // If pingOnDelete is configured, we also ping on statement delete, otherwise we skip. - if ( - !isset($this->_privateConfig->pingOnDelete) + if (!isset($this->_privateConfig->pingOnDelete) || ((boolean)$this->_privateConfig->pingOnDelete === false) ) { diff --git a/extensions/savedqueries/SavedqueriesController.php b/extensions/savedqueries/SavedqueriesController.php index d301f0e81..5f41351ca 100644 --- a/extensions/savedqueries/SavedqueriesController.php +++ b/extensions/savedqueries/SavedqueriesController.php @@ -65,7 +65,7 @@ public function initAction() $header = array(); try { - if (is_array($queryResult) && isset ($queryResult[0]) && is_array($queryResult[0])) { + if (is_array($queryResult) && isset($queryResult[0]) && is_array($queryResult[0])) { $header = array_keys($queryResult[0]); } else { if (is_bool($queryResult)) { From 0ec9f638d115152d040043bbc2ec600bd5a469e0 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Thu, 26 May 2016 16:09:08 +0200 Subject: [PATCH 127/156] Fix coding styles and remove OntoWiki.ControlStructures.MultiLineCondition sniff --- application/Bootstrap.php | 10 +- .../OntoWiki/Controller/ActionHelper/List.php | 2 +- .../classes/OntoWiki/Controller/Base.php | 2 +- .../classes/OntoWiki/Extension/Manager.php | 4 +- application/classes/OntoWiki/Model.php | 3 +- .../classes/OntoWiki/Model/Instances.php | 19 ++- application/controllers/ErrorController.php | 15 ++- application/controllers/IndexController.php | 10 +- .../controllers/ResourceController.php | 9 +- .../MultiLineConditionSniff.php | 124 ------------------ .../unit/OntoWiki/Extension/ManagerTest.php | 2 +- extensions/community/CommunityController.php | 13 +- extensions/community/LastchangesModule.php | 17 ++- extensions/community/RatingModule.php | 15 ++- extensions/exconf/ExconfController.php | 10 +- extensions/history/HistoryController.php | 35 +++-- extensions/jsonrpc/ResourceJsonrpcAdapter.php | 2 +- extensions/source/SourceController.php | 8 +- 18 files changed, 100 insertions(+), 200 deletions(-) delete mode 100644 application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/ControlStructures/MultiLineConditionSniff.php diff --git a/application/Bootstrap.php b/application/Bootstrap.php index 48d9d92c4..fac711fd3 100644 --- a/application/Bootstrap.php +++ b/application/Bootstrap.php @@ -222,11 +222,11 @@ public function _initConfig() protected function applySessionConfig($sessionConfig) { $cookieParams = array( - 'lifetime' => isset($sessionConfig->lifetime) ? $sessionConfig->lifetime : 0, - 'path' => isset($sessionConfig->path) ? $sessionConfig->path : '/', - 'domain' => isset($sessionConfig->domain) ? $sessionConfig->domain : '', - 'secure' => isset($sessionConfig->secure) ? (bool)$sessionConfig->secure : false, - 'httpOnly' => isset($sessionConfig->httpOnly) ? (bool)$sessionConfig->httpOnly : false + 'lifetime' => isset($sessionConfig->lifetime) ? $sessionConfig->lifetime : 0, + 'path' => isset($sessionConfig->path) ? $sessionConfig->path : '/', + 'domain' => isset($sessionConfig->domain) ? $sessionConfig->domain : '', + 'secure' => isset($sessionConfig->secure) ? (bool)$sessionConfig->secure : false, + 'httpOnly' => isset($sessionConfig->httpOnly) ? (bool)$sessionConfig->httpOnly : false ); call_user_func_array('session_set_cookie_params', $cookieParams); } diff --git a/application/classes/OntoWiki/Controller/ActionHelper/List.php b/application/classes/OntoWiki/Controller/ActionHelper/List.php index a95148d90..f18fd1c55 100644 --- a/application/classes/OntoWiki/Controller/ActionHelper/List.php +++ b/application/classes/OntoWiki/Controller/ActionHelper/List.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Controller/Base.php b/application/classes/OntoWiki/Controller/Base.php index fc1c39d26..0ac0865e1 100644 --- a/application/classes/OntoWiki/Controller/Base.php +++ b/application/classes/OntoWiki/Controller/Base.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/application/classes/OntoWiki/Extension/Manager.php b/application/classes/OntoWiki/Extension/Manager.php index 9e6d5e644..d21a4c7b2 100644 --- a/application/classes/OntoWiki/Extension/Manager.php +++ b/application/classes/OntoWiki/Extension/Manager.php @@ -524,8 +524,8 @@ private function _getModifiedConfigsSince($time) * get the location of the cache * * @return string - * @deprecated use Ontowiki::getCache to access cache - * @todo to be deleted in next version + * @deprecated use Ontowiki::getCache to access cache + * @todo to be deleted in next version */ public function getCachePath() { diff --git a/application/classes/OntoWiki/Model.php b/application/classes/OntoWiki/Model.php index e592b20d8..1fb3a0f2b 100644 --- a/application/classes/OntoWiki/Model.php +++ b/application/classes/OntoWiki/Model.php @@ -104,7 +104,7 @@ public function __get($name) { switch ($name) { case '_logger': - return OntoWiki::getInstance()->logger;; + return OntoWiki::getInstance()->logger; case '_eventDispatcher': return Erfurt_Event_Dispatcher::getInstance(); case '_config': @@ -114,4 +114,3 @@ public function __get($name) } } - diff --git a/application/classes/OntoWiki/Model/Instances.php b/application/classes/OntoWiki/Model/Instances.php index 42121f4f1..5ae28d604 100644 --- a/application/classes/OntoWiki/Model/Instances.php +++ b/application/classes/OntoWiki/Model/Instances.php @@ -205,7 +205,7 @@ public function __construct(Erfurt_Store $store, Erfurt_Rdf_Model $model, $optio ->addProjectionVar($this->_resourceVar) ->setDistinct(true); - if(!isset($this->_config->lists) || $this->_config->lists->showTypeColumnByDefault === 'true') { + if (!isset($this->_config->lists) || $this->_config->lists->showTypeColumnByDefault === 'true') { $this->addShownProperty(EF_RDF_TYPE, '__TYPE'); } @@ -1904,13 +1904,12 @@ protected function updateValueQuery() $this->_valueQuery->addElement($this->_valueQueryResourceFilter); } - $this->_valueQueryResourceFilter->setConstraint( - empty($resources) - ? - new Erfurt_Sparql_Query2_BooleanLiteral(false) - : - new Erfurt_Sparql_Query2_ConditionalOrExpression($resources) - ); + if (!empty($resources)) { + $constraint = new Erfurt_Sparql_Query2_ConditionalOrExpression($resources); + } else { + $constraint = new Erfurt_Sparql_Query2_BooleanLiteral(false); + } + $this->_valueQueryResourceFilter->setConstraint($constraint); //fix for a strange issue where a query with only optionals fails //(but there is a magic/unkown condition, that makes it work for some queries!?) @@ -2030,9 +2029,7 @@ public static function getSelectedClass() $list = $listHelper->getList($listName); $filter = $list->getFilter(); - return isset($filter['type0']['rdfsclass']) - ? $filter['type0']['rdfsclass'] - : -1; + return isset($filter['type0']['rdfsclass']) ? $filter['type0']['rdfsclass'] : -1; } return -1; diff --git a/application/controllers/ErrorController.php b/application/controllers/ErrorController.php index 9c7a34f5f..9f18349b9 100644 --- a/application/controllers/ErrorController.php +++ b/application/controllers/ErrorController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ @@ -130,11 +130,13 @@ protected function _debugError() $stacktrace = $exception->getTrace(); $stacktraceString = ''; foreach ($stacktrace as $i => $spec) { - $lineStr = isset($spec['file']) - ? - ('@' . $spec['file'] . (isset($spec['line']) ? ':' . $spec['line'] : '')) - : - ''; + $lineStr = ''; + if (isset($spec['file'])) { + $lineStr = '@' . $spec['file']; + if (isset($spec['line'])) { + $lineStr .= ':' . $spec['line']; + } + } $stacktraceString .= '#' . $i . ': ' . (isset($spec['class']) ? $spec['class'] : '') . (isset($spec['type']) ? $spec['type'] : '') . $spec['function'] . $lineStr . '
          '; @@ -223,4 +225,3 @@ protected function _gracefulError() } } } - diff --git a/application/controllers/IndexController.php b/application/controllers/IndexController.php index c96e035ad..400bf67dd 100644 --- a/application/controllers/IndexController.php +++ b/application/controllers/IndexController.php @@ -36,11 +36,11 @@ public function newsshortAction() // parse feed items into array foreach ($owFeed as $feedItem) { // form temporary array with needed data + $description = substr($feedItem->description(), 0, strpos($feedItem->description(), ' ', 40)) . ' [...]'; $tempdata = array( 'link' => $feedItem->link(), 'title' => $feedItem->title(), - 'description' => - substr($feedItem->description(), 0, strpos($feedItem->description(), ' ', 40)) . ' [...]' + 'description' => $description ); // append temporary array to data array $data[] = $tempdata; @@ -137,11 +137,13 @@ public function getNews() . urlencode($version->suffix); } if ($url) { - $url = strtr($url, array( + $url = strtr( + $url, array( '{{version.label}}' => urlencode($version->label), '{{version.number}}' => urlencode($version->number), '{{version.suffix}}' => urlencode($version->suffix) - )); + ) + ); /* @var $client Zend_Http_Client */ $client = Zend_Feed::getHttpClient(); diff --git a/application/controllers/ResourceController.php b/application/controllers/ResourceController.php index 582d2d934..f3017faea 100644 --- a/application/controllers/ResourceController.php +++ b/application/controllers/ResourceController.php @@ -67,9 +67,12 @@ public function propertiesAction() // Give plugins a chance to add entries to the menu $this->view->placeholder('main.window.menu')->set($menu->toArray(false, true)); - $title = $resource->getTitle($this->_config->languages->locale) - ? $resource->getTitle($this->_config->languages->locale) - : OntoWiki_Utils::contractNamespace((string)$resource); + if ($resource->getTitle($this->_config->languages->locale)) { + $title = $resource->getTitle($this->_config->languages->locale); + } else { + $title = OntoWiki_Utils::contractNamespace((string)$resource); + } + $windowTitle = sprintf($translate->_('Properties of %1$s'), $title); $this->view->placeholder('main.window.title')->set($windowTitle); diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/ControlStructures/MultiLineConditionSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/ControlStructures/MultiLineConditionSniff.php deleted file mode 100644 index c719e93e4..000000000 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/ControlStructures/MultiLineConditionSniff.php +++ /dev/null @@ -1,124 +0,0 @@ - - * @link http://code.google.com/p/ontowiki/ - */ - -/** - * Ontowiki_Sniffs_ControlStructures_MultiLineConditionSniff. - * - * Ensure multi-line IF conditions are defined correctly. - * - * @category PHP - * @package PHP_CodeSniffer - * @author Lars Eidam - * @link http://code.google.com/p/ontowiki/ - */ -class OntoWiki_Sniffs_ControlStructures_MultiLineConditionSniff implements PHP_CodeSniffer_Sniff -{ - - - /** - * Returns an array of tokens this test wants to listen for. - * - * @return array - */ - public function register() - { - return array( - T_IF, - T_ELSEIF, - ); - - }//end register() - - - /** - * Processes this test, when one of its tokens is encountered. - * - * @param PHP_CodeSniffer_File $phpcsFile The file being scanned. - * @param int $stackPtr The position of the current token - * in the stack passed in $tokens. - * - * @return void - */ - public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) - { - $tokens = $phpcsFile->getTokens(); - - // We need to work out how far indented the if statement - // itself is, so we can work out how far to indent conditions. - $statementIndent = 0; - for ($i = ($stackPtr - 1); $i >= 0; $i--) { - if ($tokens[$i]['line'] !== $tokens[$stackPtr]['line']) { - $i++; - break; - } - } - - if ($i >= 0 && $tokens[$i]['code'] === T_WHITESPACE) { - $statementIndent = strlen($tokens[$i]['content']); - } - - // Each line between the parenthesis should be indented 4 spaces - // and start with an operator, unless the line is inside a - // function call, in which case it is ignored. - $openBracket = $tokens[$stackPtr]['parenthesis_opener']; - $closeBracket = $tokens[$stackPtr]['parenthesis_closer']; - $lastLine = $tokens[$openBracket]['line']; - $lineCount = 0; - for ($i = ($openBracket + 1); $i < $closeBracket; $i++) { - if ($tokens[$i]['line'] !== $lastLine) { - $lineCount++; - if ($tokens[$i]['line'] !== $tokens[$closeBracket]['line']) { - // check all lines exept the first, if there is a boolean operator at the beginning - if (1 < $lineCount) { - $next = $phpcsFile->findNext(T_WHITESPACE, $i, null, true); - if (in_array($tokens[$next]['code'], PHP_CodeSniffer_Tokens::$booleanOperators) === false) { - $error = 'Each line (except the first) in a multi-line IF statement must begin with a boolean operator'; - $phpcsFile->addError($error, $i, 'StartWithBoolean'); - } - // check the first line, if there is no boolean operator in the whole line - } else { - $next = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$booleanOperators, $i, null, false); - if ($tokens[$next]['line'] == $tokens[$i]['line']) { - $error = 'The first line in a multi-line IF statement may have no boolean operator'; - $phpcsFile->addError($error, $i, 'FirstLineIncludeBoolean'); - } - } - } - - $lastLine = $tokens[$i]['line']; - }//end if - - if ($tokens[$i]['code'] === T_STRING) { - $next = $phpcsFile->findNext(T_WHITESPACE, ($i + 1), null, true); - if ($tokens[$next]['code'] === T_OPEN_PARENTHESIS) { - // This is a function call, so skip to the end as they - // have their own indentation rules. - $i = $tokens[$next]['parenthesis_closer']; - $lastLine = $tokens[$i]['line']; - continue; - } - } - }//end for - - }//end process() - - -}//end class - -?> diff --git a/application/tests/unit/OntoWiki/Extension/ManagerTest.php b/application/tests/unit/OntoWiki/Extension/ManagerTest.php index 2819dab02..b1411d546 100644 --- a/application/tests/unit/OntoWiki/Extension/ManagerTest.php +++ b/application/tests/unit/OntoWiki/Extension/ManagerTest.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/community/CommunityController.php b/extensions/community/CommunityController.php index 66b91599b..aa286ffea 100644 --- a/extensions/community/CommunityController.php +++ b/extensions/community/CommunityController.php @@ -162,13 +162,14 @@ public function rateAction() ' prefix rdf: prefix ns0: - prefix ns1: ') - ->setSelectClause('SELECT *') - ->setWherePart( + prefix ns1: ' + ); + $query->setSelectClause('SELECT *'); + $query->setWherePart( 'where { - ?rating rdf:type ns1:Poll. - ?rating ns0:about <' . $this->_owApp->selectedResource . '>. - ?rating ns0:has_creator ?creator}' + ?rating rdf:type ns1:Poll. + ?rating ns0:about <' . $this->_owApp->selectedResource . '>. + ?rating ns0:has_creator ?creator}' ); $results = $model->sparqlQuery($query); diff --git a/extensions/community/LastchangesModule.php b/extensions/community/LastchangesModule.php index 72a99a749..3d630d10d 100644 --- a/extensions/community/LastchangesModule.php +++ b/extensions/community/LastchangesModule.php @@ -75,8 +75,13 @@ public function getContents() if (Erfurt_Uri::check($change['resource'])) { $change['aresource'] = new OntoWiki_Resource((string)$change['useruri'], $this->systemModel); - $change['author'] = $change['aresource']->getTitle() ? $change['aresource']->getTitle() - : OntoWiki_Utils::getUriLocalPart($change['aresource']); + + if ($change['aresource']->getTitle()) { + $change['author'] = $change['aresource']->getTitle(); + } else { + $change['author'] = OntoWiki_Utils::getUriLocalPart($change['aresource']); + } + $url->setParam('r', (string)$change['aresource'], true); $change['ahref'] = (string)$url; @@ -84,8 +89,12 @@ public function getContents() $url->setParam('r', (string)$change['resource'], true); $change['rhref'] = (string)$url; $change['resource'] = new OntoWiki_Resource((string)$change['resource'], $this->model); - $change['rname'] = $change['resource']->getTitle() ? $change['resource']->getTitle() - : OntoWiki_Utils::contractNamespace($change['resource']->getIri()); + + if ($change['resource']->getTitle()) { + $change['rname'] = $change['resource']->getTitle(); + } else { + $change['rname'] = OntoWiki_Utils::contractNamespace($change['resource']->getIri()); + } $changes[] = $change; } diff --git a/extensions/community/RatingModule.php b/extensions/community/RatingModule.php index 94f3c1711..e74eb3b0c 100644 --- a/extensions/community/RatingModule.php +++ b/extensions/community/RatingModule.php @@ -40,14 +40,15 @@ public function getContents() 'prefix rdf: prefix ns0: prefix ns1: - prefix terms: ') - ->setSelectClause('SELECT *') - ->setWherePart( + prefix terms: ' + ); + $query->setSelectClause('SELECT *'); + $query->setWherePart( 'where { - ?rating rdf:type ns1:Poll. - ?rating ns0:about <' . $this->_owApp->selectedResource . '>. - ?rating ns0:note ?note. - ?rating ns0:has_creator ?creator}' + ?rating rdf:type ns1:Poll. + ?rating ns0:about <' . $this->_owApp->selectedResource . '>. + ?rating ns0:note ?note. + ?rating ns0:has_creator ?creator}' ); $results = $this->_store->sparqlQuery($query); diff --git a/extensions/exconf/ExconfController.php b/extensions/exconf/ExconfController.php index d1d29a7e1..87510fd11 100644 --- a/extensions/exconf/ExconfController.php +++ b/extensions/exconf/ExconfController.php @@ -236,9 +236,9 @@ public function confAction() $ini->enabled = $this->_request->getParam('enabled') == "true"; $writer = new Zend_Config_Writer_Ini(array()); $writer->write($localIniPath, $ini, true); - + //invalidate the cache to get changes distributed - $cache = OntoWiki::getInstance()->getCache(); + $cache = OntoWiki::getInstance()->getCache(); $cache->remove('ow_extensionConfig'); } // the conf action sends a complete config array as json @@ -263,9 +263,9 @@ public function confAction() OntoWiki::getInstance()->appendMessage( new OntoWiki_Message('config sucessfully changed', OntoWiki_Message::SUCCESS) ); - - //invalidate the cache to get changes distributed - $cache = OntoWiki::getInstance()->getCache(); + + //invalidate the cache to get changes distributed + $cache = OntoWiki::getInstance()->getCache(); $cache->remove('ow_extensionConfig'); } $this->_redirect($this->urlBase . 'exconf/conf/?name=' . $name); diff --git a/extensions/history/HistoryController.php b/extensions/history/HistoryController.php index 598d911e4..b6ba05147 100644 --- a/extensions/history/HistoryController.php +++ b/extensions/history/HistoryController.php @@ -8,7 +8,7 @@ /** * History component controller. - * + * * @category OntoWiki * @package Extensions_History * @author Christoph Rieß @@ -65,8 +65,7 @@ public function feedAction() $userArray[$entry['useruri']] = 'Anonymous'; } elseif ($entry['useruri'] == $this->_erfurt->getConfig()->ac->user->superAdmin) { $userArray[$entry['useruri']] = 'SuperAdmin'; - } elseif ( - is_array($userArray[$entry['useruri']]) && + } elseif (is_array($userArray[$entry['useruri']]) && array_key_exists('userName', $userArray[$entry['useruri']]) ) { $userArray[$entry['useruri']] = $userArray[$entry['useruri']]['userName']; @@ -198,9 +197,11 @@ public function listAction() // redirecting to home if no model/resource is selected if (empty($model) - || (empty($this->_owApp->selectedResource) + || ( + empty($this->_owApp->selectedResource) && empty($params['r']) - && ($this->_owApp->lastRoute !== 'instances')) + && ($this->_owApp->lastRoute !== 'instances') + ) ) { $this->_abort('No model/resource selected.', OntoWiki_Message::ERROR); } @@ -224,9 +225,11 @@ public function listAction() // setting if class or instances if ($this->_owApp->lastRoute === 'instances') { // setting default title - $title = $resource->getTitle() ? - $resource->getTitle() : - OntoWiki_Utils::contractNamespace($resource->getIri()); + if (!empty($resource->getTitle())) { + $title = $resource->getTitle(); + } else { + $title = OntoWiki_Utils::contractNamespace($resource->getIri()); + } $windowTitle = $translate->_('Versions for elements of the list'); $listHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('List'); @@ -264,9 +267,11 @@ public function listAction() $singleResource = false; } else { // setting default title - $title = $resource->getTitle() ? - $resource->getTitle() : - OntoWiki_Utils::contractNamespace($resource->getIri()); + if (!empty($resource->getTitle())) { + $title = $resource->getTitle(); + } else { + $title = OntoWiki_Utils::contractNamespace($resource->getIri()); + } $windowTitle = sprintf($translate->_('Versions for %1$s'), $title); $historyArray = $versioning->getHistoryForResource( @@ -373,7 +378,11 @@ public function rollbackAction() OntoWiki::getInstance()->getNavigation()->setActive('history'); // setting default title - $title = $resource->getTitle() ? $resource->getTitle() : OntoWiki_Utils::contractNamespace($resource->getIri()); + if (!empty($resource->getTitle())) { + $title = $resource->getTitle(); + } else { + $title = OntoWiki_Utils::contractNamespace($resource->getIri()); + } $windowTitle = sprintf($translate->_('Versions for %1$s'), $title); $this->view->placeholder('main.window.title')->set($windowTitle); @@ -411,7 +420,7 @@ public function rollbackAction() // Trying to rollback actions from POST parameters (style: serialized in actionid) foreach (unserialize($params['actionid']) as $id) { - if ( $versioning->rollbackAction($id) ) { + if ($versioning->rollbackAction($id)) { $successIDs[] = $id; } else { $errorIDs[] = $id; diff --git a/extensions/jsonrpc/ResourceJsonrpcAdapter.php b/extensions/jsonrpc/ResourceJsonrpcAdapter.php index 38aa5e626..baff60d3d 100644 --- a/extensions/jsonrpc/ResourceJsonrpcAdapter.php +++ b/extensions/jsonrpc/ResourceJsonrpcAdapter.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2014, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2014-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/source/SourceController.php b/extensions/source/SourceController.php index 032edff32..2663a5225 100644 --- a/extensions/source/SourceController.php +++ b/extensions/source/SourceController.php @@ -27,9 +27,11 @@ public function editAction() ); $title = 'RDF Source'; } else { - $title = $resource->getTitle() - ? $resource->getTitle() - : OntoWiki_Utils::contractNamespace($resource->getIri()); + if ($resource->getTitle()) { + $title = $resource->getTitle(); + } else { + $title = OntoWiki_Utils::contractNamespace($resource->getIri()); + } } $windowTitle = sprintf( $translate->_('Source of Statements about %1$s') . From 6c3c723a73db64425ff1a51020611e98dcb56e42 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Thu, 26 May 2016 17:58:03 +0200 Subject: [PATCH 128/156] Fix coding styles --- .../classes/OntoWiki/Extension/Manager.php | 10 +++++----- application/classes/OntoWiki/Jobs/Cron.php | 17 +++++++++-------- .../classes/OntoWiki/Model/Hierarchy.php | 6 ++++-- extensions/community/LastchangesModule.php | 2 +- .../SemanticsitemapController.php | 4 ++-- extensions/source/SourceController.php | 2 +- 6 files changed, 22 insertions(+), 19 deletions(-) diff --git a/application/classes/OntoWiki/Extension/Manager.php b/application/classes/OntoWiki/Extension/Manager.php index d21a4c7b2..87ad6314c 100644 --- a/application/classes/OntoWiki/Extension/Manager.php +++ b/application/classes/OntoWiki/Extension/Manager.php @@ -539,7 +539,7 @@ public function getCachePath() */ public function clearCache() { - $cache = OntoWiki::getInstance()->getCache(); + $cache = OntoWiki::getInstance()->getCache(); $cache->clean(Zend_Cache::CLEANING_MODE_ALL); } @@ -556,11 +556,11 @@ private function _scanExtensionPath() foreach ($dir as $file) { if (!$file->isDot() && $file->isDir()) { if (!in_array($file->getFileName(), $this->reservedNames)) { - $extensionName = $file->getFileName(); - $currentExtensionPath = $file->getPathname() . DIRECTORY_SEPARATOR; + $extensionName = $file->getFileName(); + $currentExtensionPath = $file->getPathname() . DIRECTORY_SEPARATOR; // parse all extensions on the filesystem if (is_readable($currentExtensionPath . self::EXTENSION_DEFAULT_DOAP_FILE)) { - $config[$extensionName] = $this->_loadConfigs($extensionName); + $config[$extensionName] = $this->_loadConfigs($extensionName); } } } @@ -1134,7 +1134,7 @@ private function _loadConfigs($name) } //fix missing names - if (!isset ($config->name)) { + if (!isset($config->name)) { $config->name = $name; } diff --git a/application/classes/OntoWiki/Jobs/Cron.php b/application/classes/OntoWiki/Jobs/Cron.php index e69cc95c5..9cf0e062e 100644 --- a/application/classes/OntoWiki/Jobs/Cron.php +++ b/application/classes/OntoWiki/Jobs/Cron.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2013-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ @@ -44,13 +44,14 @@ class OntoWiki_Jobs_Cron extends Erfurt_Worker_Job_Abstract */ private function _toSeconds(DateInterval $interval) { - return - ($interval->y * 365 * 24 * 60 * 60) + - ($interval->m * 30 * 24 * 60 * 60) + - ($interval->d * 24 * 60 * 60) + - ($interval->h * 60 * 60) + - ($interval->i * 60) + - $interval->s; + $y = $interval->y * 365 * 24 * 60 * 60; + $m = $interval->m * 30 * 24 * 60 * 60; + $d = $interval->d * 24 * 60 * 60; + $h = $interval->h * 60 * 60; + $i = $interval->i * 60; + $s = $interval->s; + + return $y + $m + $d + $h + $i + $s; } /** diff --git a/application/classes/OntoWiki/Model/Hierarchy.php b/application/classes/OntoWiki/Model/Hierarchy.php index 1bd1b5ad0..d85ff6f85 100644 --- a/application/classes/OntoWiki/Model/Hierarchy.php +++ b/application/classes/OntoWiki/Model/Hierarchy.php @@ -167,6 +167,9 @@ protected function _getEntry($resultUri, $hasChildren = false) $this->_url->setParam('r', $resultUri, true); + $hierarchyOpen = is_array($this->_session->hierarchyOpen) && + in_array($resultUri, $this->_session->hierarchyOpen); + $entry = array( 'uri' => $resultUri, 'url' => (string)$this->_url, @@ -174,8 +177,7 @@ protected function _getEntry($resultUri, $hasChildren = false) 'title' => $this->_titleHelper->getTitle($resultUri, $this->_config->languages->locale), 'children' => array(), 'has_children' => $hasChildren, - 'open' => - is_array($this->_session->hierarchyOpen) && in_array($resultUri, $this->_session->hierarchyOpen) + 'open' => $hierarchyOpen ); return $entry; diff --git a/extensions/community/LastchangesModule.php b/extensions/community/LastchangesModule.php index 3d630d10d..aa64d5f7f 100644 --- a/extensions/community/LastchangesModule.php +++ b/extensions/community/LastchangesModule.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ diff --git a/extensions/semanticsitemap/SemanticsitemapController.php b/extensions/semanticsitemap/SemanticsitemapController.php index fbd6f32eb..97eb8d42f 100644 --- a/extensions/semanticsitemap/SemanticsitemapController.php +++ b/extensions/semanticsitemap/SemanticsitemapController.php @@ -61,14 +61,14 @@ public function sitemapAction() // these dataset items are used by the template $datasets = array(); foreach ($this->_models as $modelUri => $model) { + $dataDump = $owApp->config->urlBase . 'model/export?output=xml&m=' . urlencode($modelUri); $datasets[] = array( 'datasetURI' => $modelUri, 'datasetLabel' => $this->_store->getModel($modelUri)->getTitle(), 'sparqlEndpoint' => $owApp->config->urlBase . 'service/sparql', 'sparqlGraphName' => $modelUri, 'sparqlEndpointLocation' => $owApp->config->urlBase . 'service/sparql', - 'dataDump' => - $owApp->config->urlBase . 'model/export?output=xml&m=' . urlencode($modelUri) + 'dataDump' => $dataDump ); } diff --git a/extensions/source/SourceController.php b/extensions/source/SourceController.php index 2663a5225..d3245bc3f 100644 --- a/extensions/source/SourceController.php +++ b/extensions/source/SourceController.php @@ -2,7 +2,7 @@ /** * This file is part of the {@link http://ontowiki.net OntoWiki} project. * - * @copyright Copyright (c) 2006-2013, {@link http://aksw.org AKSW} + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ From 4d947185a0ebcaa8519e8a176c18902f664f8462 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Thu, 26 May 2016 18:44:33 +0200 Subject: [PATCH 129/156] Fix more coding style and exclude some more files to not be tested --- application/controllers/IndexController.php | 4 +- application/shell.worker.php | 15 +++--- application/tests/Bootstrap.php | 3 +- application/tests/BootstrapExtensions.php | 14 +----- .../Sniffs/Commenting/FileCommentSniff.php | 49 +++++++++---------- .../Model/TitleHelperIntegrationTest.php | 19 ++++--- .../datagathering/DatagatheringController.php | 5 +- extensions/queries/QueriesController.php | 2 +- phpcs.xml | 3 ++ 9 files changed, 55 insertions(+), 59 deletions(-) diff --git a/application/controllers/IndexController.php b/application/controllers/IndexController.php index 400bf67dd..c4bf5da87 100644 --- a/application/controllers/IndexController.php +++ b/application/controllers/IndexController.php @@ -151,8 +151,10 @@ public function getNews() $owFeed = Zend_Feed::import($url); return $owFeed; } else { + $message = 'Feed disabled in config.ini. You can configure a feed ' + . 'using the "news.feedUrl" key in your config.ini.'; $this->_owApp->appendMessage( - new OntoWiki_Message('Feed disabled in config.ini. You can configure a feed using the "news.feedUrl" key in your config.ini.', OntoWiki_Message::INFO) + new OntoWiki_Message($message, OntoWiki_Message::INFO) ); return array(); } diff --git a/application/shell.worker.php b/application/shell.worker.php index 5f07bc90a..3a686a2ed 100755 --- a/application/shell.worker.php +++ b/application/shell.worker.php @@ -128,8 +128,8 @@ function initApp() // use include, so we can catch it with the error handler require_once 'OntoWiki.php'; } catch (Exception $e) { - print ('Fatal Error: Could not load the OntoWiki Application Framework classes.' . PHP_EOL); - print ('Your installation directory seems to be screwed.' . PHP_EOL); + echo 'Fatal Error: Could not load the OntoWiki Application Framework classes.' . PHP_EOL; + echo 'Your installation directory seems to be screwed.' . PHP_EOL; exit; } @@ -138,8 +138,8 @@ function initApp() // use include, so we can catch it with the error handler require_once 'Erfurt/App.php'; } catch (Exception $e) { - print ('Fatal Error: Could not load the Erfurt Framework classes.' . PHP_EOL); - print ('Maybe you should install it with apt-get or with "make deploy"?' . PHP_EOL); + echo 'Fatal Error: Could not load the Erfurt Framework classes.' . PHP_EOL; + echo 'Maybe you should install it with apt-get or with "make deploy"?' . PHP_EOL; exit; } @@ -150,7 +150,7 @@ function initApp() try { $application->bootstrap(); } catch (Exception $e) { - print ('Error on bootstrapping application: ' . $e->getMessage() . PHP_EOL); + echo 'Error on bootstrapping application: ' . $e->getMessage() . PHP_EOL; exit; } return $application; @@ -163,7 +163,7 @@ function initApp() $extManager = $ontoWiki->extensionManager; $extensions = $extManager->getExtensions(); -print ($ontoWiki->config->version->label . ' ' . $ontoWiki->config->version->number . PHP_EOL); +echo $ontoWiki->config->version->label . ' ' . $ontoWiki->config->version->number . PHP_EOL; // create a worker registry $workerRegistry = Erfurt_Worker_Registry::getInstance(); @@ -174,7 +174,7 @@ function initApp() $event->registry = $workerRegistry; $event->trigger(); if (!count($workerRegistry->getJobs())) { - print ('No jobs registered - nothing to do or wait for.' . PHP_EOL ); + echo 'No jobs registered - nothing to do or wait for.' . PHP_EOL; exit; } @@ -202,4 +202,3 @@ function initApp() $worker = new Erfurt_Worker_Backend($workerRegistry); // set worker and Gearman worker to listen mode and wait $worker->listen(); - diff --git a/application/tests/Bootstrap.php b/application/tests/Bootstrap.php index c8e97ff4a..bf5f4619d 100644 --- a/application/tests/Bootstrap.php +++ b/application/tests/Bootstrap.php @@ -42,7 +42,7 @@ // path to OntoWiki define('_OWROOT', ONTOWIKI_ROOT); -require_once(ONTOWIKI_ROOT . '/vendor/autoload.php'); +require_once ONTOWIKI_ROOT . '/vendor/autoload.php'; // start dummy session before any PHPUnit output $session = new Zend_Session_Namespace('OntoWiki_Test'); @@ -50,4 +50,3 @@ // Access Erfurt app for constant loading etc. Erfurt_App::getInstance(false); - diff --git a/application/tests/BootstrapExtensions.php b/application/tests/BootstrapExtensions.php index cf57d73ed..c0525cc2e 100644 --- a/application/tests/BootstrapExtensions.php +++ b/application/tests/BootstrapExtensions.php @@ -16,17 +16,6 @@ */ date_default_timezone_set('Europe/Berlin'); -/* - * Check for minimum supported PHPUnit version - */ -$phpUnitVersion = PHPUnit_Runner_Version::id(); -if ('@package_version@' !== $phpUnitVersion && version_compare($phpUnitVersion, '3.5.0', '<')) { - echo 'This version of PHPUnit (' . PHPUnit_Runner_Version::id() . ') is not supported in OntoWiki unit tests.' . - PHP_EOL; - exit(1); -} -unset($phpUnitVersion); - define('BOOTSTRAP_FILE', basename(__FILE__)); define('ONTOWIKI_ROOT', realpath(dirname(__FILE__) . '/../..') . '/'); define('APPLICATION_PATH', ONTOWIKI_ROOT . 'application/'); @@ -42,11 +31,10 @@ // path to OntoWiki define('_OWROOT', ONTOWIKI_ROOT); -require_once(ONTOWIKI_ROOT . '/vendor/autoload.php'); +require_once ONTOWIKI_ROOT . '/vendor/autoload.php'; // start dummy session before any PHPUnit output $session = new Zend_Session_Namespace('OntoWiki_Test'); // Access Erfurt app for constant loading etc. Erfurt_App::getInstance(false); - diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php index 56242ac2d..aae71eb48 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php @@ -1,19 +1,14 @@ - * @copyright 2015 Stefano Kowalke - * @license http://www.gnu.org/copyleft/gpl.html GNU Public License - * @link https://github.com/typo3-ci/TYPO3SniffPool + * @copyright Copyright (c) 2006-2016, {@link http://aksw.org AKSW} + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ /** * Parses and verifies the TYPO3 copyright notice. + * PHP version 5 * * @category PHP * @package TYPO3SniffPool @@ -30,12 +25,13 @@ class Ontowiki_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sni * * @var array */ - protected $copyright = array( + protected $_copyright = array( 1 => "/**\n", 2 => " * This file is part of the {@link http://ontowiki.net OntoWiki} project.\n", 3 => " *\n", 4 => "", - 5 => " * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL)\n", + 5 => " * @license http://opensource.org/licenses/gpl-license.php " + . "GNU General Public License (GPL)\n", 6 => " */", ); @@ -65,15 +61,19 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) $tokens = $phpcsFile->getTokens(); // Find the next non whitespace token. $commentStart = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true); + if ($commentStart === false) { + $phpcsFile->addError('Not file level comment given', $commentStart, 'NoFileLevelCommentFound'); + return; + } $noGit = true; - if(count($tokens) > 15) { + if (count($tokens) > 15) { preg_match("/ ([0-9]{4})(-[0-9]{4})?/", $tokens[$commentStart + 15]['content'], $nonGitYear); } //test if a git exists to get the years from 'git log' exec('([ -d .git ] && echo .git) || git rev-parse --git-dir 2> /dev/null', $gitTest); - if(!empty($gitTest)) { + if (!empty($gitTest)) { $output = array(); exec('git ls-files --error-unmatch ' . $phpcsFile->getFilename() . ' 2> /dev/null', $output, $returnValue); if ($returnValue == 0) { @@ -81,7 +81,7 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) } } - if(!$noGit) { + if (!$noGit) { //test if a git entry exists to get the years from 'git log' exec('git log --reverse ' . $phpcsFile->getFilename() . ' | head -3', $outputCreationYear); //if(!empty($outputCreationYear)) { @@ -93,23 +93,24 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) exec('git log -1 ' . $phpcsFile->getFilename(), $outputLastEditYear); preg_match("/( )[0-9]{4}( )/", $outputLastEditYear[2], $gitNewYearArray); $gitYearNew = str_replace(' ', '', $gitNewYearArray[0]); - if(strcmp($gitYearOld, $gitYearNew) != 0) { + if (strcmp($gitYearOld, $gitYearNew) != 0) { $gitYearOld .= '-'; $gitYearOld .= $gitYearNew; } $year = " * @copyright Copyright (c) " . $gitYearOld . ", {@link http://aksw.org AKSW}\n"; - $this->copyright[4] = $year; + $this->_copyright[4] = $year; //} } else { //tests if the file has no year/wrong editing and the year can't be found - if(!empty($nonGitYear)) { - $year = " * @copyright Copyright (c) " . str_replace(' ', '', $nonGitYear[0]) . ", {@link http://aksw.org AKSW}\n"; - $this->copyright[4] = $year; + if (!empty($nonGitYear)) { + $year = str_replace(' ', '', $nonGitYear[0]); + $copyright = " * @copyright Copyright (c) " . $year . ", {@link http://aksw.org AKSW}\n"; + $this->_copyright[4] = $copyright; } } $tokenizer = new PHP_CodeSniffer_Tokenizers_Comment(); - $expectedString = implode($this->copyright); + $expectedString = implode($this->_copyright); $expectedTokens = $tokenizer->tokenizeString($expectedString, PHP_EOL, 0); // Allow namespace statements at the top of the file. if ($tokens[$commentStart]['code'] === T_NAMESPACE) { @@ -138,14 +139,14 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) } $commentEndLine = $tokens[$commentEnd]['line']; $commentStartLine = $tokens[$commentStart]['line']; - if ((($commentEndLine - $commentStartLine) + 1) < count($this->copyright)) { + if ((($commentEndLine - $commentStartLine) + 1) < count($this->_copyright)) { $phpcsFile->addError( 'Copyright notice too short', $commentStart, 'CommentTooShort' ); return; - } else if ((($commentEndLine - $commentStartLine) + 1) > count($this->copyright)) { + } else if ((($commentEndLine - $commentStartLine) + 1) > count($this->_copyright)) { $phpcsFile->addError( 'Copyright notice too long', $commentStart, @@ -167,12 +168,8 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) $phpcsFile->fixer->replaceToken($i, $expectedTokens[$j]["content"]); } } - $j++; } - - return; - }//end process() diff --git a/application/tests/integration/OntoWiki/Model/TitleHelperIntegrationTest.php b/application/tests/integration/OntoWiki/Model/TitleHelperIntegrationTest.php index c52492b04..802a2830b 100644 --- a/application/tests/integration/OntoWiki/Model/TitleHelperIntegrationTest.php +++ b/application/tests/integration/OntoWiki/Model/TitleHelperIntegrationTest.php @@ -34,14 +34,21 @@ public function setUp() private function _addTestData() { - $model = $this->_store->getNewModel($this->_modelUri, '', Erfurt_Store::MODEL_TYPE_OWL, false); + $model = $this->_store->getNewModel( + $this->_modelUri, '', Erfurt_Store::MODEL_TYPE_OWL, false + ); $this->authenticateDbUser(); $turtleString - = ' "testABC_en"@en .' - . ' "testABC_noLang" ;' - . ' "testABC_de"@de .' - . ' "testABC" ;' - . ' "testMenuLabel" .'; + = ' ' + . ' "testABC_en"@en .' + . ' ' + . ' "testABC_noLang" ;' + . ' ' + . ' "testABC_de"@de .' + . ' ' + . ' "testABC" ;' + . ' ' + . ' "testMenuLabel" .'; $this->_store->importRdf( $this->_modelUri, diff --git a/extensions/datagathering/DatagatheringController.php b/extensions/datagathering/DatagatheringController.php index c6e80ff0b..a4032d719 100644 --- a/extensions/datagathering/DatagatheringController.php +++ b/extensions/datagathering/DatagatheringController.php @@ -741,7 +741,7 @@ public function importAction() } $presets = array(); - if(isset($this->_privateConfig->fetch->preset)) { + if (isset($this->_privateConfig->fetch->preset)) { $presets = $this->_privateConfig->fetch->preset->toArray(); } @@ -764,7 +764,8 @@ public function importAction() ); } catch (Exception $e) { if (defined('_EFDEBUG')) { - return $this->_sendResponse(false, 'An error occured: ' . $e->getMessage() . " – " . $e->getTraceAsString(), OntoWiki_Message::ERROR); + $errorMessage = 'An error occured: ' . $e->getMessage() . " – " . $e->getTraceAsString(); + return $this->_sendResponse(false, $errorMessage, OntoWiki_Message::ERROR); } else { $res = null; } diff --git a/extensions/queries/QueriesController.php b/extensions/queries/QueriesController.php index ead6f38c9..ead13e3dc 100644 --- a/extensions/queries/QueriesController.php +++ b/extensions/queries/QueriesController.php @@ -183,7 +183,7 @@ public function editorAction() foreach ($prefixes as $prefix => $namespace) { $prefixString = 'PREFIX ' . $prefix . ': <' . $namespace . '>'; // only add prefix if it's not there yet - if(strpos($query, $prefixString) === false) { + if (strpos($query, $prefixString) === false) { $query = $prefixString . PHP_EOL . $query; } } diff --git a/phpcs.xml b/phpcs.xml index 089d9b3e2..7128cd5c0 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -7,10 +7,13 @@ + ./application/tests/integration/OntoWiki/Extension/_files/test1/MoreModule.php + ./application/tests/integration/OntoWiki/Extension/_files/test2/Test2Plugin.php ./application/scripts/ ./extensions/exconf/pclzip.lib.php ./extensions/exconf/Archive.php ./extensions/markdown/parser/markdown.php + ./extensions\/(?!account\/|application\/|auth\/|autologin\/|basicimporter\/|bookmarklet\/|ckan\/|community\/|cors\/|datagathering\/|defaultmodel\/|exconf\/|filter\/|googletracking\/|hideproperties\/|history\/|imagelink\/|imprint\/|jsonrpc\/|linkeddataserver\/|listmodules\/|literaltypes\/|mail\/|mailtolink\/|manchester\/|markdown\/|modellist\/|navigation\/|pingback\/|queries\/|resourcecreationuri\/|resourcemodules\/|savedqueries\/|selectlanguage\/|semanticsitemap\/|sendmail\/|sindice\/|sortproperties\/|source\/|themes\/|translations\/|weblink\/).* From 5a242f1e61ea94241b275e4356a6defbf1d29ac1 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Thu, 26 May 2016 18:58:41 +0200 Subject: [PATCH 130/156] Remove Generic.CodeAnalysis.EmptyStatement sniff There is no sniff like that in PSR-2 and we try to get to PSR-2 one day. --- phpcs.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/phpcs.xml b/phpcs.xml index 7128cd5c0..0a0d208c6 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -17,7 +17,6 @@ - From b35e2cb8a078d809976b2191d6bc18791ec7d9c9 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Thu, 26 May 2016 18:59:02 +0200 Subject: [PATCH 131/156] Refactor usage of exit to using return --- application/shell.worker.client.php | 12 ++++++++---- application/shell.worker.php | 13 ++++++++----- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/application/shell.worker.client.php b/application/shell.worker.client.php index 37e76fb56..6aadc9782 100755 --- a/application/shell.worker.client.php +++ b/application/shell.worker.client.php @@ -119,7 +119,7 @@ function initApp() header('HTTP/1.1 500 Internal Server Error'); echo 'Fatal Error: Could not load Zend library.
          ' . PHP_EOL . 'Maybe you need to install it with apt-get or with "make zend"?' . PHP_EOL; - exit; + return false; } // create application @@ -135,7 +135,7 @@ function initApp() } catch (Exception $e) { echo 'Fatal Error: Could not load the OntoWiki Application Framework classes.' . PHP_EOL; echo 'Your installation directory seems to be screwed.' . PHP_EOL; - exit; + return false; } /* check/include Erfurt_App */ @@ -145,7 +145,7 @@ function initApp() } catch (Exception $e) { echo 'Fatal Error: Could not load the Erfurt Framework classes.' . PHP_EOL; echo 'Maybe you should install it with apt-get or with "make deploy"?' . PHP_EOL; - exit; + return false; } // restore old error handler @@ -156,12 +156,16 @@ function initApp() $application->bootstrap(); } catch (Exception $e) { echo 'Error on bootstrapping application: ' . $e->getMessage() . PHP_EOL; - exit; + return false; } return $application; } $application = initApp(); +if ($application === false) { + return 1; +} + $ontowiki = OntoWiki::getInstance(); echo $ontowiki->config->version->label . ' ' . $ontowiki->config->version->number . PHP_EOL; diff --git a/application/shell.worker.php b/application/shell.worker.php index 3a686a2ed..a443f4c4d 100755 --- a/application/shell.worker.php +++ b/application/shell.worker.php @@ -114,7 +114,7 @@ function initApp() header('HTTP/1.1 500 Internal Server Error'); echo 'Fatal Error: Could not load Zend library.
          ' . PHP_EOL . 'Maybe you need to install it with apt-get or with "make zend"?' . PHP_EOL; - exit; + return false; } // create application @@ -130,7 +130,7 @@ function initApp() } catch (Exception $e) { echo 'Fatal Error: Could not load the OntoWiki Application Framework classes.' . PHP_EOL; echo 'Your installation directory seems to be screwed.' . PHP_EOL; - exit; + return false; } /* check/include Erfurt_App */ @@ -140,7 +140,7 @@ function initApp() } catch (Exception $e) { echo 'Fatal Error: Could not load the Erfurt Framework classes.' . PHP_EOL; echo 'Maybe you should install it with apt-get or with "make deploy"?' . PHP_EOL; - exit; + return false; } // restore old error handler @@ -151,12 +151,15 @@ function initApp() $application->bootstrap(); } catch (Exception $e) { echo 'Error on bootstrapping application: ' . $e->getMessage() . PHP_EOL; - exit; + return false; } return $application; } $application = initApp(); +if ($application === false) { + return 1; +} $bootstrap = $application->getBootstrap(); $ontoWiki = OntoWiki::getInstance(); @@ -175,7 +178,7 @@ function initApp() $event->trigger(); if (!count($workerRegistry->getJobs())) { echo 'No jobs registered - nothing to do or wait for.' . PHP_EOL; - exit; + return; } // register jobs manually From c7dc7f7faea526fae784e61b241fe5282015b825 Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Wed, 1 Jun 2016 11:45:18 +0200 Subject: [PATCH 132/156] #332: Fix "Shift + Alt" key capture issue When "Shift + Alt + " was used, the OntoWiki JavaScript prevented the default behaviour, even when there was no matching shortcut. This caused issues with e.g. french keyboards, where the "[" key depends on "Shift + Alt". This change will fix this behaviour by only preventing the default, when the action is overwritten by OntoWiki. --- extensions/themes/silverblue/scripts/main.js | 42 ++++++++++++++------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/extensions/themes/silverblue/scripts/main.js b/extensions/themes/silverblue/scripts/main.js index 22ad030b6..3c46a4922 100644 --- a/extensions/themes/silverblue/scripts/main.js +++ b/extensions/themes/silverblue/scripts/main.js @@ -34,24 +34,42 @@ $(document).ready(function() { $(document).keydown(function(e) { if (/view\/?|resource\/properties\/?/gi.test(window.document.baseURI)) { if (e.shiftKey && e.altKey) { - e.preventDefault(); + var shouldPreventDefault = false; + switch(e.which) { //e - 101 - edit E - 69 - case 69 : $('.edit-enable').trigger('click'); break; + case 69 : + $('.edit-enable').trigger('click'); + shouldPreventDefault = true; + break; //a - 97 - add property - A - 65 - case 65 : $('.property-add').trigger('click'); break; + case 65 : + $('.property-add').trigger('click'); + e.preventDefault(); + break; //s - 115 - save S - 83 - case 83 : if ($('.edit-enable').hasClass('active')) { - $('.edit.save').trigger('click'); - }; - break; + case 83 : + if ($('.edit-enable').hasClass('active')) { + $('.edit.save').trigger('click'); + e.preventDefault(); + }; + break; //c - 99 - cancel C - 67 - case 67 : if ($('.edit-enable').hasClass('active')) { - $('.edit.cancel').trigger('click'); - }; - break; + case 67 : + if ($('.edit-enable').hasClass('active')) { + $('.edit.cancel').trigger('click'); + e.preventDefault(); + }; + break; //l - 108 - clone L - 76 - case 76 : $('.clone-resource').trigger('click'); break; + case 76 : + $('.clone-resource').trigger('click'); + e.preventDefault(); + break; + } + + if (shouldPreventDefault) { + e.preventDefault(); } } } From 5622fbcfc3bea7342fe8291af302ee69fce319a9 Mon Sep 17 00:00:00 2001 From: shinobu Date: Thu, 9 Jun 2016 14:41:58 +0200 Subject: [PATCH 133/156] fixed file-comment-sniff for small files (#355) * fixed file-comment-sniff for small files * rewrite fix to follow coding standards --- .../Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php index aae71eb48..43ed21cd2 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php @@ -67,7 +67,7 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) } $noGit = true; - if (count($tokens) > 15) { + if (count($tokens) > ($commentStart + 14)) { preg_match("/ ([0-9]{4})(-[0-9]{4})?/", $tokens[$commentStart + 15]['content'], $nonGitYear); } From ea17b5ad52d08eb008937a7e75cf2b2514b4377c Mon Sep 17 00:00:00 2001 From: shinobu Date: Thu, 9 Jun 2016 14:47:20 +0200 Subject: [PATCH 134/156] =?UTF-8?q?added=202=20if=20cases=20for=20empty=20?= =?UTF-8?q?years=20to=20check=20line=20for=20if=20it=20exists.=20shou?= =?UTF-8?q?=E2=80=A6=20(#356)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * added 2 if cases for empty years to check line for if it exists. should fix #354 * rewrite fix to follow the coding standards --- .../Ontowiki/Sniffs/Commenting/FileCommentSniff.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php index 43ed21cd2..94fb05f01 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php @@ -83,15 +83,21 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) if (!$noGit) { //test if a git entry exists to get the years from 'git log' - exec('git log --reverse ' . $phpcsFile->getFilename() . ' | head -3', $outputCreationYear); + exec('git log --reverse ' . $phpcsFile->getFilename() . ' | head -4', $outputCreationYear); //if(!empty($outputCreationYear)) { preg_match("/( )[0-9]{4}( )/", $outputCreationYear[2], $gitOldYearArray); + if (empty($gitOldYearArray) && count($outputCreationYear) > 3) { + preg_match("/( )[0-9]{4}( )/", $outputCreationYear[3], $gitOldYearArray); + } $gitYearOld = str_replace(' ', '', $gitOldYearArray[0]); if (isset($nonGitYear) && isset($nonGitYear[1]) && $gitYearOld > $nonGitYear[1]) { $gitYearOld = $nonGitYear[1]; } exec('git log -1 ' . $phpcsFile->getFilename(), $outputLastEditYear); preg_match("/( )[0-9]{4}( )/", $outputLastEditYear[2], $gitNewYearArray); + if (empty($gitNewYearArray) && count($outputLastEditYear) > 3) { + preg_match("/( )[0-9]{4}( )/", $outputLastEditYear[3], $gitNewYearArray); + } $gitYearNew = str_replace(' ', '', $gitNewYearArray[0]); if (strcmp($gitYearOld, $gitYearNew) != 0) { $gitYearOld .= '-'; From 840c647a78c131c5d01baae784902921e96c06ad Mon Sep 17 00:00:00 2001 From: shinobu Date: Mon, 4 Jul 2016 17:31:28 +0200 Subject: [PATCH 135/156] the resource needs to be casted to string to work for Ontowiki Url --- application/classes/OntoWiki/Menu/Registry.php | 5 ++--- application/controllers/ResourceController.php | 7 ++++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/application/classes/OntoWiki/Menu/Registry.php b/application/classes/OntoWiki/Menu/Registry.php index f1ece02a3..1ce0267a9 100644 --- a/application/classes/OntoWiki/Menu/Registry.php +++ b/application/classes/OntoWiki/Menu/Registry.php @@ -347,10 +347,9 @@ private function _getResourceMenu($resource = null) // Delete resource option $url = new OntoWiki_Url( array('controller' => 'resource', 'action' => 'delete'), - array() + array('r') ); - - $url->setParam('r', $resource, true); + $url->setParam('r', (string)$resource, false); $resourceMenu->appendEntry('Delete Resource', (string)$url); } diff --git a/application/controllers/ResourceController.php b/application/controllers/ResourceController.php index f3017faea..10cfa673a 100644 --- a/application/controllers/ResourceController.php +++ b/application/controllers/ResourceController.php @@ -172,9 +172,14 @@ public function propertiesAction() ) ); // ->appendButton(OntoWiki_Toolbar::EDITADD, array('name' => 'Add Property', 'class' => 'property-add')); + $url = new OntoWiki_Url( + array('controller' => 'resource', 'action' => 'delete'), + array('r') + ); + $url->setParam('r', (string)$resource, false); $params = array( 'name' => 'Delete', - 'url' => $this->_config->urlBase . 'resource/delete/?r=' . urlencode((string)$resource) + 'url' => (string)$url ); $toolbar->appendButton(OntoWiki_Toolbar::SEPARATOR); $toolbar->appendButton(OntoWiki_Toolbar::DELETE, $params); From d5a2a47ffe95e84127909d90b6437b618b45fa55 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Fri, 22 Jul 2016 14:15:15 +0200 Subject: [PATCH 136/156] Fix indention of array in FileCommentSniff --- .../Sniffs/Commenting/FileCommentSniff.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php index 94fb05f01..7b864a0d8 100644 --- a/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php +++ b/application/tests/CodeSniffer/Standards/Ontowiki/Sniffs/Commenting/FileCommentSniff.php @@ -26,14 +26,13 @@ class Ontowiki_Sniffs_Commenting_FileCommentSniff implements PHP_CodeSniffer_Sni * @var array */ protected $_copyright = array( - 1 => "/**\n", - 2 => " * This file is part of the {@link http://ontowiki.net OntoWiki} project.\n", - 3 => " *\n", - 4 => "", - 5 => " * @license http://opensource.org/licenses/gpl-license.php " - . "GNU General Public License (GPL)\n", - 6 => " */", - ); + 1 => "/**\n", + 2 => " * This file is part of the {@link http://ontowiki.net OntoWiki} project.\n", + 3 => " *\n", + 4 => "", + 5 => " * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL)\n", + 6 => " */", + ); /** * Returns an array of tokens this test wants to listen for. From 1e0faed6e2cece1719b7cf6555d6e237cbb6f322 Mon Sep 17 00:00:00 2001 From: Natanael Arndt Date: Fri, 22 Jul 2016 14:55:47 +0200 Subject: [PATCH 137/156] Increse minimal PHP version to 5.4.0 - we cant be behind erfurt, which is >=5.4.0 - debian wheezy (oldstable) is at 5.4.45 https://packages.debian.org/wheezy/php5 - debian jessie (stable) is at 5.6.23 https://packages.debian.org/jessie/php5 - ubuntu trusty (14.04 LTS) is at 5.5.9 http://packages.ubuntu.com/trusty/php5 - ubuntu wily (15.10) is at 5.6.11 http://packages.ubuntu.com/wily/php5 - ubuntu xenial (16.04 LTS) is already at PHP 7, which currently causes issues - we don't support precise (12.04 LTS) --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 9226a3b81..630e70132 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ } ], "require": { - "php": ">=5.3.3", + "php": ">=5.4.0", "mnsami/composer-custom-directory-installer": "1.1.*", "aksw/erfurt": "dev-develop", "bitworking/mimeparse": "2.1.*", From 89e7cf82153f55cc7b4873ae82e162af91815462 Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Thu, 21 Jul 2016 17:41:43 +0200 Subject: [PATCH 138/156] Remove Vagrant development environment - Remove vagrant related files - Remove vagrant stuff from .gitignore, ignore devenv folder - Remove vagrant related targets --- .gitignore | 7 +- Makefile | 15 - application/scripts/Vagrantfile-dist | 46 - .../scripts/configuration/manifests/ubuntu.pp | 38 - .../modules/apache2/files/apc.php | 1362 ----------------- .../modules/apache2/files/odbctest.php | 11 - .../modules/apache2/files/phpinfo.php | 2 - .../modules/apache2/manifests/init.pp | 78 - .../modules/apache2/templates/001-ontowiki | 27 - .../modules/bootstrap/files/aliases.zsh | 144 -- .../modules/bootstrap/files/environment.zsh | 20 - .../modules/bootstrap/files/options.zsh | 68 - .../modules/bootstrap/files/prompt.zsh | 142 -- .../modules/bootstrap/files/zshrc | 15 - .../modules/bootstrap/manifests/init.pp | 53 - .../modules/mysql/manifests/init.pp | 23 - .../modules/ontowiki/manifests/init.pp | 42 - .../configuration/modules/php5/files/apc.ini | 19 - .../modules/php5/files/custom_settings.ini | 9 - .../modules/php5/files/xdebug.ini | 9 - .../modules/php5/manifests/init.pp | 46 - .../modules/phpqatools/manifests/init.pp | 8 - .../modules/phpunit/manifests/init.pp | 25 - .../modules/virtuoso/files/odbc.ini | 11 - .../modules/virtuoso/files/ontowiki-dev | 163 -- .../modules/virtuoso/files/ontowiki-dev.ini | 239 --- .../modules/virtuoso/files/ontowiki-test | 163 -- .../modules/virtuoso/files/ontowiki-test.ini | 239 --- .../modules/virtuoso/manifests/init.pp | 72 - .../modules/zend/manifests/init.pp | 31 - 30 files changed, 3 insertions(+), 3124 deletions(-) delete mode 100644 application/scripts/Vagrantfile-dist delete mode 100644 application/scripts/configuration/manifests/ubuntu.pp delete mode 100644 application/scripts/configuration/modules/apache2/files/apc.php delete mode 100644 application/scripts/configuration/modules/apache2/files/odbctest.php delete mode 100644 application/scripts/configuration/modules/apache2/files/phpinfo.php delete mode 100644 application/scripts/configuration/modules/apache2/manifests/init.pp delete mode 100644 application/scripts/configuration/modules/apache2/templates/001-ontowiki delete mode 100644 application/scripts/configuration/modules/bootstrap/files/aliases.zsh delete mode 100644 application/scripts/configuration/modules/bootstrap/files/environment.zsh delete mode 100644 application/scripts/configuration/modules/bootstrap/files/options.zsh delete mode 100644 application/scripts/configuration/modules/bootstrap/files/prompt.zsh delete mode 100644 application/scripts/configuration/modules/bootstrap/files/zshrc delete mode 100644 application/scripts/configuration/modules/bootstrap/manifests/init.pp delete mode 100644 application/scripts/configuration/modules/mysql/manifests/init.pp delete mode 100644 application/scripts/configuration/modules/ontowiki/manifests/init.pp delete mode 100644 application/scripts/configuration/modules/php5/files/apc.ini delete mode 100644 application/scripts/configuration/modules/php5/files/custom_settings.ini delete mode 100644 application/scripts/configuration/modules/php5/files/xdebug.ini delete mode 100644 application/scripts/configuration/modules/php5/manifests/init.pp delete mode 100644 application/scripts/configuration/modules/phpqatools/manifests/init.pp delete mode 100644 application/scripts/configuration/modules/phpunit/manifests/init.pp delete mode 100644 application/scripts/configuration/modules/virtuoso/files/odbc.ini delete mode 100755 application/scripts/configuration/modules/virtuoso/files/ontowiki-dev delete mode 100644 application/scripts/configuration/modules/virtuoso/files/ontowiki-dev.ini delete mode 100755 application/scripts/configuration/modules/virtuoso/files/ontowiki-test delete mode 100644 application/scripts/configuration/modules/virtuoso/files/ontowiki-test.ini delete mode 100644 application/scripts/configuration/modules/virtuoso/manifests/init.pp delete mode 100644 application/scripts/configuration/modules/zend/manifests/init.pp diff --git a/.gitignore b/.gitignore index 401e277d2..7f3b65d37 100644 --- a/.gitignore +++ b/.gitignore @@ -34,13 +34,12 @@ build/ !build/phpcs.xml !build/phpcmd.xml -# vagrant stuff -Vagrantfile -.vagrant - # composer stuff /vendor composer.phar # for now we ignore the composer.lock, but we should commit it some dome day, especially for releases # see also: https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file composer.lock + +# devenv stuff +/devenv diff --git a/Makefile b/Makefile index bd46c3cbd..3d57eafff 100644 --- a/Makefile +++ b/Makefile @@ -35,8 +35,6 @@ help: @echo " help-cs .................... Show help for code sniffing targets" @echo " help-test .................. Show help for test related targets" @echo " -------------------------------------------------------------------" - @echo " vagrant .................... Prepare environment to run with Vagrant" - @echo " vagrant-clean .............. Removes owdev box in order to ensure you have the latest version" @echo " directories ................ Create cache/log dir and chmod environment" @echo " clean ...................... Deletes all log and cache files" @echo " odbctest ................... Executes some tests to check the Virtuoso connection" @@ -67,19 +65,6 @@ deploy: getcomposer make deploy endif -vagrant: directories clean #add composer install - rm -rf libraries/Zend # vagrant has own zend - rm -f Vagrantfile - !(ls $(PWD)/application/scripts/Vagrantfile > /dev/null 2> /dev/null) || ln -s $(PWD)/application/scripts/Vagrantfile $(PWD)/Vagrantfile - (ls $(PWD)/Vagrantfile > /dev/null 2> /dev/null) || ln -s $(PWD)/application/scripts/Vagrantfile-dist $(PWD)/Vagrantfile - (ls $(HOME)/.vagrant.d/boxes/owdev > /dev/null 2> /dev/null) || vagrant box add owdev http://files.ontowiki.net/owdev.box - @echo "" - @echo '=> Now type "vagrant up"' - -vagrant-clean: - rm -f Vagrantfile - vagrant box remove owdev - clean: rm -rf cache/* logs/* libraries/* diff --git a/application/scripts/Vagrantfile-dist b/application/scripts/Vagrantfile-dist deleted file mode 100644 index ef7f3df64..000000000 --- a/application/scripts/Vagrantfile-dist +++ /dev/null @@ -1,46 +0,0 @@ -# -*- mode: ruby -*- -# vi: set ft=ruby : - -Vagrant::configure("2") do |config| - # All Vagrant configuration is done here. The most common configuration - # options are documented and commented below. For a complete reference, - # please see the online documentation at vagrantup.com. - - # Every Vagrant virtual environment requires a box to build off of. - config.vm.box = "hashicorp/precise64" # use a fresh ubuntu box - - config.vm.hostname = "owdev" - - # The url from where the 'config.vm.box' box will be fetched if it - # doesn't already exist on the user's system. - config.vm.box_url = "http://files.vagrantup.com/precise64.box" - - # Create a private network, which allows host-only access to the machine - # using a specific IP. - config.vm.network :private_network, ip: "192.168.33.10" - - # Share an additional folder to the guest VM. The first argument is - # the path on the host to the actual folder. The second argument is - # the path on the guest to mount the folder. And the optional third - # argument is a set of non-required options. - # config.vm.synced_folder "../data", "/vagrant_data" - - # Provider-specific configuration so you can fine-tune various - # backing providers for Vagrant. These expose provider-specific options. - config.vm.provider :virtualbox do |vb| - # Don't boot with headless mode - #vb.gui = true - - vb.name = "OntoWiki" - vb.customize ["modifyvm", :id, "--rtcuseutc", "on", "--memory", "2048", "--cpus", "2"] - #vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"] - end - - # Puppet settings - config.vm.provision :puppet do |puppet| - puppet.manifests_path = "application/scripts/configuration/manifests" - puppet.manifest_file = "ubuntu.pp" - puppet.module_path = "application/scripts/configuration/modules" - #puppet.options = "--verbose --debug" - end -end diff --git a/application/scripts/configuration/manifests/ubuntu.pp b/application/scripts/configuration/manifests/ubuntu.pp deleted file mode 100644 index bcb50bf5e..000000000 --- a/application/scripts/configuration/manifests/ubuntu.pp +++ /dev/null @@ -1,38 +0,0 @@ -stage { 'preinstall': - before => Stage['main'] -} - -class apt_get_update { - exec { '/usr/bin/apt-get -y update': } -} - -class { 'apt_get_update': - stage => preinstall -} - -class ubuntu -{ - $ow_server_name = 'ontowiki.local' - $ow_application_env = 'development' - - $webserver_user = 'vagrant' - $webserver_group = 'vagrant' - - $mysql_user = 'php' - $mysql_pw = 'php' - $mysql_root_pw = 'ontowiki123' - - $zend_version = '1.11.7' - - include bootstrap - include apache2 - include php5 - include mysql - include virtuoso - include phpunit - include phpqatools - include zend - include ontowiki -} - -include ubuntu diff --git a/application/scripts/configuration/modules/apache2/files/apc.php b/application/scripts/configuration/modules/apache2/files/apc.php deleted file mode 100644 index b64201259..000000000 --- a/application/scripts/configuration/modules/apache2/files/apc.php +++ /dev/null @@ -1,1362 +0,0 @@ - | - | Rasmus Lerdorf | - | Ilia Alshanetsky | - +----------------------------------------------------------------------+ - - All other licensing and usage conditions are those of the PHP Group. - - */ - -$VERSION='$Id: apc.php 307048 2011-01-03 23:53:17Z kalle $'; - -////////// READ OPTIONAL CONFIGURATION FILE //////////// -if (file_exists("apc.conf.php")) include("apc.conf.php"); -//////////////////////////////////////////////////////// - -////////// BEGIN OF DEFAULT CONFIG AREA /////////////////////////////////////////////////////////// - -defaults('USE_AUTHENTICATION',1); // Use (internal) authentication - best choice if - // no other authentication is available - // If set to 0: - // There will be no further authentication. You - // will have to handle this by yourself! - // If set to 1: - // You need to change ADMIN_PASSWORD to make - // this work! -defaults('ADMIN_USERNAME','apc'); // Admin Username -defaults('ADMIN_PASSWORD','apc'); // Admin Password - CHANGE THIS TO ENABLE!!! - -// (beckerr) I'm using a clear text password here, because I've no good idea how to let -// users generate a md5 or crypt password in a easy way to fill it in above - -//defaults('DATE_FORMAT', "d.m.Y H:i:s"); // German -defaults('DATE_FORMAT', 'Y/m/d H:i:s'); // US - -defaults('GRAPH_SIZE',200); // Image size - -//defaults('PROXY', 'tcp://127.0.0.1:8080'); - -////////// END OF DEFAULT CONFIG AREA ///////////////////////////////////////////////////////////// - - -// "define if not defined" -function defaults($d,$v) { - if (!defined($d)) define($d,$v); // or just @define(...) -} - -// rewrite $PHP_SELF to block XSS attacks -// -$PHP_SELF= isset($_SERVER['PHP_SELF']) ? htmlentities(strip_tags($_SERVER['PHP_SELF'],''), ENT_QUOTES, 'UTF-8') : ''; -$time = time(); -$host = php_uname('n'); -if($host) { $host = '('.$host.')'; } -if (isset($_SERVER['SERVER_ADDR'])) { - $host .= ' ('.$_SERVER['SERVER_ADDR'].')'; -} - -// operation constants -define('OB_HOST_STATS',1); -define('OB_SYS_CACHE',2); -define('OB_USER_CACHE',3); -define('OB_SYS_CACHE_DIR',4); -define('OB_VERSION_CHECK',9); - -// check validity of input variables -$vardom=array( - 'OB' => '/^\d+$/', // operational mode switch - 'CC' => '/^[01]$/', // clear cache requested - 'DU' => '/^.*$/', // Delete User Key - 'SH' => '/^[a-z0-9]+$/', // shared object description - - 'IMG' => '/^[123]$/', // image to generate - 'LO' => '/^1$/', // login requested - - 'COUNT' => '/^\d+$/', // number of line displayed in list - 'SCOPE' => '/^[AD]$/', // list view scope - 'SORT1' => '/^[AHSMCDTZ]$/', // first sort key - 'SORT2' => '/^[DA]$/', // second sort key - 'AGGR' => '/^\d+$/', // aggregation by dir level - 'SEARCH' => '~^[a-zA-Z0-1/_.-]*$~' // aggregation by dir level -); - -// default cache mode -$cache_mode='opcode'; - -// cache scope -$scope_list=array( - 'A' => 'cache_list', - 'D' => 'deleted_list' -); - -// handle POST and GET requests -if (empty($_REQUEST)) { - if (!empty($_GET) && !empty($_POST)) { - $_REQUEST = array_merge($_GET, $_POST); - } else if (!empty($_GET)) { - $_REQUEST = $_GET; - } else if (!empty($_POST)) { - $_REQUEST = $_POST; - } else { - $_REQUEST = array(); - } -} - -// check parameter syntax -foreach($vardom as $var => $dom) { - if (!isset($_REQUEST[$var])) { - $MYREQUEST[$var]=NULL; - } else if (!is_array($_REQUEST[$var]) && preg_match($dom.'D',$_REQUEST[$var])) { - $MYREQUEST[$var]=$_REQUEST[$var]; - } else { - $MYREQUEST[$var]=$_REQUEST[$var]=NULL; - } -} - -// check parameter sematics -if (empty($MYREQUEST['SCOPE'])) $MYREQUEST['SCOPE']="A"; -if (empty($MYREQUEST['SORT1'])) $MYREQUEST['SORT1']="H"; -if (empty($MYREQUEST['SORT2'])) $MYREQUEST['SORT2']="D"; -if (empty($MYREQUEST['OB'])) $MYREQUEST['OB']=OB_HOST_STATS; -if (!isset($MYREQUEST['COUNT'])) $MYREQUEST['COUNT']=20; -if (!isset($scope_list[$MYREQUEST['SCOPE']])) $MYREQUEST['SCOPE']='A'; - -$MY_SELF= - "$PHP_SELF". - "?SCOPE=".$MYREQUEST['SCOPE']. - "&SORT1=".$MYREQUEST['SORT1']. - "&SORT2=".$MYREQUEST['SORT2']. - "&COUNT=".$MYREQUEST['COUNT']; -$MY_SELF_WO_SORT= - "$PHP_SELF". - "?SCOPE=".$MYREQUEST['SCOPE']. - "&COUNT=".$MYREQUEST['COUNT']; - -// authentication needed? -// -if (!USE_AUTHENTICATION) { - $AUTHENTICATED=1; -} else { - $AUTHENTICATED=0; - if (ADMIN_PASSWORD!='password' && ($MYREQUEST['LO'] == 1 || isset($_SERVER['PHP_AUTH_USER']))) { - - if (!isset($_SERVER['PHP_AUTH_USER']) || - !isset($_SERVER['PHP_AUTH_PW']) || - $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME || - $_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) { - Header("WWW-Authenticate: Basic realm=\"APC Login\""); - Header("HTTP/1.0 401 Unauthorized"); - - echo << -

          Rejected!

          - Wrong Username or Password!
           
            - Continue... - -EOB; - exit; - - } else { - $AUTHENTICATED=1; - } - } -} - -// select cache mode -if ($AUTHENTICATED && $MYREQUEST['OB'] == OB_USER_CACHE) { - $cache_mode='user'; -} -// clear cache -if ($AUTHENTICATED && isset($MYREQUEST['CC']) && $MYREQUEST['CC']) { - apc_clear_cache($cache_mode); -} - -if ($AUTHENTICATED && !empty($MYREQUEST['DU'])) { - apc_delete($MYREQUEST['DU']); -} - -if(!function_exists('apc_cache_info') || !($cache=@apc_cache_info($cache_mode))) { - echo "No cache info available. APC does not appear to be running."; - exit; -} - -$cache_user = apc_cache_info('user', 1); -$mem=apc_sma_info(); -if(!$cache['num_hits']) { $cache['num_hits']=1; $time++; } // Avoid division by 0 errors on a cache clear - -// don't cache this page -// -header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1 -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); // HTTP/1.0 - -function duration($ts) { - global $time; - $years = (int)((($time - $ts)/(7*86400))/52.177457); - $rem = (int)(($time-$ts)-($years * 52.177457 * 7 * 86400)); - $weeks = (int)(($rem)/(7*86400)); - $days = (int)(($rem)/86400) - $weeks*7; - $hours = (int)(($rem)/3600) - $days*24 - $weeks*7*24; - $mins = (int)(($rem)/60) - $hours*60 - $days*24*60 - $weeks*7*24*60; - $str = ''; - if($years==1) $str .= "$years year, "; - if($years>1) $str .= "$years years, "; - if($weeks==1) $str .= "$weeks week, "; - if($weeks>1) $str .= "$weeks weeks, "; - if($days==1) $str .= "$days day,"; - if($days>1) $str .= "$days days,"; - if($hours == 1) $str .= " $hours hour and"; - if($hours>1) $str .= " $hours hours and"; - if($mins == 1) $str .= " 1 minute"; - else $str .= " $mins minutes"; - return $str; -} - -// create graphics -// -function graphics_avail() { - return extension_loaded('gd'); -} -if (isset($MYREQUEST['IMG'])) -{ - if (!graphics_avail()) { - exit(0); - } - - function fill_arc($im, $centerX, $centerY, $diameter, $start, $end, $color1,$color2,$text='',$placeindex=0) { - $r=$diameter/2; - $w=deg2rad((360+$start+($end-$start)/2)%360); - - - if (function_exists("imagefilledarc")) { - // exists only if GD 2.0.1 is avaliable - imagefilledarc($im, $centerX+1, $centerY+1, $diameter, $diameter, $start, $end, $color1, IMG_ARC_PIE); - imagefilledarc($im, $centerX, $centerY, $diameter, $diameter, $start, $end, $color2, IMG_ARC_PIE); - imagefilledarc($im, $centerX, $centerY, $diameter, $diameter, $start, $end, $color1, IMG_ARC_NOFILL|IMG_ARC_EDGED); - } else { - imagearc($im, $centerX, $centerY, $diameter, $diameter, $start, $end, $color2); - imageline($im, $centerX, $centerY, $centerX + cos(deg2rad($start)) * $r, $centerY + sin(deg2rad($start)) * $r, $color2); - imageline($im, $centerX, $centerY, $centerX + cos(deg2rad($start+1)) * $r, $centerY + sin(deg2rad($start)) * $r, $color2); - imageline($im, $centerX, $centerY, $centerX + cos(deg2rad($end-1)) * $r, $centerY + sin(deg2rad($end)) * $r, $color2); - imageline($im, $centerX, $centerY, $centerX + cos(deg2rad($end)) * $r, $centerY + sin(deg2rad($end)) * $r, $color2); - imagefill($im,$centerX + $r*cos($w)/2, $centerY + $r*sin($w)/2, $color2); - } - if ($text) { - if ($placeindex>0) { - imageline($im,$centerX + $r*cos($w)/2, $centerY + $r*sin($w)/2,$diameter, $placeindex*12,$color1); - imagestring($im,4,$diameter, $placeindex*12,$text,$color1); - - } else { - imagestring($im,4,$centerX + $r*cos($w)/2, $centerY + $r*sin($w)/2,$text,$color1); - } - } - } - - function text_arc($im, $centerX, $centerY, $diameter, $start, $end, $color1,$text,$placeindex=0) { - $r=$diameter/2; - $w=deg2rad((360+$start+($end-$start)/2)%360); - - if ($placeindex>0) { - imageline($im,$centerX + $r*cos($w)/2, $centerY + $r*sin($w)/2,$diameter, $placeindex*12,$color1); - imagestring($im,4,$diameter, $placeindex*12,$text,$color1); - - } else { - imagestring($im,4,$centerX + $r*cos($w)/2, $centerY + $r*sin($w)/2,$text,$color1); - } - } - - function fill_box($im, $x, $y, $w, $h, $color1, $color2,$text='',$placeindex='') { - global $col_black; - $x1=$x+$w-1; - $y1=$y+$h-1; - - imagerectangle($im, $x, $y1, $x1+1, $y+1, $col_black); - if($y1>$y) imagefilledrectangle($im, $x, $y, $x1, $y1, $color2); - else imagefilledrectangle($im, $x, $y1, $x1, $y, $color2); - imagerectangle($im, $x, $y1, $x1, $y, $color1); - if ($text) { - if ($placeindex>0) { - - if ($placeindex<16) - { - $px=5; - $py=$placeindex*12+6; - imagefilledrectangle($im, $px+90, $py+3, $px+90-4, $py-3, $color2); - imageline($im,$x,$y+$h/2,$px+90,$py,$color2); - imagestring($im,2,$px,$py-6,$text,$color1); - - } else { - if ($placeindex<31) { - $px=$x+40*2; - $py=($placeindex-15)*12+6; - } else { - $px=$x+40*2+100*intval(($placeindex-15)/15); - $py=($placeindex%15)*12+6; - } - imagefilledrectangle($im, $px, $py+3, $px-4, $py-3, $color2); - imageline($im,$x+$w,$y+$h/2,$px,$py,$color2); - imagestring($im,2,$px+2,$py-6,$text,$color1); - } - } else { - imagestring($im,4,$x+5,$y1-16,$text,$color1); - } - } - } - - - $size = GRAPH_SIZE; // image size - if ($MYREQUEST['IMG']==3) - $image = imagecreate(2*$size+150, $size+10); - else - $image = imagecreate($size+50, $size+10); - - $col_white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF); - $col_red = imagecolorallocate($image, 0xD0, 0x60, 0x30); - $col_green = imagecolorallocate($image, 0x60, 0xF0, 0x60); - $col_black = imagecolorallocate($image, 0, 0, 0); - imagecolortransparent($image,$col_white); - - switch ($MYREQUEST['IMG']) { - - case 1: - $s=$mem['num_seg']*$mem['seg_size']; - $a=$mem['avail_mem']; - $x=$y=$size/2; - $fuzz = 0.000001; - - // This block of code creates the pie chart. It is a lot more complex than you - // would expect because we try to visualize any memory fragmentation as well. - $angle_from = 0; - $string_placement=array(); - for($i=0; $i<$mem['num_seg']; $i++) { - $ptr = 0; - $free = $mem['block_lists'][$i]; - uasort($free, 'block_sort'); - foreach($free as $block) { - if($block['offset']!=$ptr) { // Used block - $angle_to = $angle_from+($block['offset']-$ptr)/$s; - if(($angle_to+$fuzz)>1) $angle_to = 1; - if( ($angle_to*360) - ($angle_from*360) >= 1) { - fill_arc($image,$x,$y,$size,$angle_from*360,$angle_to*360,$col_black,$col_red); - if (($angle_to-$angle_from)>0.05) { - array_push($string_placement, array($angle_from,$angle_to)); - } - } - $angle_from = $angle_to; - } - $angle_to = $angle_from+($block['size'])/$s; - if(($angle_to+$fuzz)>1) $angle_to = 1; - if( ($angle_to*360) - ($angle_from*360) >= 1) { - fill_arc($image,$x,$y,$size,$angle_from*360,$angle_to*360,$col_black,$col_green); - if (($angle_to-$angle_from)>0.05) { - array_push($string_placement, array($angle_from,$angle_to)); - } - } - $angle_from = $angle_to; - $ptr = $block['offset']+$block['size']; - } - if ($ptr < $mem['seg_size']) { // memory at the end - $angle_to = $angle_from + ($mem['seg_size'] - $ptr)/$s; - if(($angle_to+$fuzz)>1) $angle_to = 1; - fill_arc($image,$x,$y,$size,$angle_from*360,$angle_to*360,$col_black,$col_red); - if (($angle_to-$angle_from)>0.05) { - array_push($string_placement, array($angle_from,$angle_to)); - } - } - } - foreach ($string_placement as $angle) { - text_arc($image,$x,$y,$size,$angle[0]*360,$angle[1]*360,$col_black,bsize($s*($angle[1]-$angle[0]))); - } - break; - - case 2: - $s=$cache['num_hits']+$cache['num_misses']; - $a=$cache['num_hits']; - - fill_box($image, 30,$size,50,-$a*($size-21)/$s,$col_black,$col_green,sprintf("%.1f%%",$cache['num_hits']*100/$s)); - fill_box($image,130,$size,50,-max(4,($s-$a)*($size-21)/$s),$col_black,$col_red,sprintf("%.1f%%",$cache['num_misses']*100/$s)); - break; - - case 3: - $s=$mem['num_seg']*$mem['seg_size']; - $a=$mem['avail_mem']; - $x=130; - $y=1; - $j=1; - - // This block of code creates the bar chart. It is a lot more complex than you - // would expect because we try to visualize any memory fragmentation as well. - for($i=0; $i<$mem['num_seg']; $i++) { - $ptr = 0; - $free = $mem['block_lists'][$i]; - uasort($free, 'block_sort'); - foreach($free as $block) { - if($block['offset']!=$ptr) { // Used block - $h=(GRAPH_SIZE-5)*($block['offset']-$ptr)/$s; - if ($h>0) { - $j++; - if($j<75) fill_box($image,$x,$y,50,$h,$col_black,$col_red,bsize($block['offset']-$ptr),$j); - else fill_box($image,$x,$y,50,$h,$col_black,$col_red); - } - $y+=$h; - } - $h=(GRAPH_SIZE-5)*($block['size'])/$s; - if ($h>0) { - $j++; - if($j<75) fill_box($image,$x,$y,50,$h,$col_black,$col_green,bsize($block['size']),$j); - else fill_box($image,$x,$y,50,$h,$col_black,$col_green); - } - $y+=$h; - $ptr = $block['offset']+$block['size']; - } - if ($ptr < $mem['seg_size']) { // memory at the end - $h = (GRAPH_SIZE-5) * ($mem['seg_size'] - $ptr) / $s; - if ($h > 0) { - fill_box($image,$x,$y,50,$h,$col_black,$col_red,bsize($mem['seg_size']-$ptr),$j++); - } - } - } - break; - case 4: - $s=$cache['num_hits']+$cache['num_misses']; - $a=$cache['num_hits']; - - fill_box($image, 30,$size,50,-$a*($size-21)/$s,$col_black,$col_green,sprintf("%.1f%%",$cache['num_hits']*100/$s)); - fill_box($image,130,$size,50,-max(4,($s-$a)*($size-21)/$s),$col_black,$col_red,sprintf("%.1f%%",$cache['num_misses']*100/$s)); - break; - - } - header("Content-type: image/png"); - imagepng($image); - exit; -} - -// pretty printer for byte values -// -function bsize($s) { - foreach (array('','K','M','G') as $i => $k) { - if ($s < 1024) break; - $s/=1024; - } - return sprintf("%5.1f %sBytes",$s,$k); -} - -// sortable table header in "scripts for this host" view -function sortheader($key,$name,$extra='') { - global $MYREQUEST, $MY_SELF_WO_SORT; - - if ($MYREQUEST['SORT1']==$key) { - $MYREQUEST['SORT2'] = $MYREQUEST['SORT2']=='A' ? 'D' : 'A'; - } - return "$name"; - -} - -// create menu entry -function menu_entry($ob,$title) { - global $MYREQUEST,$MY_SELF; - if ($MYREQUEST['OB']!=$ob) { - return "
        • $title
        • "; - } else if (empty($MYREQUEST['SH'])) { - return "
        • $title
        • "; - } else { - return "
        • $title
        • "; - } -} - -function put_login_link($s="Login") -{ - global $MY_SELF,$MYREQUEST,$AUTHENTICATED; - // needs ADMIN_PASSWORD to be changed! - // - if (!USE_AUTHENTICATION) { - return; - } else if (ADMIN_PASSWORD=='password') - { - print <<$s -EOB; - } else if ($AUTHENTICATED) { - print <<$s -EOB; - } -} - -function block_sort($array1, $array2) -{ - if ($array1['offset'] > $array2['offset']) { - return 1; - } else { - return -1; - } -} - - -?> - - -APC INFO <?php echo $host ?> - - - -
          -

          - -
          Opcode Cache
          -

          - -
          -
          - -
        • Refresh Data
        • -EOB; -echo - menu_entry(1,'View Host Stats'), - menu_entry(2,'System Cache Entries'); -if ($AUTHENTICATED) { - echo menu_entry(4,'Per-Directory Entries'); -} -echo - menu_entry(3,'User Cache Entries'), - menu_entry(9,'Version Check'); - -if ($AUTHENTICATED) { - echo <<Clear $cache_mode Cache -EOB; -} -echo << -EOB; - - -// CONTENT -echo << -EOB; - -// MAIN SWITCH STATEMENT - -switch ($MYREQUEST['OB']) { - - - - - -// ----------------------------------------------- -// Host Stats -// ----------------------------------------------- -case OB_HOST_STATS: - $mem_size = $mem['num_seg']*$mem['seg_size']; - $mem_avail= $mem['avail_mem']; - $mem_used = $mem_size-$mem_avail; - $seg_size = bsize($mem['seg_size']); - $req_rate = sprintf("%.2f",($cache['num_hits']+$cache['num_misses'])/($time-$cache['start_time'])); - $hit_rate = sprintf("%.2f",($cache['num_hits'])/($time-$cache['start_time'])); - $miss_rate = sprintf("%.2f",($cache['num_misses'])/($time-$cache['start_time'])); - $insert_rate = sprintf("%.2f",($cache['num_inserts'])/($time-$cache['start_time'])); - $req_rate_user = sprintf("%.2f",($cache_user['num_hits']+$cache_user['num_misses'])/($time-$cache_user['start_time'])); - $hit_rate_user = sprintf("%.2f",($cache_user['num_hits'])/($time-$cache_user['start_time'])); - $miss_rate_user = sprintf("%.2f",($cache_user['num_misses'])/($time-$cache_user['start_time'])); - $insert_rate_user = sprintf("%.2f",($cache_user['num_inserts'])/($time-$cache_user['start_time'])); - $apcversion = phpversion('apc'); - $phpversion = phpversion(); - $number_files = $cache['num_entries']; - $size_files = bsize($cache['mem_size']); - $number_vars = $cache_user['num_entries']; - $size_vars = bsize($cache_user['mem_size']); - $i=0; - echo <<< EOB -

          General Cache Information

          - - - -EOB; - - if(!empty($_SERVER['SERVER_NAME'])) - echo "\n"; - if(!empty($_SERVER['SERVER_SOFTWARE'])) - echo "\n"; - - echo << -EOB; - echo ''; - echo ''; - echo ''; - echo <<
          APC Version$apcversion
          PHP Version$phpversion
          APC Host{$_SERVER['SERVER_NAME']} $host
          Server Software{$_SERVER['SERVER_SOFTWARE']}
          Shared Memory{$mem['num_seg']} Segment(s) with $seg_size -
          ({$cache['memory_type']} memory, {$cache['locking_type']} locking) -
          Start Time',date(DATE_FORMAT,$cache['start_time']),'
          Uptime',duration($cache['start_time']),'
          File Upload Support',$cache['file_upload_progress'],'
          -
          - -

          File Cache Information

          - - - - - - - - - -
          Cached Files$number_files ($size_files)
          Hits{$cache['num_hits']}
          Misses{$cache['num_misses']}
          Request Rate (hits, misses)$req_rate cache requests/second
          Hit Rate$hit_rate cache requests/second
          Miss Rate$miss_rate cache requests/second
          Insert Rate$insert_rate cache requests/second
          Cache full count{$cache['expunges']}
          -
          - -

          User Cache Information

          - - - - - - - - - - -
          Cached Variables$number_vars ($size_vars)
          Hits{$cache_user['num_hits']}
          Misses{$cache_user['num_misses']}
          Request Rate (hits, misses)$req_rate_user cache requests/second
          Hit Rate$hit_rate_user cache requests/second
          Miss Rate$miss_rate_user cache requests/second
          Insert Rate$insert_rate_user cache requests/second
          Cache full count{$cache_user['expunges']}
          -
          - -

          Runtime Settings

          -EOB; - - $j = 0; - foreach (ini_get_all('apc') as $k => $v) { - echo "\n"; - $j = 1 - $j; - } - - if($mem['num_seg']>1 || $mem['num_seg']==1 && count($mem['block_lists'][0])>1) - $mem_note = "Memory Usage
          (multiple slices indicate fragments)"; - else - $mem_note = "Memory Usage"; - - echo <<< EOB -
          ",$k,"",str_replace(',',',
          ',$v['local_value']),"
          -
          - -

          Host Status Diagrams

          - -EOB; - $size='width='.(GRAPH_SIZE+50).' height='.(GRAPH_SIZE+10); - echo << - - - -EOB; - - echo - graphics_avail() ? - ''. - "". - "\n" - : "", - '', - '\n", - '\n", - '', - '', - '\n", - '\n"; - echo <<< EOB - -
          $mem_noteHits & Misses
          \"\"\"\"
           Free: ',bsize($mem_avail).sprintf(" (%.1f%%)",$mem_avail*100/$mem_size)," Hits: ',$cache['num_hits'].sprintf(" (%.1f%%)",$cache['num_hits']*100/($cache['num_hits']+$cache['num_misses'])),"
           Used: ',bsize($mem_used ).sprintf(" (%.1f%%)",$mem_used *100/$mem_size)," Misses: ',$cache['num_misses'].sprintf(" (%.1f%%)",$cache['num_misses']*100/($cache['num_hits']+$cache['num_misses'])),"
          - -
          -

          Detailed Memory Usage and Fragmentation

          - - - - -EOB; - if(isset($mem['adist'])) { - foreach($mem['adist'] as $i=>$v) { - $cur = pow(2,$i); $nxt = pow(2,$i+1)-1; - if($i==0) $range = "1"; - else $range = "$cur - $nxt"; - echo "\n"; - } - } - echo <<

          -EOB; - - // Fragementation: (freeseg - 1) / total_seg - $nseg = $freeseg = $fragsize = $freetotal = 0; - for($i=0; $i<$mem['num_seg']; $i++) { - $ptr = 0; - foreach($mem['block_lists'][$i] as $block) { - if ($block['offset'] != $ptr) { - ++$nseg; - } - $ptr = $block['offset'] + $block['size']; - /* Only consider blocks <5M for the fragmentation % */ - if($block['size']<(5*1024*1024)) $fragsize+=$block['size']; - $freetotal+=$block['size']; - } - $freeseg += count($mem['block_lists'][$i]); - } - - if ($freeseg > 1) { - $frag = sprintf("%.2f%% (%s out of %s in %d fragments)", ($fragsize/$freetotal)*100,bsize($fragsize),bsize($freetotal),$freeseg); - } else { - $frag = "0%"; - } - - if (graphics_avail()) { - $size='width='.(2*GRAPH_SIZE+150).' height='.(GRAPH_SIZE+10); - echo << -EOB; - } - echo <<Fragmentation: $frag -
          $range$v
          -
          -EOB; - - break; - - -// ----------------------------------------------- -// User Cache Entries -// ----------------------------------------------- -case OB_USER_CACHE: - if (!$AUTHENTICATED) { - echo '
          You need to login to see the user values here!
           
          '; - put_login_link("Login now!"); - echo '
          '; - break; - } - $fieldname='info'; - $fieldheading='User Entry Label'; - $fieldkey='info'; - -// ----------------------------------------------- -// System Cache Entries -// ----------------------------------------------- -case OB_SYS_CACHE: - if (!isset($fieldname)) - { - $fieldname='filename'; - $fieldheading='Script Filename'; - if(ini_get("apc.stat")) $fieldkey='inode'; - else $fieldkey='filename'; - } - if (!empty($MYREQUEST['SH'])) - { - echo <<< EOB -
          - -EOB; - - $m=0; - foreach($scope_list as $j => $list) { - foreach($cache[$list] as $i => $entry) { - if (md5($entry[$fieldkey])!=$MYREQUEST['SH']) continue; - foreach($entry as $k => $value) { - if (!$AUTHENTICATED) { - // hide all path entries if not logged in - $value=preg_replace('/^.*(\\/|\\\\)/','<hidden>/',$value); - } - - if ($k == "num_hits") { - $value=sprintf("%s (%.2f%%)",$value,$value*100/$cache['num_hits']); - } - if ($k == 'deletion_time') { - if(!$entry['deletion_time']) $value = "None"; - } - echo - "", - "", - "", - ""; - $m=1-$m; - } - if($fieldkey=='info') { - echo "\n"; - } - break; - } - } - - echo <<
          AttributeValue
          ",ucwords(preg_replace("/_/"," ",$k)),"",(preg_match("/time/",$k) && $value!='None') ? date(DATE_FORMAT,$value) : htmlspecialchars($value, ENT_QUOTES, 'UTF-8'),"
          Stored Value
          ";
          -					$output = var_export(apc_fetch($entry[$fieldkey]),true);
          -					echo htmlspecialchars($output, ENT_QUOTES, 'UTF-8');
          -					echo "
          -
          -EOB; - break; - } - - $cols=6; - echo <<
          Scope: - - ", - ", Sorting:', - '', - '', - '  Search: ', - ' ', - '
          '; - - if (isset($MYREQUEST['SEARCH'])) { - // Don't use preg_quote because we want the user to be able to specify a - // regular expression subpattern. - $MYREQUEST['SEARCH'] = '/'.str_replace('/', '\\/', $MYREQUEST['SEARCH']).'/i'; - if (preg_match($MYREQUEST['SEARCH'], 'test') === false) { - echo '
          Error: enter a valid regular expression as a search query.
          '; - break; - } - } - - echo - '
          ', - '', - '', - '', - '', - '', - '', - ''; - - if($fieldname=='info') { - $cols+=2; - echo ''; - } - echo ''; - - // builds list with alpha numeric sortable keys - // - $list = array(); - foreach($cache[$scope_list[$MYREQUEST['SCOPE']]] as $i => $entry) { - switch($MYREQUEST['SORT1']) { - case 'A': $k=sprintf('%015d-',$entry['access_time']); break; - case 'H': $k=sprintf('%015d-',$entry['num_hits']); break; - case 'Z': $k=sprintf('%015d-',$entry['mem_size']); break; - case 'M': $k=sprintf('%015d-',$entry['mtime']); break; - case 'C': $k=sprintf('%015d-',$entry['creation_time']); break; - case 'T': $k=sprintf('%015d-',$entry['ttl']); break; - case 'D': $k=sprintf('%015d-',$entry['deletion_time']); break; - case 'S': $k=''; break; - } - if (!$AUTHENTICATED) { - // hide all path entries if not logged in - $list[$k.$entry[$fieldname]]=preg_replace('/^.*(\\/|\\\\)/','*hidden*/',$entry); - } else { - $list[$k.$entry[$fieldname]]=$entry; - } - } - - if ($list) { - - // sort list - // - switch ($MYREQUEST['SORT2']) { - case "A": krsort($list); break; - case "D": ksort($list); break; - } - - // output list - $i=0; - foreach($list as $k => $entry) { - if(!$MYREQUEST['SEARCH'] || preg_match($MYREQUEST['SEARCH'], $entry[$fieldname]) != 0) { - $field_value = htmlentities(strip_tags($entry[$fieldname],''), ENT_QUOTES, 'UTF-8'); - echo - '', - "', - '', - '', - '', - '', - ''; - - if($fieldname=='info') { - if($entry['ttl']) - echo ''; - else - echo ''; - } - if ($entry['deletion_time']) { - - echo ''; - } else if ($MYREQUEST['OB'] == OB_USER_CACHE) { - - echo ''; - } else { - echo ''; - } - echo ''; - $i++; - if ($i == $MYREQUEST['COUNT']) - break; - } - } - - } else { - echo ''; - } - echo <<< EOB -
          ',sortheader('S',$fieldheading, "&OB=".$MYREQUEST['OB']),'',sortheader('H','Hits', "&OB=".$MYREQUEST['OB']),'',sortheader('Z','Size', "&OB=".$MYREQUEST['OB']),'',sortheader('A','Last accessed',"&OB=".$MYREQUEST['OB']),'',sortheader('M','Last modified',"&OB=".$MYREQUEST['OB']),'',sortheader('C','Created at', "&OB=".$MYREQUEST['OB']),'',sortheader('T','Timeout',"&OB=".$MYREQUEST['OB']),'',sortheader('D','Deleted at',"&OB=".$MYREQUEST['OB']),'
          ",$field_value,'',$entry['num_hits'],'',$entry['mem_size'],'',date(DATE_FORMAT,$entry['access_time']),'',date(DATE_FORMAT,$entry['mtime']),'',date(DATE_FORMAT,$entry['creation_time']),''.$entry['ttl'].' secondsNone', date(DATE_FORMAT,$entry['deletion_time']), ''; - echo '[Delete Now]'; - echo '  
          No data
          -EOB; - - if ($list && $i < count($list)) { - echo "",count($list)-$i,' more available...'; - } - - echo <<< EOB -
          -EOB; - break; - - -// ----------------------------------------------- -// Per-Directory System Cache Entries -// ----------------------------------------------- -case OB_SYS_CACHE_DIR: - if (!$AUTHENTICATED) { - break; - } - - echo <<
          Scope: - - ", - ", Sorting:', - '', - '', - ", Group By Dir Level:', - ' ', - '
          ', - - '
          ', - '', - '', - '', - '', - '', - '', - '', - ''; - - // builds list with alpha numeric sortable keys - // - $tmp = $list = array(); - foreach($cache[$scope_list[$MYREQUEST['SCOPE']]] as $entry) { - $n = dirname($entry['filename']); - if ($MYREQUEST['AGGR'] > 0) { - $n = preg_replace("!^(/?(?:[^/\\\\]+[/\\\\]){".($MYREQUEST['AGGR']-1)."}[^/\\\\]*).*!", "$1", $n); - } - if (!isset($tmp[$n])) { - $tmp[$n] = array('hits'=>0,'size'=>0,'ents'=>0); - } - $tmp[$n]['hits'] += $entry['num_hits']; - $tmp[$n]['size'] += $entry['mem_size']; - ++$tmp[$n]['ents']; - } - - foreach ($tmp as $k => $v) { - switch($MYREQUEST['SORT1']) { - case 'A': $kn=sprintf('%015d-',$v['size'] / $v['ents']);break; - case 'T': $kn=sprintf('%015d-',$v['ents']); break; - case 'H': $kn=sprintf('%015d-',$v['hits']); break; - case 'Z': $kn=sprintf('%015d-',$v['size']); break; - case 'C': $kn=sprintf('%015d-',$v['hits'] / $v['ents']);break; - case 'S': $kn = $k; break; - } - $list[$kn.$k] = array($k, $v['ents'], $v['hits'], $v['size']); - } - - if ($list) { - - // sort list - // - switch ($MYREQUEST['SORT2']) { - case "A": krsort($list); break; - case "D": ksort($list); break; - } - - // output list - $i = 0; - foreach($list as $entry) { - echo - '', - "', - '', - '', - '', - '', - '', - ''; - - if (++$i == $MYREQUEST['COUNT']) break; - } - - } else { - echo ''; - } - echo <<< EOB -
          ',sortheader('S','Directory Name', "&OB=".$MYREQUEST['OB']),'',sortheader('T','Number of Files',"&OB=".$MYREQUEST['OB']),'',sortheader('H','Total Hits', "&OB=".$MYREQUEST['OB']),'',sortheader('Z','Total Size', "&OB=".$MYREQUEST['OB']),'',sortheader('C','Avg. Hits', "&OB=".$MYREQUEST['OB']),'',sortheader('A','Avg. Size', "&OB=".$MYREQUEST['OB']),'
          ",$entry[0],'',$entry[1],'',$entry[2],'',$entry[3],'',round($entry[2] / $entry[1]),'',round($entry[3] / $entry[1]),'
          No data
          -EOB; - - if ($list && $i < count($list)) { - echo "",count($list)-$i,' more available...'; - } - - echo <<< EOB -
          -EOB; - break; - -// ----------------------------------------------- -// Version check -// ----------------------------------------------- -case OB_VERSION_CHECK: - echo <<

          APC Version Information

          - - - - -EOB; - if (defined('PROXY')) { - $ctxt = stream_context_create( array( 'http' => array( 'proxy' => PROXY, 'request_fulluri' => True ) ) ); - $rss = @file_get_contents("http://pecl.php.net/feeds/pkg_apc.rss", False, $ctxt); - } else { - $rss = @file_get_contents("http://pecl.php.net/feeds/pkg_apc.rss"); - } - if (!$rss) { - echo ''; - } else { - $apcversion = phpversion('apc'); - - preg_match('!APC ([0-9.]+)!', $rss, $match); - echo ''; - echo ''; - } - echo <<< EOB -
          Unable to fetch version information.
          '; - if (version_compare($apcversion, $match[1], '>=')) { - echo '
          You are running the latest version of APC ('.$apcversion.')
          '; - $i = 3; - } else { - echo '
          You are running an older version of APC ('.$apcversion.'), - newer version '.$match[1].' is available at - http://pecl.php.net/package/APC/'.$match[1].' -
          '; - $i = -1; - } - echo '

          Change Log:


          '; - - preg_match_all('!<(title|description)>([^<]+)!', $rss, $match); - next($match[2]); next($match[2]); - - while (list(,$v) = each($match[2])) { - list(,$ver) = explode(' ', $v, 2); - if ($i < 0 && version_compare($apcversion, $ver, '>=')) { - break; - } else if (!$i--) { - break; - } - echo "".htmlspecialchars($v, ENT_QUOTES, 'UTF-8')."
          "; - echo nl2br(htmlspecialchars(current($match[2]), ENT_QUOTES, 'UTF-8'))."
          "; - next($match[2]); - } - echo '
          - -EOB; - break; - -} - -echo <<< EOB - -EOB; - -?> - - - - diff --git a/application/scripts/configuration/modules/apache2/files/odbctest.php b/application/scripts/configuration/modules/apache2/files/odbctest.php deleted file mode 100644 index 2e4ce0df8..000000000 --- a/application/scripts/configuration/modules/apache2/files/odbctest.php +++ /dev/null @@ -1,11 +0,0 @@ - -
            - -
          • - -
          diff --git a/application/scripts/configuration/modules/apache2/files/phpinfo.php b/application/scripts/configuration/modules/apache2/files/phpinfo.php deleted file mode 100644 index 61ace196d..000000000 --- a/application/scripts/configuration/modules/apache2/files/phpinfo.php +++ /dev/null @@ -1,2 +0,0 @@ - installed - } - - file { '/etc/apache2/sites-available/001-ontowiki': - ensure => present, - content => template("apache2/001-ontowiki"), - replace => true, - require => Package["apache2"] - } - - # copy/remove files from default /var/www directory - file { "/var/www/phpinfo.php": - ensure => present, - replace => true, - owner => "root", - group => "root", - mode => "0755", - source => "puppet:///modules/apache2/phpinfo.php", - require => Package["apache2"] - } - file { "/var/www/odbctest.php": - ensure => present, - replace => true, - owner => "root", - group => "root", - mode => "0755", - source => "puppet:///modules/apache2/odbctest.php", - require => Package["apache2"] - } - file { "/var/www/apc.php": - ensure => present, - replace => true, - owner => "root", - group => "root", - mode => "0755", - source => "puppet:///modules/apache2/apc.php", - require => Package["apache2"] - } - - # enable modules and sites - exec { "enable-mod-rewrite": - command => "/usr/sbin/a2enmod rewrite", - creates => "/etc/apache2/mods-enabled/rewrite.load", - require => Package["apache2"], - } - #exec { "enable-mod-proxy": - # command => "/usr/sbin/a2enmod proxy", - # creates => "/etc/apache2/mods-enabled/proxy.load", - # require => Package["apache2"], - #} - #exec { "enable-mod-proxy_http": - # command => "/usr/sbin/a2enmod proxy_http", - # creates => "/etc/apache2/mods-enabled/proxy_http.load", - # require => Package["apache2"], - #} - exec { "enable-ontowiki": - path => ["/bin", "/usr/bin"], - command => "/usr/sbin/a2ensite 001-ontowiki ; /etc/init.d/apache2 restart", - creates => "/etc/apache2/sites-enabled/001-ontowiki", - require => [Exec["enable-mod-rewrite"], File["/etc/apache2/sites-available/001-ontowiki"]], - } - - # enable apache2 server - service { "apache2": - ensure => running, - enable => true, - hasrestart => true, - require => Package["apache2"], - } -} diff --git a/application/scripts/configuration/modules/apache2/templates/001-ontowiki b/application/scripts/configuration/modules/apache2/templates/001-ontowiki deleted file mode 100644 index 7528eba0d..000000000 --- a/application/scripts/configuration/modules/apache2/templates/001-ontowiki +++ /dev/null @@ -1,27 +0,0 @@ - - ServerName <%= ow_server_name %> - SetEnv APPLICATION_ENV "<%= ow_application_env %>" - SetEnv VAGRANT "yes" - - DocumentRoot "<%= ow_document_root %>" - - > - Options FollowSymLinks -ExecCGI -Indexes - AllowOverride all - Order allow,deny - Allow from all - - - php_value upload_max_filesize 20M - php_value post_max_size 20M - php_value error_reporting "E_ALL | E_STRICT" - - - - # %h (Remote host), %u (Remote user), %t (time), %r (first line of reqest), - # %>s (status last request), %b (bytes), %{Referer}i (Referer header), - # %{User-agent} (User-agent header), %T (time to serve request), %f (filename) - LogFormat "%h %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" %T \"%f\"" ow - ErrorLog <%= "#{ow_document_root}/logs/#{ow_server_name}_error.log" %> - CustomLog <%= "#{ow_document_root}/logs/#{ow_server_name}_access.log ow" %> - diff --git a/application/scripts/configuration/modules/bootstrap/files/aliases.zsh b/application/scripts/configuration/modules/bootstrap/files/aliases.zsh deleted file mode 100644 index a2b3de52a..000000000 --- a/application/scripts/configuration/modules/bootstrap/files/aliases.zsh +++ /dev/null @@ -1,144 +0,0 @@ -# @author Sebastian Tramp -# @license http://opensource.org/licenses/gpl-license.php -# -# alias definitions which can be edited/modified with 'aedit' -# - -export EDITOR="vim" -alias vi="vim" -alias aedit=" $EDITOR $ZSH_CONFG/aliases.zsh; source $ZSH_CONFIG/aliases.zsh" -alias fedit=" $EDITOR $ZSH_CONFG/functions.zsh; source $ZSH_CONFIG/functions.zsh" -alias pedit=" $EDITOR $ZSH_CONFIG/private.zsh; source $ZSH_CONFIG/private.zsh" - -#alias man="unset PAGER; man" -alias grep='grep --color=auto' - -alias sign='gpg --detach-sign --armor' -alias j=' j' - -##### standard aliases (start with a space to be ignored in history) -# default ls is untouched, except coloring -alias ls=' ls --color=auto' -alias myls=' ls -C -F -h --color=always' -alias l=" myls -l" -alias ll=' myls -l' -alias la=' myls -lA' -alias v=" clear; ll -gh" # standard directory view -alias vs=" v **/*(.)" # show all files in all subdirs plain in a list - -alias p=' ps aux | grep' -alias g='git' -alias d=' dirs -v' -alias ka="killall" - -alias cd=' cd' -alias ..=' cd ..; ls' -alias ...=' cd ..; cd ..; ls' -alias ....=' cd ..; cd ..; cd ..; ls' -alias cd..='..' -alias cd...='...' -alias cd....='....' - -# alias to create a next-link in your home to tag the current workingdir -alias linkthis='rm -f ~/next; ln -s $PWD ~/next' - -##### global aliases -# zsh buch s.82 (z.B. find / ... NE) -alias -g NE='2>|/dev/null' -alias -g NO='&>|/dev/null' - -# http://rayninfo.co.uk/tips/zshtips.html -alias -g G='| grep -' -alias -g P='2>&1 | $PAGER' -alias -g L='| less' -alias -g M='| most' -alias -g C='| wc -l' - -# http://www.commandlinefu.com/commands/view/7284/zsh-suffix-to-inform-you-about-long-command-ending -# zsh suffix to inform you about long command ending make, Just add "R" (without quotes) suffix to it and you can do other things: -# zsh will inform you when you can see the results. -#alias -g R=' &; jobs | tail -1 | read A0 A1 A2 cmd; echo "running $cmd"; fg "$cmd"; zenity --info --text "$cmd done"; unset A0 A1 A2 cmd' - -##### suffix aliases (mostly mapped to open which runs the gnome/kde default app) - -alias -s tex="rubber --inplace --maxerr -1 --short --force --warn all --pdf" - -alias -s 1="man -l" -alias -s 2="man -l" -alias -s 3="man -l" -alias -s 4="man -l" -alias -s 5="man -l" -alias -s 6="man -l" -alias -s 7="man -l" -alias -s pdf="open" -alias -s PDF="open" -alias -s xoj="xournal" - -alias -s htm="$BROWSER" -alias -s html="$BROWSER" -alias -s jar="java -jar" -alias -s deb="sudo dpkg -i" - -alias -s iso="vlc" -alias -s avi=" open" -alias -s AVI=" open" -alias -s mov=" open" -alias -s mpg=" open" -alias -s m4v=" open" -alias -s mp4=" open" -alias -s rmvb=" open" -alias -s MP4=" open" -alias -s ogg=" open" -alias -s ogv=" open" -alias -s flv=" open" -alias -s mkv=" open" -alias -s wav=" open" - -alias -s tif="open" -alias -s tiff="open" -alias -s png="open" -alias -s jpg="open" -alias -s jpeg="open" -alias -s JPG="open" -alias -s gif="open" -alias -s svg="open" -alias -s psd="open" - -alias -s com="open" -alias -s de="open" -alias -s org="open" - -alias -s rdf="rapper --count" -alias -s owl="rapper --count" -alias -s ttl="rapper -i turtle --count" -alias -s tt="rapper -i turtle --count" -alias -s n3="rapper -i turtle --count" -alias -s nt="rapper -i ntriples --count" -alias -s ntriples="rapper -i ntriples --count" -alias -s ntriple="rapper -i ntriples --count" - -alias -s ods="open" -alias -s xls="open" -alias -s xlsx="open" -alias -s csv="open" - -alias -s pot="open" -alias -s odt="open" -alias -s doc="open" -alias -s docx="open" -alias -s rtf="open" -alias -s dot="open" - -alias -s ppt="open" -alias -s pptx="open" -alias -s odp="open" - -alias -s plist="plutil" - -alias -s sla="open" - -alias -s exe="open" - -alias -s tjp="tj3" -alias -s asc="gpg" - diff --git a/application/scripts/configuration/modules/bootstrap/files/environment.zsh b/application/scripts/configuration/modules/bootstrap/files/environment.zsh deleted file mode 100644 index e9c1914b7..000000000 --- a/application/scripts/configuration/modules/bootstrap/files/environment.zsh +++ /dev/null @@ -1,20 +0,0 @@ -# @author Sebastian Tramp -# @license http://opensource.org/licenses/gpl-license.php -# -# Basic environment settings related to the zsh compiliation (not private) - -# XDG Base Directory Specification -# http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html -export XDG_CONFIG_HOME="$HOME/.config" -export XDG_CACHE_HOME="$HOME/.cache" -export ZSH_CONFIG="$XDG_CONFIG_HOME/zsh" -export ZSH_CACHE="$XDG_CACHE_HOME/zsh" -mkdir -p $ZSH_CACHE - -# executable search path -export PATH=/usr/local/sbin:$PATH -export PATH=$HOME/.local/bin:$PATH -export PATH=$HOME/.local/sbin:$PATH - -# https://github.com/mxcl/homebrew/issues/11182 -export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH diff --git a/application/scripts/configuration/modules/bootstrap/files/options.zsh b/application/scripts/configuration/modules/bootstrap/files/options.zsh deleted file mode 100644 index b7efa5ed8..000000000 --- a/application/scripts/configuration/modules/bootstrap/files/options.zsh +++ /dev/null @@ -1,68 +0,0 @@ -# @author Sebastian Tramp -# @license http://opensource.org/licenses/gpl-license.php -# -# shell options as history size, keyindings, etc -# - -export GREP_OPTIONS='--binary-files=without-match --ignore-case' - -# keybindings Strg+v is your friend :-) -bindkey "^[[1;5D" .backward-word -bindkey "^[[1;5C" .forward-word -bindkey "^[[1;6D" backward-delete-word -bindkey "^[[1;6C" delete-word -# alt+left (on mac) deletes word -bindkey "^[" backward-kill-word -# fn-left -bindkey "^[[H" .backward-word -# fn-right -bindkey "^[[F" .forward-word - -# arrow up/down searches in history if line is already started -bindkey '^[[A' up-line-or-search -bindkey '^[[B' down-line-or-search - -# History Settings (big history for use with many open shells and no dups) -# Different History files for root and standard user -if (( ! EUID )); then - HISTFILE=$ZSH_CACHE/history_root -else - HISTFILE=$ZSH_CACHE/history -fi -SAVEHIST=10000 -HISTSIZE=12000 -setopt share_history append_history extended_history hist_no_store hist_ignore_all_dups hist_ignore_space - -# 2x control is completion from history!!! -zle -C hist-complete complete-word _generic -zstyle ':completion:hist-complete:*' completer _history -bindkey '^X^X' hist-complete - -# If a command is issued that can’t be executed as a normal command, and the command is the name of a directory, perform the cd command to that directory. -setopt AUTO_CD - -# Treat the ‘#’, ‘~’ and ‘^’ characters as part of patterns for filename generation, etc. (An initial unquoted ‘~’ always produces named directory expansion.) -setopt EXTENDED_GLOB - -# If a pattern for filename generation has no matches, print an error, instead of leaving it unchanged in the argument list. This also applies to file expansion of an initial ‘~’ or ‘=’. -setopt NOMATCH - -# no Beep on error in ZLE. -setopt NO_BEEP - -# Remove any right prompt from display when accepting a command line. This may be useful with terminals with other cut/paste methods. -setopt TRANSIENT_RPROMPT - -# If unset, the cursor is set to the end of the word if completion is started. Otherwise it stays there and completion is done from both ends. -setopt COMPLETE_IN_WORD - -# Make cd push the old directory onto the directory stack. -setopt AUTO_PUSHD - -# Don’t push multiple copies of the same directory onto the directory stack. -setopt PUSHD_IGNORE_DUPS - -# DON NOT Allow ‘>’ redirection to truncate existing files, and ‘>>’ to create files. Otherwise ‘>!’ or ‘>|’ must be used to truncate a file, and ‘>>!’ or ‘>>|’ to create a file. -setopt no_clobber - - diff --git a/application/scripts/configuration/modules/bootstrap/files/prompt.zsh b/application/scripts/configuration/modules/bootstrap/files/prompt.zsh deleted file mode 100644 index b639686e8..000000000 --- a/application/scripts/configuration/modules/bootstrap/files/prompt.zsh +++ /dev/null @@ -1,142 +0,0 @@ -# enable hook method -autoload add-zsh-hook - -# enable and configure vcs_info -autoload -Uz vcs_info -add-zsh-hook precmd vcs_info -zstyle ':vcs_info:*' enable hg git cvs svn -zstyle ':vcs_info:*' formats '%s|%b|%a|%i|%R|%r|%S|%m' - -# my prompt theme -function promptSetup () { - setopt prompt_subst - local TERMWIDTH - (( TERMWIDTH = ${COLUMNS} - 1 )) - - NOCOLOR="%{$terminfo[sgr0]%}" - PS1=''; RPS1='' - PS2="↷ %_>"; RPS2='' - PS3="↷ ?#"; RPS3='' - PS4="↷ +i>"; RPS3='' - - # prepare vcs info - VCS_LINE='' - VCS=$vcs_info_msg_0_ - VCS_TYPE=$VCS[(ws:|:)1] - VCS_BRANCH=$VCS[(ws:|:)2] - VCS_CHANGES='' - - # setup the prompt sign - if [[ $VCS_TYPE != '' ]]; then - VCS_LINE+=$NOCOLOR - VCS_LINE+='➜ ' - case $VCS_TYPE in - 'hg') - VCS_LINE+='☿ ' - VCS_CHANGES=`hg st 2>/dev/null | wc -l` - ;; - 'git') - VCS_LINE+='± ' - ;; - *) - VCS_LINE+="$VCS_TYPE " - ;; - esac - fi - - VCS_LINE+=$VCS_BRANCH - - if [[ $VCS_CHANGES > 0 ]]; then - VCS_LINE+="%F{166}%B" - VCS_LINE+=' ★ ' - VCS_LINE+=$VCS_CHANGES - fi - - # rootshell gets another prompt sign - CURRENT_USER=`whoami` - PR_SIGN=$NOCOLOR - PR_SIGN+="%F{160}%B" - - # prepend the hostname if we are outside - if [[ "$MYHOSTEXPRESSION" == "" ]]; then - # if not set, home is nowhere - MYHOSTEXPRESSION="^$" - fi - if [[ "`hostname`" =~ "$MYHOSTEXPRESSION" ]]; then - # we are on our home desktop - else - # we are outside on a server - PR_SIGN+="`hostname` " - fi - - # setup the main sign - if [[ $CURRENT_USER == 'root' ]]; then - PR_SIGN+="☠" - elif [[ $CURRENT_USER == 'vagrant' ]]; then - PR_SIGN+="𝓥" - else - PR_SIGN+="∴" - fi - - PR_SIGN+="%F{white}%b" - - - - # http://unix.stackexchange.com/questions/1022/is-it-possible-to-display-stuff-below-the-prompt-at-a-prompt - terminfo_down_sc=$terminfo[cud1]$terminfo[cuu1]$terminfo[sc]$terminfo[cud1] - - # Finally, the prompt. - PS1=$'\n' # newline (specially quotet, see zsh FAQ 3.13) - PS1+="%{$terminfo_down_sc$VCS_LINE$terminfo[rc]%}" # the second line - PS1+=$PR_STITLE # tmux title if present - PS1+=$PR_VCSSIGN # version control part if present - PS1+=%(?..'%F{136}%B%'?) # output last error number if present - PS1+=$PR_SIGN # the user sign - PS1+=" " # an additional space - - # reset the tmux title - promptSetMultiplexerTabTitle "zsh" -} -add-zsh-hook precmd promptSetup - -# set a tmux / screen 'tabulator' title if needed -function promptSetMultiplexerTabTitle () { - if [[ "$TERM" == "screen" ]]; then - if [[ "$1" == "" ]]; then - local CMD=${1[(wr)^(*=*|sudo|-*)]} - echo -n "\ekttt$CMD\e\\" - else - local title="$1 ttt" # I dont know how to prevent errors on one word strings - title=$title[(w)1] - echo -n "\ek$title\e\\" - fi - fi -} -add-zsh-hook preexec promptSetMultiplexerTabTitle - -# setup tmux environment (context + status) -# TODO: shorten the path variable -# TODO: remove sudo if available... -function tmuxChangeDirectory () { - # set the tmux status line - if [[ "$TMUX" != "" ]]; then - newMailCountTool="/home/seebi/bin/scripts/newMailCount.py" - tmux set-option -g status-right "$PWD ✉ #($newMailCountTool $MAIL)" | tee >/dev/null - fi - - if [[ $VCS_TYPE == 'hg' ]]; then - #tmux kill-pane -t 1 - #tmux split-window -h -l 40 "while true; do clear; date; echo; hg xlog-small -l 5 || exit; sleep 600; done;" - #tmux select-pane -t 0 - fi -} -add-zsh-hook chpwd tmuxChangeDirectory - -# remove the line after the prompt on execution -# http://unix.stackexchange.com/questions/1022/is-it-possible-to-display-stuff-below-the-prompt-at-a-prompt -function eraseSecondLine () { - print -rn -- $terminfo[el]; - #echo; # this would keep the second line -} -add-zsh-hook preexec eraseSecondLine - diff --git a/application/scripts/configuration/modules/bootstrap/files/zshrc b/application/scripts/configuration/modules/bootstrap/files/zshrc deleted file mode 100644 index 1d223a718..000000000 --- a/application/scripts/configuration/modules/bootstrap/files/zshrc +++ /dev/null @@ -1,15 +0,0 @@ -# first include of the environment -source $HOME/.config/zsh/environment.zsh - -typeset -ga sources -sources+="$ZSH_CONFIG/options.zsh" -sources+="$ZSH_CONFIG/prompt.zsh" -sources+="$ZSH_CONFIG/aliases.zsh" - -# try to include all sources -foreach file (`echo $sources`) - if [[ -a $file ]]; then - source $file - fi -end - diff --git a/application/scripts/configuration/modules/bootstrap/manifests/init.pp b/application/scripts/configuration/modules/bootstrap/manifests/init.pp deleted file mode 100644 index bf5fbe04b..000000000 --- a/application/scripts/configuration/modules/bootstrap/manifests/init.pp +++ /dev/null @@ -1,53 +0,0 @@ -class bootstrap -{ - # install some useful tools - # git - package { ["htop", "vim", "unzip", "curl", "zsh", "raptor2-utils", "make"]: - ensure => latest - } - - exec { "chsh-to-zsh": - command => "/usr/bin/chsh -s /usr/bin/zsh vagrant", - require => Package["zsh"] - } - - file { "/home/vagrant/.config/": - ensure => directory, - require => Package["zsh"] - } - - file { "/home/vagrant/.config/zsh/": - ensure => directory, - require => Package["zsh"] - } - - file { "/home/vagrant/.config/zsh/environment.zsh": - ensure => present, - source => "puppet:///modules/bootstrap/environment.zsh", - require => Package["zsh"] - } - - file { "/home/vagrant/.config/zsh/options.zsh": - ensure => present, - source => "puppet:///modules/bootstrap/options.zsh", - require => Package["zsh"] - } - - file { "/home/vagrant/.config/zsh/prompt.zsh": - ensure => present, - source => "puppet:///modules/bootstrap/prompt.zsh", - require => Package["zsh"] - } - - file { "/home/vagrant/.config/zsh/aliases.zsh": - ensure => present, - source => "puppet:///modules/bootstrap/aliases.zsh", - require => Package["zsh"] - } - - file { "/home/vagrant/.zshrc": - ensure => present, - source => "puppet:///modules/bootstrap/zshrc", - require => Package["zsh"] - } -} \ No newline at end of file diff --git a/application/scripts/configuration/modules/mysql/manifests/init.pp b/application/scripts/configuration/modules/mysql/manifests/init.pp deleted file mode 100644 index f8e064707..000000000 --- a/application/scripts/configuration/modules/mysql/manifests/init.pp +++ /dev/null @@ -1,23 +0,0 @@ -class mysql { - - $mysql_root_pw = $ubuntu::mysql_root_pw - - # mysql - package { "mysql-server": ensure => installed } - package { "mysql-client": ensure => installed } - - # mysql service - service { "mysql": - enable => true, - ensure => running, - require => Package["mysql-server"], - } - - # set root password - exec { "set-mysql-password": - unless => "mysqladmin -uroot -p${mysql_root_pw} status", - path => ["/bin", "/usr/bin"], - command => "mysqladmin -uroot password ${mysql_root_pw}", - require => Service["mysql"], - } -} \ No newline at end of file diff --git a/application/scripts/configuration/modules/ontowiki/manifests/init.pp b/application/scripts/configuration/modules/ontowiki/manifests/init.pp deleted file mode 100644 index b179333d5..000000000 --- a/application/scripts/configuration/modules/ontowiki/manifests/init.pp +++ /dev/null @@ -1,42 +0,0 @@ -class ontowiki { - - $mysql_root_pw = $ubuntu::mysql_root_pw - $mysql_user = $ubuntu::mysql_user - $mysql_pw = $ubuntu::mysql_pw - - exec { "create-mysql-ontowiki-db": - unless => "/usr/bin/mysql -uroot -p${mysql_root_pw} ontowiki", - command => "/usr/bin/mysql -uroot -p${mysql_root_pw} -e \"create database ontowiki;\"", - require => [Service["mysql"], Exec["set-mysql-password"]] - } - - exec { "create-mysql-ow-test-db": - unless => "/usr/bin/mysql -uroot -p${mysql_root_pw} ow_TEST", - command => "/usr/bin/mysql -uroot -p${mysql_root_pw} -e \"create database ow_TEST;\"", - require => [Service["mysql"], Exec["set-mysql-password"]] - } - - exec { "create-mysql-erfurt-test-db": - unless => "/usr/bin/mysql -uroot -p${mysql_root_pw} erfurt_TEST", - command => "/usr/bin/mysql -uroot -p${mysql_root_pw} -e \"create database erfurt_TEST;\"", - require => [Service["mysql"], Exec["set-mysql-password"]] - } - - exec { "grant-mysql-ontowiki-db-to-php-user": - unless => "/usr/bin/mysql -u${$mysql_user} -p${mysql_pw} ontowiki", - command => "/usr/bin/mysql -uroot -p${mysql_root_pw} -e \"grant all on ontowiki.* to ${mysql_user}@'localhost' identified by '${mysql_pw}';\"", - require => [Service["mysql"], Exec["create-mysql-ontowiki-db"]] - } - - exec { "grant-mysql-ow-test-db-to-php-user": - unless => "/usr/bin/mysql -u${$mysql_user} -p${mysql_pw} ow_TEST", - command => "/usr/bin/mysql -uroot -p${mysql_root_pw} -e \"grant all on ow_TEST.* to ${mysql_user}@'localhost' identified by '${mysql_pw}';\"", - require => [Service["mysql"], Exec["create-mysql-ow-test-db"]] - } - - exec { "grant-mysql-erfurt-test-db-to-php-user": - unless => "/usr/bin/mysql -u${$mysql_user} -p${mysql_pw} erfurt_TEST", - command => "/usr/bin/mysql -uroot -p${mysql_root_pw} -e \"grant all on erfurt_TEST.* to ${mysql_user}@'localhost' identified by '${mysql_pw}';\"", - require => [Service["mysql"], Exec["create-mysql-erfurt-test-db"]] - } -} diff --git a/application/scripts/configuration/modules/php5/files/apc.ini b/application/scripts/configuration/modules/php5/files/apc.ini deleted file mode 100644 index 8515e6f09..000000000 --- a/application/scripts/configuration/modules/php5/files/apc.ini +++ /dev/null @@ -1,19 +0,0 @@ -extension = apc.so - -apc.enabled = 1 -apc.shm_size = 128M -apc.shm_segments=1 -apc.write_lock = 1 -apc.optimization=0 -apc.rfc1867 = On -apc.ttl=7200 -apc.user_ttl=7200 -apc.num_files_hint=1024 -;apc.mmap_file_mask=/tmp/apc.XXXXXX -apc.enable_cli=1 -; Optional, for "[apc-warning] Potential cache slam averted for key... errors" -; apc.slam_defense = Off - -; for production -; apc.stat = 0 -; diff --git a/application/scripts/configuration/modules/php5/files/custom_settings.ini b/application/scripts/configuration/modules/php5/files/custom_settings.ini deleted file mode 100644 index b884a98b8..000000000 --- a/application/scripts/configuration/modules/php5/files/custom_settings.ini +++ /dev/null @@ -1,9 +0,0 @@ -; adapt include_path for Zend and PEAR -include_path = ".:/usr/local/zend/share/ZendFramework/current/library:/usr/share/php" - -short_open_tag = Off - -memory_limit = 512M - -display_errors = On -html_errors = On \ No newline at end of file diff --git a/application/scripts/configuration/modules/php5/files/xdebug.ini b/application/scripts/configuration/modules/php5/files/xdebug.ini deleted file mode 100644 index 30ed032d7..000000000 --- a/application/scripts/configuration/modules/php5/files/xdebug.ini +++ /dev/null @@ -1,9 +0,0 @@ -;zend_extension=xdebug.so -;zend_extension=/usr/lib/php5/20090626/xdebug.so -zend_extension=/usr/lib/php5/20090626/xdebug.so -;xdebug.remote_enable=1 -;xdebug.remote_handler=dbgp -;xdebug.remote_mode=req -;xdebug.remote_port=9000 -;xdebug.remote_host=localhost -;xdebug.idekey=default \ No newline at end of file diff --git a/application/scripts/configuration/modules/php5/manifests/init.pp b/application/scripts/configuration/modules/php5/manifests/init.pp deleted file mode 100644 index 7cd5b7d48..000000000 --- a/application/scripts/configuration/modules/php5/manifests/init.pp +++ /dev/null @@ -1,46 +0,0 @@ -class php5 { - - # php related packages - package { ["php5", "libapache2-mod-php5", "php5-mysql", "php5-cli", "php5-common", "php5-tidy", "php5-xdebug", "php5-xsl", "php5-xmlrpc", "php5-odbc", "php5-gd", "php-apc", "php5-memcache", "php5-memcached", "php5-suhosin"]: - ensure => installed - } - - # xdebug - file { "/etc/php5/conf.d/xdebug.ini": - ensure => present, - replace => true, - owner => "root", - group => "root", - mode => "0644", - source => "puppet:///modules/php5/xdebug.ini", - require => Package["php5-xdebug"] - } - - file { "/etc/php5/conf.d/custom_settings.ini": - ensure => present, - replace => true, - owner => "root", - group => "root", - mode => "0644", - source => "puppet:///modules/php5/custom_settings.ini", - require => Package["php5"] - } - - # apc - file { "/etc/php5/conf.d/apc.ini": - ensure => present, - replace => true, - owner => "root", - group => "root", - mode => "0644", - source => "puppet:///modules/php5/apc.ini", - require => Package["php5"] - } - - # disable php-fpm since not used yet - #service { "php5-fpm": - # ensure => stopped, - # enable => false, - # require => Package["php5"], - #} -} diff --git a/application/scripts/configuration/modules/phpqatools/manifests/init.pp b/application/scripts/configuration/modules/phpqatools/manifests/init.pp deleted file mode 100644 index 52a4a4131..000000000 --- a/application/scripts/configuration/modules/phpqatools/manifests/init.pp +++ /dev/null @@ -1,8 +0,0 @@ -class phpqatools { - - exec { "pear-install-phpqatools": - command => "/usr/bin/pear install pear.phpqatools.org/phpqatools", - creates => "/usr/bin/phpcb", - require => Exec["pear-install-phpunit"] - } -} \ No newline at end of file diff --git a/application/scripts/configuration/modules/phpunit/manifests/init.pp b/application/scripts/configuration/modules/phpunit/manifests/init.pp deleted file mode 100644 index 1ce8d933b..000000000 --- a/application/scripts/configuration/modules/phpunit/manifests/init.pp +++ /dev/null @@ -1,25 +0,0 @@ -class phpunit { - - # package - package { "php-pear": - ensure => installed, - } - - exec { "upgrade-pear": - command => "/usr/bin/pear upgrade PEAR", - creates => "/usr/bin/phpunit", - require => Package["php-pear"], - } - - exec { "pear-config-set-auto-discover": - command => "/usr/bin/pear config-set auto_discover 1", - creates => "/usr/bin/phpunit", - require => [Package["php-pear"], Exec["upgrade-pear"]] - } - - exec { "pear-install-phpunit": - command => "/usr/bin/pear install pear.phpunit.de/PHPUnit", - creates => "/usr/bin/phpunit", - require => [Exec["upgrade-pear"], Exec["pear-config-set-auto-discover"]] - } -} \ No newline at end of file diff --git a/application/scripts/configuration/modules/virtuoso/files/odbc.ini b/application/scripts/configuration/modules/virtuoso/files/odbc.ini deleted file mode 100644 index 05376d349..000000000 --- a/application/scripts/configuration/modules/virtuoso/files/odbc.ini +++ /dev/null @@ -1,11 +0,0 @@ -[ODBC Data Sources] -VOS = Virtuoso -VOS_TEST = Virtuoso Test - -[VOS] -Driver = /usr/lib/odbc/virtodbc.so -Address = localhost:1111 - -[VOS_TEST] -Driver = /usr/lib/odbc/virtodbc.so -Address = localhost:1112 \ No newline at end of file diff --git a/application/scripts/configuration/modules/virtuoso/files/ontowiki-dev b/application/scripts/configuration/modules/virtuoso/files/ontowiki-dev deleted file mode 100755 index c4630fc4f..000000000 --- a/application/scripts/configuration/modules/virtuoso/files/ontowiki-dev +++ /dev/null @@ -1,163 +0,0 @@ -#! /bin/sh -# -# virtuoso OpenLink Virtuoso Open-Source Edition -# -# Written by OpenLink Virtuoso Maintainer -# -# -# Version: @(#)virtuoso 6.1.4 25-Mar-2011 vos.admin@openlinksw.com -# - -### BEGIN INIT INFO -# Provides: virtuoso -# Required-Start: $syslog -# Required-Stop: $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Start Virtuoso database server on startup -# Description: Start and stop the primary instance of Virtuoso running -# in /var/lib/virtuoso/db/. The first time this runs, it loads the -# Conductor administrative package. -### END INIT INFO - - -PATH=/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/bin/virtuoso-t -NAME=virtuoso -CONFIG=ontowiki-dev -DESC="OpenLink Virtuoso OntoWiki Development Database" -DBBASE=/var/lib/virtuoso/ontowiki-dev - -test -x $DAEMON || exit 0 - -PIDFILE=$DBBASE/$NAME.lck -DODTIME=1 # Time to wait for the server to die, in seconds - # If this value is set too low you might not - # let some servers to die gracefully and - # 'restart' will not work - -# Include virtuoso-opensource defaults if available -#if [ -f /etc/default/virtuoso-opensource ] ; then -# . /etc/default/virtuoso-opensource -#fi - -set -e - -running_pid() -{ - # Check if a given process pid's cmdline matches a given name - pid=$1 - name=$2 - [ -z "$pid" ] && return 1 - [ ! -d /proc/$pid ] && return 1 - cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1` - # Is this the expected child? - [ "$cmd" != "$name" ] && return 1 - return 0 -} - -running() -{ -# Check if the process is running looking at /proc -# (works for all users) - - # No pidfile, probably no daemon present - [ ! -f "$PIDFILE" ] && return 1 - # Obtain the pid and check it against the binary name - . $PIDFILE - pid="$VIRT_PID" - running_pid $pid $DAEMON || return 1 - return 0 -} - -force_stop() { -# Forcefully kill the process - [ ! -f "$PIDFILE" ] && return - if running ; then - kill -15 $pid - # Is it really dead? - [ -n "$DODTIME" ] && sleep "$DODTIME"s - if running ; then - kill -9 $pid - [ -n "$DODTIME" ] && sleep "$DODTIME"s - if running ; then - echo "Cannot kill $LABEL (pid=$pid)!" - exit 1 - fi - fi - fi - rm -f $PIDFILE - return 0 -} - -case "$1" in - start) - echo -n "Starting $DESC: " - cd "$DBBASE" || exit -1 - $DAEMON -c $CONFIG +wait - if running ; then - echo "$NAME." - else - echo " ERROR." - fi - ;; - stop) - echo -n "Stopping $DESC: " - cd "$DBBASE" || exit -1 - . ./virtuoso.lck - if running ; then - kill $VIRT_PID - fi - echo "$NAME." - ;; - force-stop) - echo -n "Forcefully stopping $DESC: " - force_stop - if ! running ; then - echo "$NAME." - else - echo " ERROR." - fi - ;; - #reload) - # - # If the daemon can reload its config files on the fly - # for example by sending it SIGHUP, do it here. - # - # If the daemon responds to changes in its config file - # directly anyway, make this a do-nothing entry. - # - # echo "Reloading $DESC configuration files." - # start-stop-daemon --stop --signal 1 --quiet --pidfile \ - # /var/run/$NAME.pid --exec $DAEMON - #;; - force-reload) - # - # If the "reload" option is implemented, move the "force-reload" - # option to the "reload" entry above. If not, "force-reload" is - # just the same as "restart" except that it does nothing if the - # daemon isn't already running. - # check wether $DAEMON is running. If so, restart - start-stop-daemon --stop --test --quiet --pidfile \ - /var/run/$NAME.pid --exec $DAEMON \ - && $0 restart \ - || exit 0 - ;; - status) - echo -n "$LABEL is " - if running ; then - echo "running" - else - echo " not running." - exit 1 - fi - ;; - *) - N=/etc/init.d/$NAME - # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 - echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2 - exit 1 - ;; -esac - -exit 0 \ No newline at end of file diff --git a/application/scripts/configuration/modules/virtuoso/files/ontowiki-dev.ini b/application/scripts/configuration/modules/virtuoso/files/ontowiki-dev.ini deleted file mode 100644 index dbbbb9306..000000000 --- a/application/scripts/configuration/modules/virtuoso/files/ontowiki-dev.ini +++ /dev/null @@ -1,239 +0,0 @@ -; -; virtuoso.ini -; -; Configuration file for the OpenLink Virtuoso VDBMS Server -; -; To learn more about this product, or any other product in our -; portfolio, please check out our web site at: -; -; http://virtuoso.openlinksw.com/ -; -; or contact us at: -; -; general.information@openlinksw.com -; -; If you have any technical questions, please contact our support -; staff at: -; -; technical.support@openlinksw.com -; -; -; Database setup -; -[Database] -DatabaseFile = /var/lib/virtuoso/ontowiki-dev/virtuoso.db -ErrorLogFile = /vagrant/logs/virtuoso-ontowiki-dev.log -LockFile = /var/lib/virtuoso/ontowiki-dev/virtuoso.lck -TransactionFile = /var/lib/virtuoso/ontowiki-dev/virtuoso.trx -xa_persistent_file = /var/lib/virtuoso/ontowiki-dev/virtuoso.pxa -ErrorLogLevel = 7 -FileExtend = 200 -MaxCheckpointRemap = 2000 -Striping = 0 -TempStorage = TempDatabase - -[TempDatabase] -DatabaseFile = /var/lib/virtuoso/ontowiki-dev/virtuoso-temp.db -TransactionFile = /var/lib/virtuoso/ontowiki-dev/virtuoso-temp.trx -MaxCheckpointRemap = 2000 -Striping = 0 - -; -; Server parameters -; -[Parameters] -ServerPort = 1111 -LiteMode = 0 -DisableUnixSocket = 1 -DisableTcpSocket = 0 -;SSLServerPort = 2111 -;SSLCertificate = cert.pem -;SSLPrivateKey = pk.pem -;X509ClientVerify = 0 -;X509ClientVerifyDepth = 0 -;X509ClientVerifyCAFile = ca.pem -ServerThreads = 5 -CheckpointInterval = 60 -O_DIRECT = 0 -CaseMode = 2 -MaxStaticCursorRows = 5000 -CheckpointAuditTrail = 0 -AllowOSCalls = 0 -SchedulerInterval = 10 -DirsAllowed = ., /usr/share/virtuoso-opensource-6.1/vad, /vagrant -ThreadCleanupInterval = 0 -ThreadThreshold = 10 -ResourcesCleanupInterval = 0 -FreeTextBatchSize = 100000 -SingleCPU = 0 -VADInstallDir = /usr/share/virtuoso-opensource-6.1/vad/ -PrefixResultNames = 0 -RdfFreeTextRulesSize = 100 -IndexTreeMaps = 256 -MaxMemPoolSize = 200000000 -PrefixResultNames = 0 -MacSpotlight = 0 -IndexTreeMaps = 64 -;; -;; When running with large data sets, one should configure the Virtuoso -;; process to use between 2/3 to 3/5 of free system memory and to stripe -;; storage on all available disks. -;; -;; Uncomment next two lines if there is 2 GB system memory free -; NumberOfBuffers = 170000 -; MaxDirtyBuffers = 130000 -;; Uncomment next two lines if there is 4 GB system memory free -; NumberOfBuffers = 340000 -; MaxDirtyBuffers = 250000 -;; Uncomment next two lines if there is 8 GB system memory free -; NumberOfBuffers = 680000 -; MaxDirtyBuffers = 500000 -;; Uncomment next two lines if there is 16 GB system memory free -; NumberOfBuffers = 1360000 -; MaxDirtyBuffers = 1000000 -;; Uncomment next two lines if there is 32 GB system memory free -; NumberOfBuffers = 2720000 -; MaxDirtyBuffers = 2000000 -;; Uncomment next two lines if there is 48 GB system memory free -; NumberOfBuffers = 4000000 -; MaxDirtyBuffers = 3000000 -;; Uncomment next two lines if there is 64 GB system memory free -; NumberOfBuffers = 5450000 -; MaxDirtyBuffers = 4000000 -;; -;; Note the default settings will take very little memory -;; but will not result in very good performance -;; -NumberOfBuffers = 10000 -MaxDirtyBuffers = 6000 - -[HTTPServer] -ServerPort = 8890 -ServerRoot = /var/lib/virtuoso-opensource-6.1/vsp -ServerThreads = 2 -DavRoot = DAV -EnabledDavVSP = 0 -HTTPProxyEnabled = 0 -TempASPXDir = 0 -DefaultMailServer = localhost:25 -ServerThreads = 10 -MaxKeepAlives = 10 -KeepAliveTimeout = 10 -MaxCachedProxyConnections = 10 -ProxyConnectionCacheTimeout = 15 -HTTPThreadSize = 280000 -HttpPrintWarningsInOutput = 0 -Charset = UTF-8 -;HTTPLogFile = logs/http.log - -[AutoRepair] -BadParentLinks = 0 - -[Client] -SQL_PREFETCH_ROWS = 100 -SQL_PREFETCH_BYTES = 16000 -SQL_QUERY_TIMEOUT = 0 -SQL_TXN_TIMEOUT = 0 -;SQL_NO_CHAR_C_ESCAPE = 1 -;SQL_UTF8_EXECS = 0 -;SQL_NO_SYSTEM_TABLES = 0 -;SQL_BINARY_TIMESTAMP = 1 -;SQL_ENCRYPTION_ON_PASSWORD = -1 - -[VDB] -ArrayOptimization = 0 -NumArrayParameters = 10 -VDBDisconnectTimeout = 1000 -KeepConnectionOnFixedThread = 0 - -[Replication] -ServerName = db -ServerEnable = 1 -QueueMax = 50000 - -; -; Striping setup -; -; These parameters have only effect when Striping is set to 1 in the -; [Database] section, in which case the DatabaseFile parameter is ignored. -; -; With striping, the database is spawned across multiple segments -; where each segment can have multiple stripes. -; -; Format of the lines below: -; Segment = , [, .. ] -; -; must be ordered from 1 up. -; -; The is the total size of the segment which is equally divided -; across all stripes forming the segment. Its specification can be in -; gigabytes (g), megabytes (m), kilobytes (k) or in database blocks -; (b, the default) -; -; Note that the segment size must be a multiple of the database page size -; which is currently 8k. Also, the segment size must be divisible by the -; number of stripe files forming the segment. -; -; The example below creates a 200 meg database striped on two segments -; with two stripes of 50 meg and one of 100 meg. -; -; You can always add more segments to the configuration, but once -; added, do not change the setup. -; -[Striping] -Segment1 = 100M, db-seg1-1.db, db-seg1-2.db -Segment2 = 100M, db-seg2-1.db -;... -;[TempStriping] -;Segment1 = 100M, db-seg1-1.db, db-seg1-2.db -;Segment2 = 100M, db-seg2-1.db -;... -;[Ucms] -;UcmPath = -;Ucm1 = -;Ucm2 = -;... - -[Zero Config] -ServerName = virtuoso -;ServerDSN = ZDSN -;SSLServerName = -;SSLServerDSN = - -[Mono] -;MONO_TRACE = Off -;MONO_PATH = -;MONO_ROOT = -;MONO_CFG_DIR = -;virtclr.dll = - -[URIQA] -DynamicLocal = 0 -DefaultHost = localhost:8890 - -[SPARQL] -;ExternalQuerySource = 1 -;ExternalXsltSource = 1 -;DefaultGraph = http://localhost:8890/dataspace -;ImmutableGraphs = http://localhost:8890/dataspace -ResultSetMaxRows = 10000 -MaxQueryCostEstimationTime = 400 ; in seconds -MaxQueryExecutionTime = 60 ; in seconds -DefaultQuery = select distinct ?Concept where {[] a ?Concept} LIMIT 100 -DeferInferenceRulesInit = 0 ; controls inference rules loading -;PingService = http://rpc.pingthesemanticweb.com/ - -[Plugins] -LoadPath = /usr/lib/virtuoso-opensource-6.1/hosting -;Load1 = plain, wikiv -;Load2 = plain, mediawiki -;Load3 = plain, creolewiki -;Load4 = plain, im -;Load5 = plain, wbxml2 -;Load6 = plain, hslookup -;Load7 = attach, libphp5.so -;Load8 = Hosting, hosting_php.so -;Load9 = Hosting,hosting_perl.so -;Load10 = Hosting,hosting_python.so -;Load11 = Hosting,hosting_ruby.so -;Load12 = msdtc,msdtc_sample diff --git a/application/scripts/configuration/modules/virtuoso/files/ontowiki-test b/application/scripts/configuration/modules/virtuoso/files/ontowiki-test deleted file mode 100755 index 241f7327c..000000000 --- a/application/scripts/configuration/modules/virtuoso/files/ontowiki-test +++ /dev/null @@ -1,163 +0,0 @@ -#! /bin/sh -# -# virtuoso OpenLink Virtuoso Open-Source Edition -# -# Written by OpenLink Virtuoso Maintainer -# -# -# Version: @(#)virtuoso 6.1.4 25-Mar-2011 vos.admin@openlinksw.com -# - -### BEGIN INIT INFO -# Provides: virtuoso -# Required-Start: $syslog -# Required-Stop: $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Start Virtuoso database server on startup -# Description: Start and stop the primary instance of Virtuoso running -# in /var/lib/virtuoso/db/. The first time this runs, it loads the -# Conductor administrative package. -### END INIT INFO - - -PATH=/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/bin/virtuoso-t -NAME=virtuoso -CONFIG=ontowiki-test -DESC="OpenLink Virtuoso OntoWiki Test Database" -DBBASE=/var/lib/virtuoso/ontowiki-test - -test -x $DAEMON || exit 0 - -PIDFILE=$DBBASE/$NAME.lck -DODTIME=1 # Time to wait for the server to die, in seconds - # If this value is set too low you might not - # let some servers to die gracefully and - # 'restart' will not work - -# Include virtuoso-opensource defaults if available -#if [ -f /etc/default/virtuoso-opensource ] ; then -# . /etc/default/virtuoso-opensource -#fi - -set -e - -running_pid() -{ - # Check if a given process pid's cmdline matches a given name - pid=$1 - name=$2 - [ -z "$pid" ] && return 1 - [ ! -d /proc/$pid ] && return 1 - cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1` - # Is this the expected child? - [ "$cmd" != "$name" ] && return 1 - return 0 -} - -running() -{ -# Check if the process is running looking at /proc -# (works for all users) - - # No pidfile, probably no daemon present - [ ! -f "$PIDFILE" ] && return 1 - # Obtain the pid and check it against the binary name - . $PIDFILE - pid="$VIRT_PID" - running_pid $pid $DAEMON || return 1 - return 0 -} - -force_stop() { -# Forcefully kill the process - [ ! -f "$PIDFILE" ] && return - if running ; then - kill -15 $pid - # Is it really dead? - [ -n "$DODTIME" ] && sleep "$DODTIME"s - if running ; then - kill -9 $pid - [ -n "$DODTIME" ] && sleep "$DODTIME"s - if running ; then - echo "Cannot kill $LABEL (pid=$pid)!" - exit 1 - fi - fi - fi - rm -f $PIDFILE - return 0 -} - -case "$1" in - start) - echo -n "Starting $DESC: " - cd "$DBBASE" || exit -1 - $DAEMON -c $CONFIG +wait - if running ; then - echo "$NAME." - else - echo " ERROR." - fi - ;; - stop) - echo -n "Stopping $DESC: " - cd "$DBBASE" || exit -1 - . ./virtuoso.lck - if running ; then - kill $VIRT_PID - fi - echo "$NAME." - ;; - force-stop) - echo -n "Forcefully stopping $DESC: " - force_stop - if ! running ; then - echo "$NAME." - else - echo " ERROR." - fi - ;; - #reload) - # - # If the daemon can reload its config files on the fly - # for example by sending it SIGHUP, do it here. - # - # If the daemon responds to changes in its config file - # directly anyway, make this a do-nothing entry. - # - # echo "Reloading $DESC configuration files." - # start-stop-daemon --stop --signal 1 --quiet --pidfile \ - # /var/run/$NAME.pid --exec $DAEMON - #;; - force-reload) - # - # If the "reload" option is implemented, move the "force-reload" - # option to the "reload" entry above. If not, "force-reload" is - # just the same as "restart" except that it does nothing if the - # daemon isn't already running. - # check wether $DAEMON is running. If so, restart - start-stop-daemon --stop --test --quiet --pidfile \ - /var/run/$NAME.pid --exec $DAEMON \ - && $0 restart \ - || exit 0 - ;; - status) - echo -n "$LABEL is " - if running ; then - echo "running" - else - echo " not running." - exit 1 - fi - ;; - *) - N=/etc/init.d/$NAME - # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 - echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2 - exit 1 - ;; -esac - -exit 0 \ No newline at end of file diff --git a/application/scripts/configuration/modules/virtuoso/files/ontowiki-test.ini b/application/scripts/configuration/modules/virtuoso/files/ontowiki-test.ini deleted file mode 100644 index 1fe708c20..000000000 --- a/application/scripts/configuration/modules/virtuoso/files/ontowiki-test.ini +++ /dev/null @@ -1,239 +0,0 @@ -; -; virtuoso.ini -; -; Configuration file for the OpenLink Virtuoso VDBMS Server -; -; To learn more about this product, or any other product in our -; portfolio, please check out our web site at: -; -; http://virtuoso.openlinksw.com/ -; -; or contact us at: -; -; general.information@openlinksw.com -; -; If you have any technical questions, please contact our support -; staff at: -; -; technical.support@openlinksw.com -; -; -; Database setup -; -[Database] -DatabaseFile = /var/lib/virtuoso/ontowiki-test/virtuoso.db -ErrorLogFile = /vagrant/logs/virtuoso-ontowiki-test.log -LockFile = /var/lib/virtuoso/ontowiki-test/virtuoso.lck -TransactionFile = /var/lib/virtuoso/ontowiki-test/virtuoso.trx -xa_persistent_file = /var/lib/virtuoso/ontowiki-test/virtuoso.pxa -ErrorLogLevel = 7 -FileExtend = 200 -MaxCheckpointRemap = 2000 -Striping = 0 -TempStorage = TempDatabase - -[TempDatabase] -DatabaseFile = /var/lib/virtuoso/ontowiki-test/virtuoso-temp.db -TransactionFile = /var/lib/virtuoso/ontowiki-test/virtuoso-temp.trx -MaxCheckpointRemap = 2000 -Striping = 0 - -; -; Server parameters -; -[Parameters] -ServerPort = 1112 -LiteMode = 0 -DisableUnixSocket = 1 -DisableTcpSocket = 0 -;SSLServerPort = 2111 -;SSLCertificate = cert.pem -;SSLPrivateKey = pk.pem -;X509ClientVerify = 0 -;X509ClientVerifyDepth = 0 -;X509ClientVerifyCAFile = ca.pem -ServerThreads = 5 -CheckpointInterval = 60 -O_DIRECT = 0 -CaseMode = 2 -MaxStaticCursorRows = 5000 -CheckpointAuditTrail = 0 -AllowOSCalls = 0 -SchedulerInterval = 10 -DirsAllowed = ., /usr/share/virtuoso-opensource-6.1/vad, /vagrant -ThreadCleanupInterval = 0 -ThreadThreshold = 10 -ResourcesCleanupInterval = 0 -FreeTextBatchSize = 100000 -SingleCPU = 0 -VADInstallDir = /usr/share/virtuoso-opensource-6.1/vad/ -PrefixResultNames = 0 -RdfFreeTextRulesSize = 100 -IndexTreeMaps = 256 -MaxMemPoolSize = 200000000 -PrefixResultNames = 0 -MacSpotlight = 0 -IndexTreeMaps = 64 -;; -;; When running with large data sets, one should configure the Virtuoso -;; process to use between 2/3 to 3/5 of free system memory and to stripe -;; storage on all available disks. -;; -;; Uncomment next two lines if there is 2 GB system memory free -; NumberOfBuffers = 170000 -; MaxDirtyBuffers = 130000 -;; Uncomment next two lines if there is 4 GB system memory free -; NumberOfBuffers = 340000 -; MaxDirtyBuffers = 250000 -;; Uncomment next two lines if there is 8 GB system memory free -; NumberOfBuffers = 680000 -; MaxDirtyBuffers = 500000 -;; Uncomment next two lines if there is 16 GB system memory free -; NumberOfBuffers = 1360000 -; MaxDirtyBuffers = 1000000 -;; Uncomment next two lines if there is 32 GB system memory free -; NumberOfBuffers = 2720000 -; MaxDirtyBuffers = 2000000 -;; Uncomment next two lines if there is 48 GB system memory free -; NumberOfBuffers = 4000000 -; MaxDirtyBuffers = 3000000 -;; Uncomment next two lines if there is 64 GB system memory free -; NumberOfBuffers = 5450000 -; MaxDirtyBuffers = 4000000 -;; -;; Note the default settings will take very little memory -;; but will not result in very good performance -;; -NumberOfBuffers = 10000 -MaxDirtyBuffers = 6000 - -[HTTPServer] -ServerPort = 8891 -ServerRoot = /var/lib/virtuoso-opensource-6.1/vsp -ServerThreads = 2 -DavRoot = DAV -EnabledDavVSP = 0 -HTTPProxyEnabled = 0 -TempASPXDir = 0 -DefaultMailServer = localhost:25 -ServerThreads = 10 -MaxKeepAlives = 10 -KeepAliveTimeout = 10 -MaxCachedProxyConnections = 10 -ProxyConnectionCacheTimeout = 15 -HTTPThreadSize = 280000 -HttpPrintWarningsInOutput = 0 -Charset = UTF-8 -;HTTPLogFile = logs/http.log - -[AutoRepair] -BadParentLinks = 0 - -[Client] -SQL_PREFETCH_ROWS = 100 -SQL_PREFETCH_BYTES = 16000 -SQL_QUERY_TIMEOUT = 0 -SQL_TXN_TIMEOUT = 0 -;SQL_NO_CHAR_C_ESCAPE = 1 -;SQL_UTF8_EXECS = 0 -;SQL_NO_SYSTEM_TABLES = 0 -;SQL_BINARY_TIMESTAMP = 1 -;SQL_ENCRYPTION_ON_PASSWORD = -1 - -[VDB] -ArrayOptimization = 0 -NumArrayParameters = 10 -VDBDisconnectTimeout = 1000 -KeepConnectionOnFixedThread = 0 - -[Replication] -ServerName = db -ServerEnable = 1 -QueueMax = 50000 - -; -; Striping setup -; -; These parameters have only effect when Striping is set to 1 in the -; [Database] section, in which case the DatabaseFile parameter is ignored. -; -; With striping, the database is spawned across multiple segments -; where each segment can have multiple stripes. -; -; Format of the lines below: -; Segment = , [, .. ] -; -; must be ordered from 1 up. -; -; The is the total size of the segment which is equally divided -; across all stripes forming the segment. Its specification can be in -; gigabytes (g), megabytes (m), kilobytes (k) or in database blocks -; (b, the default) -; -; Note that the segment size must be a multiple of the database page size -; which is currently 8k. Also, the segment size must be divisible by the -; number of stripe files forming the segment. -; -; The example below creates a 200 meg database striped on two segments -; with two stripes of 50 meg and one of 100 meg. -; -; You can always add more segments to the configuration, but once -; added, do not change the setup. -; -[Striping] -Segment1 = 100M, db-seg1-1.db, db-seg1-2.db -Segment2 = 100M, db-seg2-1.db -;... -;[TempStriping] -;Segment1 = 100M, db-seg1-1.db, db-seg1-2.db -;Segment2 = 100M, db-seg2-1.db -;... -;[Ucms] -;UcmPath = -;Ucm1 = -;Ucm2 = -;... - -[Zero Config] -ServerName = virtuoso -;ServerDSN = ZDSN -;SSLServerName = -;SSLServerDSN = - -[Mono] -;MONO_TRACE = Off -;MONO_PATH = -;MONO_ROOT = -;MONO_CFG_DIR = -;virtclr.dll = - -[URIQA] -DynamicLocal = 0 -DefaultHost = localhost:8890 - -[SPARQL] -;ExternalQuerySource = 1 -;ExternalXsltSource = 1 -;DefaultGraph = http://localhost:8890/dataspace -;ImmutableGraphs = http://localhost:8890/dataspace -ResultSetMaxRows = 10000 -MaxQueryCostEstimationTime = 400 ; in seconds -MaxQueryExecutionTime = 60 ; in seconds -DefaultQuery = select distinct ?Concept where {[] a ?Concept} LIMIT 100 -DeferInferenceRulesInit = 0 ; controls inference rules loading -;PingService = http://rpc.pingthesemanticweb.com/ - -[Plugins] -LoadPath = /usr/lib/virtuoso-opensource-6.1/hosting -;Load1 = plain, wikiv -;Load2 = plain, mediawiki -;Load3 = plain, creolewiki -;Load4 = plain, im -;Load5 = plain, wbxml2 -;Load6 = plain, hslookup -;Load7 = attach, libphp5.so -;Load8 = Hosting, hosting_php.so -;Load9 = Hosting,hosting_perl.so -;Load10 = Hosting,hosting_python.so -;Load11 = Hosting,hosting_ruby.so -;Load12 = msdtc,msdtc_sample diff --git a/application/scripts/configuration/modules/virtuoso/manifests/init.pp b/application/scripts/configuration/modules/virtuoso/manifests/init.pp deleted file mode 100644 index 78f575c9b..000000000 --- a/application/scripts/configuration/modules/virtuoso/manifests/init.pp +++ /dev/null @@ -1,72 +0,0 @@ -class virtuoso { - - # virtuoso - package { "virtuoso-opensource": ensure => installed } - - # copy ODBC config files - file { "/etc/odbc.ini": - ensure => present, - replace => true, - owner => "root", - group => "root", - mode => "0755", - source => "puppet:///modules/virtuoso/odbc.ini", - require => Package["virtuoso-opensource"] - } - - # copy init.d scripts - file { "/etc/init.d/ontowiki-dev": - ensure => present, - replace => true, - owner => "root", - group => "root", - mode => "0755", - source => "puppet:///modules/virtuoso/ontowiki-dev", - require => Package["virtuoso-opensource"] - } - file { "/etc/init.d/ontowiki-test": - ensure => present, - replace => true, - owner => "root", - group => "root", - mode => "0755", - source => "puppet:///modules/virtuoso/ontowiki-test", - require => Package["virtuoso-opensource"] - } - - # copy database ini files - file { ["/var/lib/virtuoso", "/var/lib/virtuoso/ontowiki-dev", "/var/lib/virtuoso/ontowiki-test"]: - ensure => "directory" - } - file { "/var/lib/virtuoso/ontowiki-dev/ontowiki-dev.ini": - ensure => present, - replace => true, - owner => "root", - group => "root", - mode => "0644", - source => "puppet:///modules/virtuoso/ontowiki-dev.ini", - require => [Package["virtuoso-opensource"], File["/var/lib/virtuoso/ontowiki-dev"]] - } - file { "/var/lib/virtuoso/ontowiki-test/ontowiki-test.ini": - ensure => present, - replace => true, - owner => "root", - group => "root", - mode => "0644", - source => "puppet:///modules/virtuoso/ontowiki-test.ini", - require => [Package["virtuoso-opensource"], File["/var/lib/virtuoso/ontowiki-test"]] - } - - service { "ontowiki-dev": - enable => true, - ensure => running, - hasrestart => true, - require => [Package["virtuoso-opensource"], File["/etc/init.d/ontowiki-dev"], File["/var/lib/virtuoso/ontowiki-dev/ontowiki-dev.ini"]], - } - service { "ontowiki-test": - enable => true, - ensure => running, - hasrestart => true, - require => [Package["virtuoso-opensource"], File["/etc/init.d/ontowiki-test"], File["/var/lib/virtuoso/ontowiki-test/ontowiki-test.ini"]], - } -} \ No newline at end of file diff --git a/application/scripts/configuration/modules/zend/manifests/init.pp b/application/scripts/configuration/modules/zend/manifests/init.pp deleted file mode 100644 index c959efad2..000000000 --- a/application/scripts/configuration/modules/zend/manifests/init.pp +++ /dev/null @@ -1,31 +0,0 @@ -class zend { - $version = $ubuntu::zend_version - $current = '/usr/local/zend/share/ZendFramework/current' - $zend_path = '/usr/local/zend/share/ZendFramework' - - file {['/usr/local/zend', '/usr/local/zend/share', '/usr/local/zend/share/ZendFramework']: - ensure => "directory" - } - - exec { "download-zend": - unless => "ls $zend_path/ZendFramework-$version.zip", - path => ["/bin", "/usr/bin"], - cwd => $zend_path, - command => "/usr/bin/wget https://packages.zendframework.com/releases/ZendFramework-$version/ZendFramework-$version-minimal.zip", - creates => "$zend_path/ZendFramework-$version-minimal.zip", - require => [File[$zend_path]] - } - - exec { "unzip-zend": - cwd => $zend_path, - creates => "$zend_path/ZendFramework-$version-minimal", - command => "/usr/bin/unzip -u ZendFramework-$version-minimal.zip", - require => [Exec["download-zend"]] - } - - exec { "symlink-zend": - cwd => $zend_path, - command => "/bin/ln -sfn $zend_path/ZendFramework-$version-minimal $current", - require => [Exec["unzip-zend"]] - } -} From 055fe8837793d647e41122132bfec698d5a2cbbf Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Thu, 21 Jul 2016 20:24:07 +0200 Subject: [PATCH 139/156] Add support for docker based devenv - Add devenv clone target to Makefile - Change default database name for mysql tests - Add copy of dist config files to devenv target in Makefile Revert dist configs --- Makefile | 5 +++++ application/tests/config.ini.dist | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 3d57eafff..9695dfac2 100644 --- a/Makefile +++ b/Makefile @@ -88,6 +88,11 @@ composer-install: endif # test stuff +devenv: + git clone "https://github.com/pfrischmuth/ontowiki-devenv.git" devenv + cp -i devenv/config.ini.dist ./config.ini + cp -i devenv/config-test.ini.dist ./application/tests/config.ini + test-directories: rm -rf application/tests/cache application/tests/unit/cache application/tests/integration/cache mkdir -p application/tests/cache application/tests/unit/cache application/tests/integration/cache diff --git a/application/tests/config.ini.dist b/application/tests/config.ini.dist index 768ec8d12..2d24910a5 100644 --- a/application/tests/config.ini.dist +++ b/application/tests/config.ini.dist @@ -6,11 +6,11 @@ store.backend = zenddb ; zenddb, virtuoso, multi -store.zenddb.dbname = erfurt_TEST ; needs to end with _TEST +store.zenddb.dbname = ow_TEST ; needs to end with _TEST store.zenddb.username = php store.zenddb.password = php store.zenddb.dbtype = mysql ; mysql -;store.zenddb.host = localhost ; default is localhost +store.zenddb.host = localhost ; default is localhost store.virtuoso.dsn = VOS_TEST ; needs to end with _TEST store.virtuoso.username = dba From 7cd8a33cbf9e73b19071a8ce3ffcfccef892b2fc Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Thu, 28 Jul 2016 20:46:24 +0200 Subject: [PATCH 140/156] Add data route to default config Add a shortcut data/* route to get rid of /resource/export URIs --- application/config/default.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/application/config/default.ini b/application/config/default.ini index 29282528c..d5d79329e 100644 --- a/application/config/default.ini +++ b/application/config/default.ini @@ -131,6 +131,9 @@ routes.properties.defaults.action = "properties" routes.instances.route = "list/*" routes.instances.defaults.controller = "resource" routes.instances.defaults.action = "instances" +routes.data.route = "data/*" +routes.data.defaults.controller = "resource" +routes.data.defaults.action = "export" routes.sparql.route = "sparql/*" routes.sparql.defaults.controller = "service" routes.sparql.defaults.action = "sparql" From 5ad83ec1d0704915c12e84236421466a49c4b36f Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Thu, 28 Jul 2016 20:47:10 +0200 Subject: [PATCH 141/156] Update Linked Data plugin to use data route Use data route for export URIs on resources. This makes the URIs a little bit more readable. --- extensions/linkeddataserver/LinkeddataPlugin.php | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/extensions/linkeddataserver/LinkeddataPlugin.php b/extensions/linkeddataserver/LinkeddataPlugin.php index 9a10a94b7..f21939bd0 100644 --- a/extensions/linkeddataserver/LinkeddataPlugin.php +++ b/extensions/linkeddataserver/LinkeddataPlugin.php @@ -121,20 +121,16 @@ public function onIsDispatchable($event) // Special case: If the graph URI is identical to the requested URI, we export // the whole graph instead of only data regarding the resource. + $urlSpec = array(); if ($graph === $uri) { - $controllerName = 'model'; - $actionName = 'export'; + $urlSpec = array('controller' => 'model', 'action' => 'export'); } else { - $controllerName = 'resource'; - $actionName = 'export'; + $urlSpec = array('route' => 'data'); } // Create a URL with the export action on the resource or model controller. // Set the required parameters for this action. - $url = new OntoWiki_Url( - array('controller' => $controllerName, 'action' => $actionName), - array() - ); + $url = new OntoWiki_Url($urlSpec, array()); $url->setParam('r', $uri, true) ->setParam('f', $type) ->setParam('m', $graph) From 6938502210397dbe8c2a449a0e90fc3ded8614f8 Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 1 Aug 2016 21:49:12 +0200 Subject: [PATCH 142/156] Enhance environment for controller unit tests - set store backend adapter on test class (which is a test backend adapter) - disable access control in erfurt - disable all controller plugins --- .../classes/OntoWiki/Test/ControllerTestCase.php | 2 ++ .../classes/OntoWiki/Test/UnitTestBootstrap.php | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/application/classes/OntoWiki/Test/ControllerTestCase.php b/application/classes/OntoWiki/Test/ControllerTestCase.php index db1b57e27..6488479f5 100644 --- a/application/classes/OntoWiki/Test/ControllerTestCase.php +++ b/application/classes/OntoWiki/Test/ControllerTestCase.php @@ -43,6 +43,8 @@ public function setUpUnitTest() ); parent::setUp(); + + $this->_storeAdapter = Erfurt_App::getInstance(false)->getStore()->getBackendAdapter(); } public function setUpExtensionUnitTest() diff --git a/application/classes/OntoWiki/Test/UnitTestBootstrap.php b/application/classes/OntoWiki/Test/UnitTestBootstrap.php index d127f5800..aeac04c83 100644 --- a/application/classes/OntoWiki/Test/UnitTestBootstrap.php +++ b/application/classes/OntoWiki/Test/UnitTestBootstrap.php @@ -61,9 +61,20 @@ public function _initErfurt() ); $erfurt->setStore($store); + $erfurt->setAc(new Erfurt_Ac_None()); + // make available $ontoWiki->erfurt = $erfurt; return $erfurt; } + + public function _initPlugins() + { + // require front controller + $this->bootstrap('frontController'); + $frontController = $this->getResource('frontController'); + + // We do not register any plugins for unit tests. + } } From 94133a7300c397a40035b1f326cae274363269df Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 1 Aug 2016 21:53:02 +0200 Subject: [PATCH 143/156] Add controller test for resource export action Add a controller test for the resource turtle export action that checks, whether the correct content type is returned. - remove unused old tests - remove dummy test --- .../controller/ResourceControllerTest.php | 79 ++++--------------- 1 file changed, 14 insertions(+), 65 deletions(-) diff --git a/application/tests/unit/controller/ResourceControllerTest.php b/application/tests/unit/controller/ResourceControllerTest.php index 62ef01e72..3e5dff418 100644 --- a/application/tests/unit/controller/ResourceControllerTest.php +++ b/application/tests/unit/controller/ResourceControllerTest.php @@ -23,71 +23,20 @@ public function setUp() $this->setUpUnitTest(); } - public function testDummyTestUnlessNoWorkingActualTestExists() + public function testExportActionReturnsCorrectContentTypeForTurtle() { - $this->assertTrue(true); + $r = 'http://example.org/resource1'; + $m = 'http://example.org/model1/'; + $this->_storeAdapter->createModel($m); + + $this->request->setParam('r', $r); + $this->request->setParam('m', $m); + $this->request->setParam('f', 'turtle'); + $this->dispatch('/resource/export'); + + $this->assertController('resource'); + $this->assertAction('export'); + $this->assertResponseCode(200); + $this->assertHeaderContains('Content-Type', 'text/turtle'); } - - /* - public function testListInstantiation() - { - $this->request->setMethod('POST') - ->setPost( - array( - 'list' => 'instances', - 'init' => true, - ) - ); - - $this->dispatch('/list'); - - $this->assertController('resource'); - $this->assertAction('instances'); - $this->assertResponseCode(200); - } - - - public function testListConfig() - { - $c = array( - 'filter' => array( - 'action' => 'add', - 'mode' => 'box', - 'filter' => 'equals', - 'value' => 'http://test.com/' - ) - ); - $this->request->setMethod('POST') - ->setPost( - array( - 'list' => 'instances', - 'init' => true, - 'instancesconfig' => json_encode($c) - ) - ); - - $this->dispatch('/list'); - - $this->assertController('resource'); - $this->assertAction('instances'); - $this->assertResponseCode(200); - } - - public function testListError() - { - $c = array(); - $this->request->setMethod('POST') - ->setPost( - array( - 'list' => 'newone', - //no init parameter - 'instancesconfig' => json_encode($c) - ) - ); - - $this->dispatch('/list'); - - $this->assertController('error'); - } - */ } From 8214d402628a1bb1c9d5ea98e0c578e6f9fb207a Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Sun, 31 Jul 2016 19:00:08 +0200 Subject: [PATCH 144/156] Fix content-type for resource exports This is fixed by using the values provides by Erfurt_Syntax_RdfSerializer, which already include the correct values. --- .../controllers/ResourceController.php | 21 +++---------------- 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/application/controllers/ResourceController.php b/application/controllers/ResourceController.php index 10cfa673a..f4ecc7e0c 100644 --- a/application/controllers/ResourceController.php +++ b/application/controllers/ResourceController.php @@ -478,24 +478,9 @@ public function exportAction() $filename = 'export' . date('Y-m-d_Hi'); - switch ($format) { - case 'rdfxml': - $contentType = 'application/rdf+xml'; - $filename .= '.rdf'; - break; - case 'rdfn3': - $contentType = 'text/rdf+n3'; - $filename .= '.n3'; - break; - case 'rdfjson': - $contentType = 'application/json'; - $filename .= '.json'; - break; - case 'turtle': - $contentType = 'application/x-turtle'; - $filename .= '.ttl'; - break; - } + $formatDescription = Erfurt_Syntax_RdfSerializer::getFormatDescription($format); + $contentType = $formatDescription['contentType']; + $filename .= $formatDescription['fileExtension']; /* * Event: allow for adding / deleting statements to the export From 95dd5aa1a827ff9f27d4f3eb8c7675940752abb9 Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Fri, 29 Jul 2016 19:48:06 +0200 Subject: [PATCH 145/156] Fix support for JSON content types in Linked Data plugin JSON ist supported by serializers and the Linked Data plugin already contained mappings for JSON MIME types. They where never used however. --- extensions/linkeddataserver/LinkeddataPlugin.php | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/linkeddataserver/LinkeddataPlugin.php b/extensions/linkeddataserver/LinkeddataPlugin.php index f21939bd0..75a1b4279 100644 --- a/extensions/linkeddataserver/LinkeddataPlugin.php +++ b/extensions/linkeddataserver/LinkeddataPlugin.php @@ -110,6 +110,7 @@ public function onIsDispatchable($event) case 'rdf': case 'n3': case 'ttl': + case 'json': // Check the config, whether provenance information should be included. $prov = false; if (isset($this->_privateConfig->provenance) From ef8f9f81d38a85d849e19cb26037cf29d3f0c0c3 Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Fri, 29 Jul 2016 19:48:23 +0200 Subject: [PATCH 146/156] Fix indentation of mappings array --- .../linkeddataserver/LinkeddataPlugin.php | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/extensions/linkeddataserver/LinkeddataPlugin.php b/extensions/linkeddataserver/LinkeddataPlugin.php index 75a1b4279..862f843fb 100644 --- a/extensions/linkeddataserver/LinkeddataPlugin.php +++ b/extensions/linkeddataserver/LinkeddataPlugin.php @@ -28,18 +28,17 @@ class LinkeddataPlugin extends OntoWiki_Plugin * * @var array */ - private $_typeMapping - = array( - DEFAULT_TYPE => 'html', // default is xhtml - 'text/html' => 'html', // we only deliver XML-compatible html - 'application/xhtml+xml' => 'html', - 'application/rdf+xml' => 'rdf', - 'text/n3' => 'n3', - 'text/turtle' => 'ttl', - 'application/rdf+json' => 'json', - 'application/json' => 'json', - 'application/xml' => 'html' // TODO: should this be xhtml or rdf? - ); + private $_typeMapping = array( + DEFAULT_TYPE => 'html', // default is xhtml + 'text/html' => 'html', // we only deliver XML-compatible html + 'application/xhtml+xml' => 'html', + 'application/rdf+xml' => 'rdf', + 'text/n3' => 'n3', + 'text/turtle' => 'ttl', + 'application/rdf+json' => 'json', + 'application/json' => 'json', + 'application/xml' => 'html' // TODO: should this be xhtml or rdf? + ); /** * This method is called, when the onIsDispatchable event was triggered. From ddcd17a7f93fe2a94df62ab76bbff744d372fbe9 Mon Sep 17 00:00:00 2001 From: shinobu Date: Fri, 19 Aug 2016 21:57:22 +0200 Subject: [PATCH 147/156] This fixes the require once error, removes the need of descriptions for queries and fixes a missing urlBase Parameter --- .../savedqueries/SavedqueriesController.php | 15 +++++++++------ extensions/savedqueries/SavedqueriesModule.php | 9 ++------- .../templates/savedqueries/init.phtml | 2 +- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/extensions/savedqueries/SavedqueriesController.php b/extensions/savedqueries/SavedqueriesController.php index 5f41351ca..a168b3352 100644 --- a/extensions/savedqueries/SavedqueriesController.php +++ b/extensions/savedqueries/SavedqueriesController.php @@ -6,8 +6,6 @@ * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ -require_once 'OntoWiki/Controller/Component.php'; - /** * Mass Geocoding of Ressources via attributes (parameter r) * @@ -32,14 +30,12 @@ public function init() parent::init(); // m is automatically used and selected if ((!isset($this->_request->m)) && (!$this->_owApp->selectedModel)) { - require_once 'OntoWiki/Exception.php'; throw new OntoWiki_Exception('No model pre-selected and missing parameter m (model)!'); } else { $this->_model = $this->_owApp->selectedModel; } // disable tabs - require_once 'OntoWiki/Navigation.php'; OntoWiki::getInstance()->getNavigation()->disableNavigation(); // get translation object @@ -61,8 +57,15 @@ public function init() public function initAction() { // create a new button on the toolbar - $queryResult = $this->_getQueryResult($this->queryString); - + try { + $queryResult = $this->_getQueryResult($this->queryString); + } catch (Exception $e){ + $queryResult = array( + array( + "error" => "This Query contains errors and should be corrected in the Query Editor", + ), + ); + } $header = array(); try { if (is_array($queryResult) && isset($queryResult[0]) && is_array($queryResult[0])) { diff --git a/extensions/savedqueries/SavedqueriesModule.php b/extensions/savedqueries/SavedqueriesModule.php index b530c434a..29bf543dd 100644 --- a/extensions/savedqueries/SavedqueriesModule.php +++ b/extensions/savedqueries/SavedqueriesModule.php @@ -6,11 +6,6 @@ * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL) */ -require_once 'Erfurt/Sparql/SimpleQuery.php'; -require_once 'OntoWiki/Module.php'; -require_once 'OntoWiki/Url.php'; -require_once 'OntoWiki/Utils.php'; - /** * @category OntoWiki * @package Extensions_Savedqueries @@ -38,8 +33,8 @@ public function getContents() ?query a <" . $this->_privateConfig->queryClass . "> . ?query <" . $this->_privateConfig->queryLabel . "> ?label . ?query <" . $this->_privateConfig->queryId . "> ?id . - ?query <" . $this->_privateConfig->queryDesc . "> ?description . - ?query <" . $this->_privateConfig->queryCode . "> ?code + ?query <" . $this->_privateConfig->queryCode . "> ?code. + OPTIONAL { ?query <" . $this->_privateConfig->queryDesc . "> ?description . } }"; $elements = $storeGraph->sparqlQuery($query); diff --git a/extensions/savedqueries/templates/savedqueries/init.phtml b/extensions/savedqueries/templates/savedqueries/init.phtml index 9a95ef951..83a8d5d33 100644 --- a/extensions/savedqueries/templates/savedqueries/init.phtml +++ b/extensions/savedqueries/templates/savedqueries/init.phtml @@ -2,7 +2,7 @@
          queryResult)): ?> partial('partials/resultset.phtml', array('data' => $this->queryResult, 'header' => $this->header, 'caption'=>'')); + echo $this->partial('partials/resultset.phtml', array('data' => $this->queryResult, 'urlBase' => $this->urlBase, 'header' => $this->header, 'caption'=>'')); ?>
          escape($this->queryResult) ?>
          From de14969c08f646501cfbc35a10c51bb64ed78373 Mon Sep 17 00:00:00 2001 From: shinobu Date: Sun, 21 Aug 2016 16:16:50 +0200 Subject: [PATCH 148/156] changes the Documentation link from Github to the new Documentation --- application/config/default.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/config/default.ini b/application/config/default.ini index d5d79329e..949ae1e31 100644 --- a/application/config/default.ini +++ b/application/config/default.ini @@ -108,7 +108,7 @@ version.suffix = "git" ;; ; Help Menu URLs ;; -help.documentation = "https://github.com/AKSW/OntoWiki/wiki" +help.documentation = "http://docs.ontowiki.net" help.issues = "https://github.com/AKSW/OntoWiki/issues" help.versioninfo = "https://raw.github.com/AKSW/OntoWiki/master/debian/changelog" From 65eaf7f46f43625ad9935b2eca14f77efbec9962 Mon Sep 17 00:00:00 2001 From: shinobu Date: Sun, 21 Aug 2016 17:26:29 +0200 Subject: [PATCH 149/156] fixes the wrong array access for log.level for the About Page --- application/controllers/ApplicationController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/controllers/ApplicationController.php b/application/controllers/ApplicationController.php index 76e3c5411..7f8db44c5 100644 --- a/application/controllers/ApplicationController.php +++ b/application/controllers/ApplicationController.php @@ -84,7 +84,7 @@ public function aboutAction() ), 'Logging' => array( 'Path' => rtrim($this->_config->log->path, '/') . $logWritable, - 'Level' => (bool)$this->_config->loglevel ? $this->_config->loglevel : 'disabled' + 'Level' => (bool)$this->_config->log->level ? $this->_config->log->level : 'disabled' ) ); From 69e2bf68e8e92fb2dea9a78a825b93c935bfec15 Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 12 Sep 2016 15:59:38 +0200 Subject: [PATCH 150/156] Add CHANGELOG.md and add changes for 1.0.0 --- CHANGELOG.md | 194 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..5e3ae8b3b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,194 @@ +# Change Log +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/) +and this project adheres to [Semantic Versioning](http://semver.org/) as of version 1.0.0. + +## [1.0.0] - 2016-09-12 + +### Added +- Add a help text for the filter module +- Add option to (not) display default type column +- Add first draft (incomplete) to provide french +- SPARQL: add option to export result to CSV +- Add hide type when using add instance +- Add json-support for registrationAction +- Add prependTitleProperty again, remove unused methods and keep a single instance of erfurt +- Add showHiddenElements to naviagtion config +- Add hugarian to language selection +- Add initial ResourceJsonrpcAdapter +- Add getTitle method to ModelJsonrpcAdapter +- Add RDF/JSON (Alternate, Talis) content type +- Add support for attributes in toolbar buttons +- Add support for docker based devenv +- Add controller test for resource export action +- Add an onRegisterUser Event +- Add an onRegisterUserFailed Event +- Add test makefile for new composer download + +### Changed +- Update RDFauthor +- Use onResolveDomainAliasInput on URL detection +- TitleHelper improvements: Chunk/Bulk Querying +- Changing the workflow of the TitleHelper using the ResourcePool +- Update getValues functionality using the ResourcePool - Scalability Improvement +- Changing getAllProperties functionality to work with the MemoryModel and ResourcePool +- Changing debug workflow with blanknodes on gettitles + cleanup +- Changing debug workflow on addResource +- Re-enabling inverse show properties in table view but on a scaleable way +- Change sameTerm Filter into Equals constraint in NavigationController +- Make new TitleHelper aware of languages +- Add getResources() call and unify testShownPropertiesAddTitles +- Set zend version to latest 1.x. Fix #306. +- Move responsibility for contentType and fileExtension to Erfurt +- Improve Exception output +- Update jQuery to 1.9.1 and add jQuery migrate +- Using composer for dependencies +- Update jquery-ui to 1.8.22. Fix #337 +- Refactor usage of exit to using return +- Clean up default.ini/config.ini.dist, disable caches per default +- Remove trim() to give more meaningfull output +- Improve FileCommentSniff to also accept older years and to ignore sub repos +- Increse minimal PHP version to 5.4.0 +- Change sort option to SORT_NUMERIC +- Modify help menu building process +- Deactivate ckan, mail and pingback extension +- Add data route to default config +- Update Linked Data plugin to use data route +- Enhance environment for controller unit tests +- Replace sameterm with equals in navbox +- Use IN where possible +- Optimize offset/limit usage & refactor js code a bit +- Make codesniffer now ignores the FileCommentSniff and make codesniffer_year includes the Sniff +- Disable front-end cache in config.ini.dist +- Change the Documentation link from Github to the new Documentation + +### Fixed +- Fix type handling in rdfauthor popover controller +- Fix #278 Add Property not working properly +- Complete license and copyright information in doc blocks +- Additional fixes while firing onRegisterUser and onRegisterUserFailed event +- added workaround to handle statements with empty object URIs, which are sometimes provided by RDFauthor editor (seems to be related to line 467 in extensions/themes/silverblue/scripts/support.js) +- Only Uris should be used as links in a List. BugFix +- Prevent Bugs with wrong initalized class attributes +- Fix try to get property of non-object, when deleting model +- Fix pingback takes for ever +- Fix #286. Also consider colon in OntoWiki_Utils::compactUri method. +- Fix #258. Forward Erfurt. +- Fix community tab +- Fix selectlanguage config for russian +- Fix comments if creator not set. +- Fix getting branch name (wasn't language independent) +- Fix #145. Fix special chars in Linked Data request URIs. +- Fix testing for extensions +- Fix handling of protocols forwarded by proxy. Fix #313. +- Fix typo in Bootstrap comment +- Fix 319. Expose navigationAddElement in navigation.js +- Fix setting select clause instead of prologue part and forward Erfurt +- Fall back if no feed is specified +- Fix #347. Remove require_once because we are using autoloader now +- Fix skipped test +- Fix integration tests to fit new result format +- #332: Fix "Shift + Alt" key capture issue +- Fix content-type for resource exports +- Fix support for JSON content types in Linked Data plugin +- Fix indentation of mappings array + +### Removed +- Removing subjects from inverse relations memory model +- Remove OntoWiki_Controller_Service. Fix #242. +- Remove useless add-method from ResourceJsonrpcAdapter +- Remove Vagrant development environment +- Remove test target in makefile + +## [0.9.11] - 2014-01-31 + +- Improve model selection in linkeddataserver extension +- Extend cache clear script by support for query and translation cache +- Fix #60: Add script to clear cache via shell +- fix #201 - removed css classes for modal and set z-index of applicationbar to 999 +- Fix 271. Fix Output Format of queries editor +- fix #201 - fixed z-index for modal-wrapper-propertyselector +- Merge pull request #268 from hknochi/feature/fix-extension-enabler +- Merge pull request #269 from hknochi/feature/fix-pagination +- fix issue #167 - invalidate extensionCache to distribute requested changes +- fix issue #261 - added limit-parameter to url +- improve cron job +- Add list-events target to Makefile +- remove log in about screen +- avoid broken feed URLs on version / names with spaces +- use configure name instead of hardcoded one +- fixed issue #201 - added css rules for modal-wrapper +- fixed issue #201 - added css rules for simplemodal-container and -overlay +- Fix build to ignore worker shell scripts +- Reorganize shell scripts to avoid build failure +- Cleanup mail extension job class by removing obsolete members +- Added console client and an example extension for testing Erfurts worker +- Add support for Erfurts background jobs +- add min-height to in resource view +- Add hidden save and cancle buttons in listmode +- Reorganize some code in support.js +- Fix editProperty to work in extended mode (+) +- Allow configuration of session cookie parameters, such as session lifetime +- Fix #259. Write alle defined prefixes to RDFa output. +- Fix warning, when site redirect takes place. Fix #260. +- fix wrong server class includes (closes #256) +- initial version of SelectorModule +- Fix model creation if no title is specified +- move inner window modules outside of master form +- Add “View as Resource” entry to model menu. Fix #152 +- fix wrong encoded query parameter +- add even/odd classes for row and noodds parameter +- use new querylink feature of table partial +- remake table partial, add query link enhancement +- Fix #152. Move menu creation to Menu_Registry. +- add xdebug link +- Remove unused action service/entities + +## [0.9.10] - 2013-07-11 + +- new model creation / add data procedure +- fixes in query editor +- performance issues in title helper +- unify CommentModule and LastcommentsModule, increase limit and set ordering +- +100 other commits +- depends on Erfurt 1.6 +- depends on RDFauthor 0.9.6 + +## [0.9.8] - 2013-02-01 + +- fix cors header +- add doap:wiki to the weblink list (2 weeks ago by Sebastian Tramp) +- add head action to return the request header for given uri +- fix extensions setting page (toggleswitch) #179 +- Fixing Sort functionality of the Navigation Box extension re-enabling the Sort Menue +- prevent open paranthesis bug while using the limit buttons (100 / all) +- Fix #172 - rewrite rules in .htaccess +- use getReadableGraphsUsingResource method on Store +- cleanup togglebutton changes +- fix toggle button for new jquery version (#167) +- depends on Erfurt 1.5 +- depends on RDFauthor 0.9.5 + +## [0.9.7] - 2012-11-27 + +- GUI niceups +- lots of fixes +- https://github.com/AKSW/OntoWiki/issues?milestone=1&page=1&state=closed +- RDFauthor is now a separate package +- Add support for additonal vhosts +- increment RDFauthor dependency +- allow usage of virtuosos bd.ini if present +- add gnome desktop file + +## 0.9.6-21 - 2012-03-03 + +- fix RDFauthor integration +- forward RDFauthor to b780680 +- forward OntoWiki to 04b33fd + +[1.0.0]: https://github.com/AKSW/OntoWiki/compare/v0.9.11...v1.0.0 +[0.9.11]: https://github.com/AKSW/OntoWiki/compare/v0.9.10...v0.9.11 +[0.9.10]: https://github.com/AKSW/OntoWiki/compare/v0.9.8...v0.9.10 +[0.9.8]: https://github.com/AKSW/OntoWiki/compare/v0.9.7...v0.9.8 +[0.9.7]: https://github.com/AKSW/OntoWiki/compare/v0.9.6-21...v0.9.7 From 1c67b55518f78357908a72b35dcb6757bb06186c Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 12 Sep 2016 16:02:49 +0200 Subject: [PATCH 151/156] Update composer.json to use Erfurt 1.8.* --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 630e70132..fbee34d97 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "require": { "php": ">=5.4.0", "mnsami/composer-custom-directory-installer": "1.1.*", - "aksw/erfurt": "dev-develop", + "aksw/erfurt": "1.8.*", "bitworking/mimeparse": "2.1.*", "zendframework/zendframework1": "1.*", "aksw/rdfauthor": "dev-develop" From a7e3ffd13c221fc36188ca8087123effa0a5e6bb Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 12 Sep 2016 16:04:53 +0200 Subject: [PATCH 152/156] Add composer.lock to version control --- .gitignore | 2 - composer.lock | 1568 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1568 insertions(+), 2 deletions(-) create mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index 7f3b65d37..a2ba07f60 100644 --- a/.gitignore +++ b/.gitignore @@ -38,8 +38,6 @@ build/ /vendor composer.phar # for now we ignore the composer.lock, but we should commit it some dome day, especially for releases -# see also: https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file -composer.lock # devenv stuff /devenv diff --git a/composer.lock b/composer.lock new file mode 100644 index 000000000..64955c52d --- /dev/null +++ b/composer.lock @@ -0,0 +1,1568 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "62e9c85570eb53d3b65184648f0c35fe", + "content-hash": "d137f1a2b7f45fb7081294fda432daa0", + "packages": [ + { + "name": "aksw/erfurt", + "version": "v1.8.0-rc.1", + "source": { + "type": "git", + "url": "https://github.com/AKSW/Erfurt.git", + "reference": "a0e6ee5b358bb0d8ca9b997877d10146bb96078e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/AKSW/Erfurt/zipball/a0e6ee5b358bb0d8ca9b997877d10146bb96078e", + "reference": "a0e6ee5b358bb0d8ca9b997877d10146bb96078e", + "shasum": "" + }, + "require": { + "easyrdf/easyrdf": "0.9.*", + "php": ">=5.4.0", + "semsol/arc2": "*", + "zendframework/zendframework1": "1.*" + }, + "require-dev": { + "ceus-media/common": "dev-master", + "ceus-media/doc-creator": "dev-master", + "pdepend/pdepend": "2.2.*", + "phploc/phploc": "2.1.*", + "phpmd/phpmd": "2.4.*", + "phpunit/phpunit": "4.5.*", + "sebastian/phpcpd": "2.0.*", + "squizlabs/php_codesniffer": "dev-master", + "white-gecko/arrays": "*", + "zerkalica/php-code-browser": "dev-master" + }, + "type": "library", + "autoload": { + "classmap": [ + "library/antlr/", + "library/Erfurt/", + "tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0" + ], + "authors": [ + { + "name": "AKSW", + "homepage": "http://aksw.org" + } + ], + "description": "PHP/Zend based Semantic Web API for Social Semantic Software", + "keywords": [ + "Erfurt", + "Linked Data", + "Query Cache", + "RDF", + "Semantic Web", + "Triple Store", + "parser", + "serializer" + ], + "time": "2016-09-12 13:16:26" + }, + { + "name": "aksw/rdfauthor", + "version": "dev-develop", + "source": { + "type": "git", + "url": "https://github.com/AKSW/RDFauthor.git", + "reference": "6e8193443d3d519db10d00a6d6d6d63690fdc051" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/AKSW/RDFauthor/zipball/6e8193443d3d519db10d00a6d6d6d63690fdc051", + "reference": "6e8193443d3d519db10d00a6d6d6d63690fdc051", + "shasum": "" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "AKSW", + "homepage": "http://aksw.org" + }, + { + "name": "Norman Heino", + "email": "norman.heino@gmail.com" + } + ], + "description": "RDFauthor creates formular widgets out of RDFa-enhanced webpages.", + "keywords": [ + "Linked Data", + "RDF", + "RDFauthor", + "Semantic Web", + "authoring", + "curation", + "editing" + ], + "time": "2016-04-14 11:51:40" + }, + { + "name": "bitworking/mimeparse", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/conneg/mimeparse-php.git", + "reference": "db3f7be1ab4d9bfff5764e56ad84872eb3b87c1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/conneg/mimeparse-php/zipball/db3f7be1ab4d9bfff5764e56ad84872eb3b87c1c", + "reference": "db3f7be1ab4d9bfff5764e56ad84872eb3b87c1c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "jakub-onderka/php-parallel-lint": "0.8.*", + "phpunit/phpunit": "~4.5", + "satooshi/php-coveralls": "0.6.*", + "squizlabs/php_codesniffer": "~2.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Bitworking\\": "src/Bitworking/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joe Gregorio", + "homepage": "http://bitworking.org" + }, + { + "name": "Andrew \"Venom\" K." + }, + { + "name": "Ben Ramsey", + "homepage": "http://benramsey.com" + } + ], + "description": "Basic functions for handling mime-types, forked from Joe Gregorio's mimeparse library .", + "keywords": [ + "accept", + "http", + "mime" + ], + "time": "2015-04-25 17:28:31" + }, + { + "name": "easyrdf/easyrdf", + "version": "0.9.x-dev", + "source": { + "type": "git", + "url": "https://github.com/njh/easyrdf.git", + "reference": "acd09dfe0555fbcfa254291e433c45fdd4652566" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/njh/easyrdf/zipball/acd09dfe0555fbcfa254291e433c45fdd4652566", + "reference": "acd09dfe0555fbcfa254291e433c45fdd4652566", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-pcre": "*", + "php": ">=5.2.8" + }, + "require-dev": { + "phpunit/phpunit": "~3.5", + "sami/sami": "~1.4", + "squizlabs/php_codesniffer": "~1.4.3" + }, + "suggest": { + "ml/json-ld": "~1.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "EasyRdf_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nicholas Humfrey", + "email": "njh@aelius.com", + "homepage": "http://www.aelius.com/njh/", + "role": "Developer" + }, + { + "name": "Alexey Zakhlestin", + "email": "indeyets@gmail.com", + "role": "Developer" + } + ], + "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.", + "homepage": "http://www.easyrdf.org/", + "keywords": [ + "Linked Data", + "RDF", + "Semantic Web", + "Turtle", + "rdfa", + "sparql" + ], + "time": "2015-02-27 09:45:49" + }, + { + "name": "mnsami/composer-custom-directory-installer", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/mnsami/composer-custom-directory-installer.git", + "reference": "8cc82e0c5801cc3bf53ba452afdcaa5c6ff645a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mnsami/composer-custom-directory-installer/zipball/8cc82e0c5801cc3bf53ba452afdcaa5c6ff645a5", + "reference": "8cc82e0c5801cc3bf53ba452afdcaa5c6ff645a5", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0", + "php": ">=5.3" + }, + "type": "composer-plugin", + "extra": { + "class": [ + "Composer\\CustomDirectoryInstaller\\LibraryPlugin", + "Composer\\CustomDirectoryInstaller\\PearPlugin", + "Composer\\CustomDirectoryInstaller\\PluginPlugin" + ], + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Composer\\CustomDirectoryInstaller": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mina Nabil Sami", + "email": "mina.nsami@gmail.com" + } + ], + "description": "A composer plugin, to help install packages of different types in custom paths.", + "keywords": [ + "composer", + "composer-installer", + "composer-plugin" + ], + "time": "2016-05-25 08:26:02" + }, + { + "name": "semsol/arc2", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/semsol/arc2.git", + "reference": "89e3467129c56a9517befd92a131e0ad3a01fb4c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/semsol/arc2/zipball/89e3467129c56a9517befd92a131e0ad3a01fb4c", + "reference": "89e3467129c56a9517befd92a131e0ad3a01fb4c", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "./", + "parsers/", + "serializers/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "W3C" + ], + "authors": [ + { + "name": "Benji Nowack", + "email": "mail@bnowack.de", + "homepage": "http://bnowack.de/" + } + ], + "description": "Semsol's ARC2 RDF library", + "homepage": "https://github.com/semsol/arc2", + "keywords": [ + "RDF", + "sparql" + ], + "time": "2016-06-30 06:20:14" + }, + { + "name": "zendframework/zendframework1", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zf1.git", + "reference": "a90f3a8d71e0788020f730da83674b7312bd3b16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zf1/zipball/a90f3a8d71e0788020f730da83674b7312bd3b16", + "reference": "a90f3a8d71e0788020f730da83674b7312bd3b16", + "shasum": "" + }, + "require": { + "php": ">=5.2.11" + }, + "require-dev": { + "phpunit/dbunit": "1.3.*", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.12.x-dev" + } + }, + "autoload": { + "psr-0": { + "Zend_": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "library/" + ], + "license": [ + "BSD-3-Clause" + ], + "description": "Zend Framework 1", + "homepage": "http://framework.zend.com/", + "keywords": [ + "ZF1", + "framework" + ], + "time": "2016-09-08 14:54:20" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "416fb8ad1d095a87f1d21bc40711843cd122fd4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/416fb8ad1d095a87f1d21bc40711843cd122fd4a", + "reference": "416fb8ad1d095a87f1d21bc40711843cd122fd4a", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2016-03-31 10:24:22" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-12-27 11:43:31" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "9270140b940ff02e58ec577c237274e92cd40cdd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9270140b940ff02e58ec577c237274e92cd40cdd", + "reference": "9270140b940ff02e58ec577c237274e92cd40cdd", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2016-06-10 09:48:41" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", + "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2016-06-10 07:14:17" + }, + { + "name": "phpspec/prophecy", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "d883566b83ae601a50b38b249e92450dc57cf875" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d883566b83ae601a50b38b249e92450dc57cf875", + "reference": "d883566b83ae601a50b38b249e92450dc57cf875", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1", + "sebastian/recursion-context": "^1.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2016-07-19 16:08:43" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.2.x-dev", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "^1.3.2", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2015-10-06 15:47:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "File/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2013-10-10 15:34:57" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21 13:50:34" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", + "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4|~5" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2016-05-12 18:03:57" + }, + { + "name": "phpunit/php-token-stream", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "cab6c6fefee93d7b7c3a01292a0fe0884ea66644" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/cab6c6fefee93d7b7c3a01292a0fe0884ea66644", + "reference": "cab6c6fefee93d7b7c3a01292a0fe0884ea66644", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2015-09-23 14:46:55" + }, + { + "name": "phpunit/phpunit", + "version": "4.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "d6429b0995b24a2d9dfe5587ee3a7071c1161af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d6429b0995b24a2d9dfe5587ee3a7071c1161af4", + "reference": "d6429b0995b24a2d9dfe5587ee3a7071c1161af4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "~1.3,>=1.3.1", + "phpunit/php-code-coverage": "~2.0,>=2.0.11", + "phpunit/php-file-iterator": "~1.3.2", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "~1.0.2", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.1", + "sebastian/diff": "~1.1", + "sebastian/environment": "~1.2", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.5.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2015-03-29 09:24:05" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.x-dev", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2015-10-02 06:51:40" + }, + { + "name": "sebastian/comparator", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2015-07-26 15:48:44" + }, + { + "name": "sebastian/diff", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-12-08 07:14:41" + }, + { + "name": "sebastian/environment", + "version": "1.3.x-dev", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2016-08-18 05:49:44" + }, + { + "name": "sebastian/exporter", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-06-17 09:04:28" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12 03:26:01" + }, + { + "name": "sebastian/recursion-context", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "7ff5b1b3dcc55b8ab8ae61ef99d4730940856ee7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/7ff5b1b3dcc55b8ab8ae61ef99d4730940856ee7", + "reference": "7ff5b1b3dcc55b8ab8ae61ef99d4730940856ee7", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-01-28 05:39:29" + }, + { + "name": "sebastian/version", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2015-06-21 13:59:46" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "7b54d0c0321f8bb97687652ef87ccd3bae711484" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/7b54d0c0321f8bb97687652ef87ccd3bae711484", + "reference": "7b54d0c0321f8bb97687652ef87ccd3bae711484", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "bin": [ + "scripts/phpcs", + "scripts/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "classmap": [ + "CodeSniffer.php", + "CodeSniffer/CLI.php", + "CodeSniffer/Exception.php", + "CodeSniffer/File.php", + "CodeSniffer/Fixer.php", + "CodeSniffer/Report.php", + "CodeSniffer/Reporting.php", + "CodeSniffer/Sniff.php", + "CodeSniffer/Tokens.php", + "CodeSniffer/Reports/", + "CodeSniffer/Tokenizers/", + "CodeSniffer/DocGenerators/", + "CodeSniffer/Standards/AbstractPatternSniff.php", + "CodeSniffer/Standards/AbstractScopeSniff.php", + "CodeSniffer/Standards/AbstractVariableSniff.php", + "CodeSniffer/Standards/IncorrectPatternException.php", + "CodeSniffer/Standards/Generic/Sniffs/", + "CodeSniffer/Standards/MySource/Sniffs/", + "CodeSniffer/Standards/PEAR/Sniffs/", + "CodeSniffer/Standards/PSR1/Sniffs/", + "CodeSniffer/Standards/PSR2/Sniffs/", + "CodeSniffer/Standards/Squiz/Sniffs/", + "CodeSniffer/Standards/Zend/Sniffs/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2016-09-10 17:45:23" + }, + { + "name": "symfony/yaml", + "version": "2.8.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "e7540734bad981fe59f8ef14b6fc194ae9df8d9c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e7540734bad981fe59f8ef14b6fc194ae9df8d9c", + "reference": "e7540734bad981fe59f8ef14b6fc194ae9df8d9c", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2016-09-02 01:57:56" + }, + { + "name": "webmozart/assert", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "8444f2ac9f86342665cdae47b6d3ea6e07794456" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/8444f2ac9f86342665cdae47b6d3ea6e07794456", + "reference": "8444f2ac9f86342665cdae47b6d3ea6e07794456", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-08-18 09:30:53" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": { + "aksw/rdfauthor": 20, + "squizlabs/php_codesniffer": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4.0" + }, + "platform-dev": [] +} From 9ae14e82db3275578dec982ae8f90243c30fcbb9 Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 12 Sep 2016 16:06:28 +0200 Subject: [PATCH 153/156] Bump version number to 1.0.0 --- application/config/default.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/config/default.ini b/application/config/default.ini index 949ae1e31..28116a5bb 100644 --- a/application/config/default.ini +++ b/application/config/default.ini @@ -102,8 +102,8 @@ lists.showTypeColumnByDefault = "true" ; Version info ;; version.label = "OntoWiki" -version.number = "0.9.12" -version.suffix = "git" +version.number = "1.0.0" +version.suffix = "" ;; ; Help Menu URLs From c9aa5b3a55fdc981a9f71a330b7c9d7eed7f3500 Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 26 Sep 2016 10:39:25 +0200 Subject: [PATCH 154/156] Fix locked composer dependencies --- composer.lock | 191 ++++++-------------------------------------------- 1 file changed, 22 insertions(+), 169 deletions(-) diff --git a/composer.lock b/composer.lock index 64955c52d..a5dabd642 100644 --- a/composer.lock +++ b/composer.lock @@ -426,136 +426,39 @@ ], "time": "2016-03-31 10:24:22" }, - { - "name": "phpdocumentor/reflection-common", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2015-12-27 11:43:31" - }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.1.0", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "9270140b940ff02e58ec577c237274e92cd40cdd" + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9270140b940ff02e58ec577c237274e92cd40cdd", - "reference": "9270140b940ff02e58ec577c237274e92cd40cdd", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.2.0", - "webmozart/assert": "^1.0" + "php": ">=5.3.3" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-06-10 09:48:41" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", - "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", - "shasum": "" - }, - "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0" + "phpunit/phpunit": "~4.0" }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ + "psr-0": { + "phpDocumentor": [ "src/" ] } @@ -567,10 +470,10 @@ "authors": [ { "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "email": "mike.vanriel@naenius.com" } ], - "time": "2016-06-10 07:14:17" + "time": "2015-02-03 12:10:50" }, { "name": "phpspec/prophecy", @@ -578,12 +481,12 @@ "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "d883566b83ae601a50b38b249e92450dc57cf875" + "reference": "d3be8294e4729abcf8e6e207f25cdcb299cd1c88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d883566b83ae601a50b38b249e92450dc57cf875", - "reference": "d883566b83ae601a50b38b249e92450dc57cf875", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d3be8294e4729abcf8e6e207f25cdcb299cd1c88", + "reference": "d3be8294e4729abcf8e6e207f25cdcb299cd1c88", "shasum": "" }, "require": { @@ -632,7 +535,7 @@ "spy", "stub" ], - "time": "2016-07-19 16:08:43" + "time": "2016-09-21 19:41:08" }, { "name": "phpunit/php-code-coverage", @@ -1381,12 +1284,12 @@ "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "7b54d0c0321f8bb97687652ef87ccd3bae711484" + "reference": "a3cb3163988f6ec1646d8a06b2c0c7b30798ce54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/7b54d0c0321f8bb97687652ef87ccd3bae711484", - "reference": "7b54d0c0321f8bb97687652ef87ccd3bae711484", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/a3cb3163988f6ec1646d8a06b2c0c7b30798ce54", + "reference": "a3cb3163988f6ec1646d8a06b2c0c7b30798ce54", "shasum": "" }, "require": { @@ -1451,7 +1354,7 @@ "phpcs", "standards" ], - "time": "2016-09-10 17:45:23" + "time": "2016-09-25 22:43:32" }, { "name": "symfony/yaml", @@ -1501,56 +1404,6 @@ "description": "Symfony Yaml Component", "homepage": "https://symfony.com", "time": "2016-09-02 01:57:56" - }, - { - "name": "webmozart/assert", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "8444f2ac9f86342665cdae47b6d3ea6e07794456" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/8444f2ac9f86342665cdae47b6d3ea6e07794456", - "reference": "8444f2ac9f86342665cdae47b6d3ea6e07794456", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2016-08-18 09:30:53" } ], "aliases": [], From 36d9787824cda1c24e059df22bd4b99c7f837d6c Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Mon, 26 Sep 2016 10:44:12 +0200 Subject: [PATCH 155/156] Update release date --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e3ae8b3b..7b9cda0ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/) as of version 1.0.0. -## [1.0.0] - 2016-09-12 +## [1.0.0] - 2016-09-26 ### Added - Add a help text for the filter module From 3bb16dcad161b5d21de5a018420b28ad759a2e4a Mon Sep 17 00:00:00 2001 From: Philipp Frischmuth Date: Tue, 4 Oct 2016 14:19:53 +0200 Subject: [PATCH 156/156] Update release date --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b9cda0ec..9fae3f657 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/) as of version 1.0.0. -## [1.0.0] - 2016-09-26 +## [1.0.0] - 2016-10-04 ### Added - Add a help text for the filter module
          +
          +

          Properties of Michael Haschke

          +
          + +
            +
          1. + Properties +
          2. +
          3. + History +
          4. +
          5. + Community +
          6. +
          7. + Source +
          8. +
          + +
          + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + seeAlso + + http://eye48.com/foaf.rdf +
          + depiction + + +
          + knows +
          + sha1sum of a personal mailbox URI name + + b46e0640d19dcc6ac3d4c0da17c4e65152c0ad37 +
          + name + + Michael Haschke +
          + nickname + + Haschek +
          + weblog + + http://haschek.eye48.com/ +
          +
          + +
          +
          + +

          Tagging

          + +
          + + +
          + +

          +
            +
          + + No tags yet. +
          + + + +
          + +
          +
          + +

          Similar Instances

          + +
          + + + + + + +
          + +
          +
          + +

          Instances Linking Here

          + +
          + + +
          + +
          + + + +
          + +
          +
          + +
          + + + +
          +
          +