diff --git a/build.xml b/build.xml index 16723cbd14199f2cb06bbaca4fd5a16f160017f2..b85aba585e6fe1b5ef53b5dbbe48663fb822c411 100644 --- a/build.xml +++ b/build.xml @@ -26,7 +26,7 @@ <property name="php-cs-fixers" value="no_blank_lines_before_namespaces,function_call_space,trailing_spaces,unused_use,lowercase_keywords,encoding,parenthesis,php_closing_tag,visibility,duplicate_semicolon,extra_empty_lines,no_blank_lines_after_class_opening,no_empty_lines_after_phpdocs,operators_spaces,spaces_before_semicolon,ternary_spaces,concat_with_spaces,short_array_syntax,phpdoc_no_access,remove_leading_slash_use,eof_ending" /> - <property name="version" value="3.0.1" /> + <property name="version" value="3.0.3" /> <!-- We only need the -p switch if the password is non-blank --> <if><not><equals arg1="${mysqlrootpass}" arg2="" /></not><then> diff --git a/composer.json b/composer.json index 083b6976e4885d7dc29035bcf4de234dc59ddd16..10946e1864ff029d5bd43e9e37cabdc58e4bf91a 100644 --- a/composer.json +++ b/composer.json @@ -1,41 +1,41 @@ -{ - "name": "vufind/vufind", - "description": "A flexible discovery layer.", - "authors": [ - { - "name": "Demian Katz", - "email": "demian.katz@villanova.edu" - } - ], - "license": "GPL-2.0", - "repositories": [ - { - "type": "composer", - "url": "https://packages.zendframework.com/" - } - ], - "require": { - "aferrandini/phpqrcode": "1.0.1", - "jasig/phpcas": "1.3.3", - "cap60552/php-sip2": "1.0.0", - "los/losrecaptcha": "1.0.0", - "ahand/mobileesp": "dev-master", - "ocramius/proxy-manager": "1.0.2", - "oyejorge/less.php": "1.7.0.9", - "pear/file_marc": "1.1.2", - "pear/validate_ispn": "dev-master", - "serialssolutions/summon": "1.0.0", - "symfony/yaml": "2.7.6", - "vufind-org/vufindcode": "1.0.2", - "vufind-org/vufindhttp": "2.0.0", - "zendframework/zendframework": "2.4.6", - "zendframework/zendrest": "2.0.2", - "zendframework/zendservice-amazon": "2.0.4", - "zf-commons/zfc-rbac": "2.5.2" - }, - "require-dev": { - "behat/mink": "1.7.0", - "behat/mink-selenium2-driver": "1.3.0", - "behat/mink-zombie-driver": "1.3.0" - } -} +{ + "name": "vufind/vufind", + "description": "A flexible discovery layer.", + "authors": [ + { + "name": "Demian Katz", + "email": "demian.katz@villanova.edu" + } + ], + "license": "GPL-2.0", + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/zendframework/zendservice_amazon" + } + ], + "require": { + "aferrandini/phpqrcode": "1.0.1", + "jasig/phpcas": "1.3.3", + "cap60552/php-sip2": "1.0.0", + "los/losrecaptcha": "1.0.0", + "ahand/mobileesp": "dev-master", + "ocramius/proxy-manager": "1.0.2", + "oyejorge/less.php": "1.7.0.9", + "pear/file_marc": "1.1.2", + "pear/validate_ispn": "dev-master", + "serialssolutions/summon": "1.0.0", + "symfony/yaml": "2.7.6", + "vufind-org/vufindcode": "1.0.2", + "vufind-org/vufindhttp": "2.0.0", + "zendframework/zendframework": "2.4.6", + "zendframework/zendrest": "2.0.2", + "zendframework/zendservice-amazon": "2.0.4", + "zf-commons/zfc-rbac": "2.5.2" + }, + "require-dev": { + "behat/mink": "1.7.0", + "behat/mink-selenium2-driver": "1.3.0", + "behat/mink-zombie-driver": "1.3.0" + } +} diff --git a/config/vufind/config.ini b/config/vufind/config.ini index 3dd16f70d0e71dc738dea46a5d16a1ac7c2d9d56..87ec3126e2804bdfe89d27dc96e6130d6670c19e 100644 --- a/config/vufind/config.ini +++ b/config/vufind/config.ini @@ -103,7 +103,7 @@ showBulkOptions = false ; Should users be allowed to save searches in their accounts? allowSavedSearches = true ; Generator value to display in an HTML header <meta> tag: -generator = "VuFind 3.0.1" +generator = "VuFind 3.0.3" ; This section allows you to configure the mechanism used for storing user ; sessions. Available types: File, Memcache, Database. @@ -674,7 +674,36 @@ authors = Wikipedia ; You can select from Google, OpenLibrary, HathiTrust. You should consult ; http://code.google.com/apis/books/branding.html before using Google Book Search. -; previews = Google,OpenLibrary,HathiTrust +;previews = Google,OpenLibrary,HathiTrust + +; Possible HathiRights options = pd,ic,op,orph,und,umall,ic-world,nobody,pdus,cc-by,cc-by-nd, +; cc-by-nc-nd,cc-by-nc,cc-by-nc-sa,cc-by-sa,orphcand,cc-zero,und-world,icus +; Default is "pd,ic-world" if unset here. +; See www.hathitrust.org/rights_database#Attributes for full details +;HathiRights = pd,ic-world,cc-by,cc-by-nd,cc-by-nc-nd,cc-by-nc,cc-by-nc-sa,cc-by-sa,cc-zero,und-world + +; Possible GoogleBooks options full,partial,noview +; options can be set for each / either of link or tab +; Link makes a button appear in search results / record view +; Tab makes a tab with an embedded preview appear on record view +; Default is "GoogleOptions['link'] = full,partial" if nothing +; is set here. +; see https://developers.google.com/books/docs/dynamic-links#json-results-format +;GoogleOptions['link'] = full,partial +;GoogleOptions['tab'] = partial + +; OpenLibrary currently offers the same options/default as GoogleBooks (above): +;OpenLibraryOptions = full,partial + +; An API key is needed to interact with the Europeana API (see the EuropeanaResults +; recommendation module in searches.ini for more information) +;europeanaAPI = INSERTKEY + +; If this is set, a new map tab will show on the record page for records which +; have long_lat data (see import/marc_local.properties for more information). +; The setting specifies the type of map; currently, the only supported value is +; "google" +;recordMap = google ; This section controls the behavior of the cover generator when makeDynamicCovers ; above is non-false. @@ -754,35 +783,6 @@ authors = Wikipedia url = "https://api.vlb.de/api/v1/cover/" ; token = "XXXXXX-XXXX-XXXXX-XXXXXXXXXXXX" -; Possible HathiRights options = pd,ic,op,orph,und,umall,ic-world,nobody,pdus,cc-by,cc-by-nd, -; cc-by-nc-nd,cc-by-nc,cc-by-nc-sa,cc-by-sa,orphcand,cc-zero,und-world,icus -; Default is "pd,ic-world" if unset here. -; See www.hathitrust.org/rights_database#Attributes for full details -;HathiRights = pd,ic-world,cc-by,cc-by-nd,cc-by-nc-nd,cc-by-nc,cc-by-nc-sa,cc-by-sa,cc-zero,und-world - -; Possible GoogleBooks options full,partial,noview -; options can be set for each / either of link or tab -; Link makes a button appear in search results / record view -; Tab makes a tab with an embedded preview appear on record view -; Default is "GoogleOptions['link'] = full,partial" if nothing -; is set here. -; see https://developers.google.com/books/docs/dynamic-links#json-results-format -;GoogleOptions['link'] = full,partial -;GoogleOptions['tab'] = partial - -; OpenLibrary currently offers the same options/default as GoogleBooks (above): -;OpenLibraryOptions = full,partial - -; An API key is needed to interact with the Europeana API (see the EuropeanaResults -; recommendation module in searches.ini for more information) -;europeanaAPI = INSERTKEY - -; If this is set, a new map tab will show on the record page for records which -; have long_lat data (see import/marc_local.properties for more information). -; The setting specifies the type of map; currently, the only supported value is -; "google" -;recordMap = google - [QRCode] ; This setting controls the image to display when no qrcode is available. ; The path is relative to the base of your theme directory. diff --git a/import/index_scripts/author.bsh b/import/index_scripts/author.bsh index c0cc4f1d1d9fe75cc768fdc43bd273349f236dd8..bfe5f7cd12c4b985ea20b65ee67ed78dbe5f4f65 100644 --- a/import/index_scripts/author.bsh +++ b/import/index_scripts/author.bsh @@ -375,9 +375,9 @@ public String processInitials(String authorName) { if (name.length() > 0) { String initial = name.substring(0,1); // if there is a hyphenated name, use both initials - if (name.indexOf('-') > 0) { - int pos = name.indexOf('-'); - String extra = name.substring(pos+1,pos+2); + int pos = name.indexOf('-'); + if (pos > 0 && pos < name.length() - 1) { + String extra = name.substring(pos+1, pos+2); initial = initial + " " + extra; } result += " " + initial; diff --git a/local/config/vufind/config.ini b/local/config/vufind/config.ini index c869b5c1bdbb5ad80865e4505ea2e6175a0b84a9..0d862505eb3611723425342c9b579dcfe2ba2f2d 100644 --- a/local/config/vufind/config.ini +++ b/local/config/vufind/config.ini @@ -103,7 +103,7 @@ showBulkOptions = false ; Should users be allowed to save searches in their accounts? allowSavedSearches = true ; Generator value to display in an HTML header <meta> tag: -generator = "VuFind 3.0.1" +generator = "VuFind 3.0.3" ; This section allows you to configure the mechanism used for storing user ; sessions. Available types: File, Memcache, Database. @@ -678,6 +678,35 @@ noCoverAvailableImage = images/noCover2.gif ; http://code.google.com/apis/books/branding.html before using Google Book Search. ; previews = Google,OpenLibrary,HathiTrust +; Possible HathiRights options = pd,ic,op,orph,und,umall,ic-world,nobody,pdus,cc-by,cc-by-nd, +; cc-by-nc-nd,cc-by-nc,cc-by-nc-sa,cc-by-sa,orphcand,cc-zero,und-world,icus +; Default is "pd,ic-world" if unset here. +; See www.hathitrust.org/rights_database#Attributes for full details +;HathiRights = pd,ic-world,cc-by,cc-by-nd,cc-by-nc-nd,cc-by-nc,cc-by-nc-sa,cc-by-sa,cc-zero,und-world + +; Possible GoogleBooks options full,partial,noview +; options can be set for each / either of link or tab +; Link makes a button appear in search results / record view +; Tab makes a tab with an embedded preview appear on record view +; Default is "GoogleOptions['link'] = full,partial" if nothing +; is set here. +; see https://developers.google.com/books/docs/dynamic-links#json-results-format +;GoogleOptions['link'] = full,partial +;GoogleOptions['tab'] = partial + +; OpenLibrary currently offers the same options/default as GoogleBooks (above): +;OpenLibraryOptions = full,partial + +; An API key is needed to interact with the Europeana API (see the EuropeanaResults +; recommendation module in searches.ini for more information) +;europeanaAPI = INSERTKEY + +; If this is set, a new map tab will show on the record page for records which +; have long_lat data (see import/marc_local.properties for more information). +; The setting specifies the type of map; currently, the only supported value is +; "google" +;recordMap = google + ; This section controls the behavior of the cover generator when makeDynamicCovers ; above is non-false. [DynamicCovers] @@ -756,35 +785,6 @@ noCoverAvailableImage = images/noCover2.gif url = "https://api.vlb.de/api/v1/cover/" ; token = "XXXXXX-XXXX-XXXXX-XXXXXXXXXXXX" -; Possible HathiRights options = pd,ic,op,orph,und,umall,ic-world,nobody,pdus,cc-by,cc-by-nd, -; cc-by-nc-nd,cc-by-nc,cc-by-nc-sa,cc-by-sa,orphcand,cc-zero,und-world,icus -; Default is "pd,ic-world" if unset here. -; See www.hathitrust.org/rights_database#Attributes for full details -;HathiRights = pd,ic-world,cc-by,cc-by-nd,cc-by-nc-nd,cc-by-nc,cc-by-nc-sa,cc-by-sa,cc-zero,und-world - -; Possible GoogleBooks options full,partial,noview -; options can be set for each / either of link or tab -; Link makes a button appear in search results / record view -; Tab makes a tab with an embedded preview appear on record view -; Default is "GoogleOptions['link'] = full,partial" if nothing -; is set here. -; see https://developers.google.com/books/docs/dynamic-links#json-results-format -;GoogleOptions['link'] = full,partial -;GoogleOptions['tab'] = partial - -; OpenLibrary currently offers the same options/default as GoogleBooks (above): -;OpenLibraryOptions = full,partial - -; An API key is needed to interact with the Europeana API (see the EuropeanaResults -; recommendation module in searches.ini for more information) -;europeanaAPI = INSERTKEY - -; If this is set, a new map tab will show on the record page for records which -; have long_lat data (see import/marc_local.properties for more information). -; The setting specifies the type of map; currently, the only supported value is -; "google" -;recordMap = google - [QRCode] ; This setting controls the image to display when no qrcode is available. ; The path is relative to the base of your theme directory. diff --git a/module/VuFind/sql/migrations/pgsql/3.0/003-add-record-table.sql b/module/VuFind/sql/migrations/pgsql/3.0/003-add-record-table.sql index 92cf3273944c91677dee3f32c628faa343e3c83b..8d13fb781077c8ba64bb858c7b00f2b5d779d0de 100644 --- a/module/VuFind/sql/migrations/pgsql/3.0/003-add-record-table.sql +++ b/module/VuFind/sql/migrations/pgsql/3.0/003-add-record-table.sql @@ -1,8 +1,8 @@ -- --- Table structure for table `record` +-- Table structure for table record -- -CREATE TABLE `record` ( +CREATE TABLE record ( id serial NOT NULL, record_id varchar(255), source varchar(50), diff --git a/module/VuFind/sql/pgsql.sql b/module/VuFind/sql/pgsql.sql index 1b54218b220b2aa466b453e1c03f3b2d5cb92364..94b949066dd4225a0cd9d6419776ec9f0da65e4b 100644 --- a/module/VuFind/sql/pgsql.sql +++ b/module/VuFind/sql/pgsql.sql @@ -22,6 +22,8 @@ CREATE INDEX comments_resource_id_idx ON comments (resource_id); -- Table structure for table resource -- +DROP TABLE IF EXISTS "resource"; + CREATE TABLE resource ( id SERIAL, record_id varchar(255) NOT NULL DEFAULT '', @@ -40,6 +42,8 @@ CREATE INDEX resource_record_id_idx ON resource (record_id); -- Table structure for table resource_tags -- +DROP TABLE IF EXISTS "resource_tags"; + CREATE TABLE resource_tags ( id SERIAL, resource_id int NOT NULL DEFAULT '0', @@ -61,6 +65,8 @@ CREATE INDEX resource_tags_list_id_idx ON resource_tags (list_id); -- Table structure for table search. Than fixed created column default value. Old value is 0000-00-00. -- +DROP TABLE IF EXISTS "search"; + CREATE TABLE search ( id SERIAL, user_id int NOT NULL DEFAULT '0', @@ -84,6 +90,8 @@ CREATE INDEX session_id_idx ON search (session_id); -- Table structure for table tags -- +DROP TABLE IF EXISTS "tags"; + CREATE TABLE tags ( id SERIAL, tag varchar(64) NOT NULL DEFAULT '', @@ -96,6 +104,8 @@ PRIMARY KEY (id) -- Table structure for table user -- +DROP TABLE IF EXISTS "user"; + CREATE TABLE "user"( id SERIAL, username varchar(255) NOT NULL DEFAULT '', @@ -123,6 +133,8 @@ UNIQUE (username) -- Table structure for table user_list -- +DROP TABLE IF EXISTS "user_list"; + CREATE TABLE user_list ( id SERIAL, user_id int NOT NULL, @@ -141,6 +153,8 @@ CREATE INDEX user_list_user_id_idx ON user_list (user_id); -- Table structure for table user_resource -- +DROP TABLE IF EXISTS "user_resource"; + CREATE TABLE user_resource ( id SERIAL, user_id int NOT NULL, @@ -175,7 +189,7 @@ UNIQUE (session_id) CREATE INDEX last_used_idx on session(last_used); -- --- Table structure for table `change_tracker` +-- Table structure for table change_tracker -- DROP TABLE IF EXISTS "change_tracker"; @@ -192,7 +206,7 @@ PRIMARY KEY (core, id) CREATE INDEX change_tracker_deleted_idx on change_tracker(deleted); -- --- Table structure for table `oai_resumption` +-- Table structure for table oai_resumption -- DROP TABLE IF EXISTS "oai_resumption"; @@ -211,7 +225,7 @@ PRIMARY KEY (id) -- -- --- Table structure for table `statistics` +-- Table structure for table statistics -- DROP TABLE IF EXISTS "user_stats_fields"; @@ -226,7 +240,7 @@ PRIMARY KEY (id, field) -- -------------------------------------------------------- -- --- Table structure for table `user_stats` +-- Table structure for table user_stats -- DROP TABLE IF EXISTS "user_stats"; @@ -246,12 +260,12 @@ PRIMARY KEY (id) -- -------------------------------------------------------- -- --- Table structure for table `record` +-- Table structure for table record -- DROP TABLE IF EXISTS "record"; -CREATE TABLE `record` ( +CREATE TABLE record ( id serial NOT NULL, record_id varchar(255), source varchar(50), @@ -265,12 +279,12 @@ CREATE TABLE `record` ( -- -------------------------------------------------------- -- --- Table structure for table `user_card` +-- Table structure for table user_card -- DROP TABLE IF EXISTS "user_card"; -CREATE TABLE `user_card` ( +CREATE TABLE user_card ( id SERIAL, user_id int NOT NULL, card_name varchar(255) NOT NULL DEFAULT '', diff --git a/module/VuFind/src/VuFind/Auth/CAS.php b/module/VuFind/src/VuFind/Auth/CAS.php index 4fd2a760327c00afee1e65216f00bdd58657fca2..a6c76571738c1cf847e28ae736b06c7a0368372e 100644 --- a/module/VuFind/src/VuFind/Auth/CAS.php +++ b/module/VuFind/src/VuFind/Auth/CAS.php @@ -142,7 +142,7 @@ class CAS extends AbstractBase if (isset($cas->$attribute)) { $value = $casauth->getAttribute($cas->$attribute); if ($attribute != 'cat_password') { - $user->$attribute = $value; + $user->$attribute = ($value === null) ? '' : $value; } else { $catPassword = $value; } diff --git a/module/VuFind/src/VuFind/Auth/LDAP.php b/module/VuFind/src/VuFind/Auth/LDAP.php index 6b24fcb654b1b7a52b909e685da0007415b08418..e006e17f15490afc75e8064f90fe2d56ee08d45d 100644 --- a/module/VuFind/src/VuFind/Auth/LDAP.php +++ b/module/VuFind/src/VuFind/Auth/LDAP.php @@ -280,7 +280,7 @@ class LDAP extends AbstractBase $value = $data[$i][$configValue][0]; $this->debug("found $field = $value"); if ($field != "cat_password") { - $user->$field = $value; + $user->$field = ($value === null) ? '' : $value; } else { $catPassword = $value; } diff --git a/module/VuFind/src/VuFind/Auth/Shibboleth.php b/module/VuFind/src/VuFind/Auth/Shibboleth.php index e837f5089c9b8ab4bf77a2f5b372a8dbbf3d182b..9a948e56a881a837a6c7d699aa5651df6009894f 100644 --- a/module/VuFind/src/VuFind/Auth/Shibboleth.php +++ b/module/VuFind/src/VuFind/Auth/Shibboleth.php @@ -114,7 +114,7 @@ class Shibboleth extends AbstractBase if (isset($shib->$attribute)) { $value = $request->getServer()->get($shib->$attribute); if ($attribute != 'cat_password') { - $user->$attribute = $value; + $user->$attribute = ($value === null) ? '' : $value; } else { $catPassword = $value; } diff --git a/module/VuFind/src/VuFind/Content/Covers/Factory.php b/module/VuFind/src/VuFind/Content/Covers/Factory.php index 51bfa872808ee1919e582d018c4c7cf9c12f0de3..d6834ba6b086da4df2c9e4ea7ecb407cb46365eb 100644 --- a/module/VuFind/src/VuFind/Content/Covers/Factory.php +++ b/module/VuFind/src/VuFind/Content/Covers/Factory.php @@ -69,7 +69,7 @@ class Factory { $config = $sm->getServiceLocator()->get('VuFind\Config')->get('config'); $url = isset($config->Booksite->url) - ? $config->Booksite->url : 'https://api.booksite.com'; + ? $config->Booksite->url : 'https://api.booksite.com'; if (!isset($config->Booksite->key)) { throw new \Exception("Booksite 'key' not set in VuFind config"); } diff --git a/module/VuFind/src/VuFind/Content/Reviews/Factory.php b/module/VuFind/src/VuFind/Content/Reviews/Factory.php index 67f8591e003fa1d3018c6a13d488ab01c5f96e35..e791a326ffdae5c18f29887dd05abb16e938196a 100644 --- a/module/VuFind/src/VuFind/Content/Reviews/Factory.php +++ b/module/VuFind/src/VuFind/Content/Reviews/Factory.php @@ -110,7 +110,7 @@ class Factory { $config = $sm->getServiceLocator()->get('VuFind\Config')->get('config'); $url = isset($config->Booksite->url) - ? $config->Booksite->url : 'https://api.booksite.com'; + ? $config->Booksite->url : 'https://api.booksite.com'; if (!isset($config->Booksite->key)) { throw new \Exception("Booksite 'key' not set in VuFind config"); } diff --git a/module/VuFind/src/VuFind/Cover/Generator.php b/module/VuFind/src/VuFind/Cover/Generator.php index 9cf248bcc39b262caef83e32d2b26429b109150a..aa859f70473a889208fdd09d35e7baa083d8dbd8 100644 --- a/module/VuFind/src/VuFind/Cover/Generator.php +++ b/module/VuFind/src/VuFind/Cover/Generator.php @@ -712,9 +712,9 @@ class Generator $bc = str_split($bc); for ($k = 0;$k < 4;$k++) { - $x = $k % 2 ? $halfWidth : $halfWidth - $boxWidth; + $x = $k % 2 ? $halfWidth : $halfWidth - $boxWidth; $y = $k / 2 < 1 ? $halfHeight : $halfHeight - $boxHeight; - $u = $k % 2 ? $boxWidth : -$boxWidth; + $u = $k % 2 ? $boxWidth : -$boxWidth; $v = $k / 2 < 1 ? $boxHeight : -$boxHeight; for ($i = 0;$i < 16;$i++) { if ($bc[$i] == "1") { diff --git a/module/VuFind/src/VuFind/Db/Table/ResourceTags.php b/module/VuFind/src/VuFind/Db/Table/ResourceTags.php index e42704dadc74a7ac8d3b18c6316ceebd130b4348..c7c2be073c15f59572058575cc400d65162aa25f 100644 --- a/module/VuFind/src/VuFind/Db/Table/ResourceTags.php +++ b/module/VuFind/src/VuFind/Db/Table/ResourceTags.php @@ -299,6 +299,30 @@ class ResourceTags extends Gateway $userId = null, $resourceId = null, $tagId = null ) { $callback = function ($select) use ($userId, $resourceId, $tagId) { + $select->columns( + [ + 'resource_id' => new Expression( + 'MAX(?)', ['resource_tags.resource_id'], + [Expression::TYPE_IDENTIFIER] + ), + 'tag_id' => new Expression( + 'MAX(?)', ['resource_tags.tag_id'], + [Expression::TYPE_IDENTIFIER] + ), + 'list_id' => new Expression( + 'MAX(?)', ['resource_tags.list_id'], + [Expression::TYPE_IDENTIFIER] + ), + 'user_id' => new Expression( + 'MAX(?)', ['resource_tags.user_id'], + [Expression::TYPE_IDENTIFIER] + ), + 'id' => new Expression( + 'MAX(?)', ['resource_tags.id'], + [Expression::TYPE_IDENTIFIER] + ) + ] + ); $select->join( ['r' => 'resource'], 'resource_tags.resource_id = r.id', @@ -313,8 +337,8 @@ class ResourceTags extends Gateway if (!is_null($tagId)) { $select->where->equalTo('resource_tags.tag_id', $tagId); } - $select->group(["resource_id"]); - $select->order(["title"]); + $select->group(['resource_id', 'title']); + $select->order(['title']); }; return $this->select($callback); } @@ -332,6 +356,30 @@ class ResourceTags extends Gateway { $callback = function ($select) use ($userId, $resourceId, $tagId) { + $select->columns( + [ + 'resource_id' => new Expression( + 'MAX(?)', ['resource_tags.resource_id'], + [Expression::TYPE_IDENTIFIER] + ), + 'tag_id' => new Expression( + 'MAX(?)', ['resource_tags.tag_id'], + [Expression::TYPE_IDENTIFIER] + ), + 'list_id' => new Expression( + 'MAX(?)', ['resource_tags.list_id'], + [Expression::TYPE_IDENTIFIER] + ), + 'user_id' => new Expression( + 'MAX(?)', ['resource_tags.user_id'], + [Expression::TYPE_IDENTIFIER] + ), + 'id' => new Expression( + 'MAX(?)', ['resource_tags.id'], + [Expression::TYPE_IDENTIFIER] + ) + ] + ); $select->join( ['t' => 'tags'], 'resource_tags.tag_id = t.id', @@ -346,8 +394,8 @@ class ResourceTags extends Gateway if (!is_null($tagId)) { $select->where->equalTo('resource_tags.tag_id', $tagId); } - $select->group(["tag_id"]); - $select->order(["tag"]); + $select->group(['tag_id', 'tag']); + $select->order(['tag']); }; return $this->select($callback); } @@ -364,6 +412,30 @@ class ResourceTags extends Gateway public function getUniqueUsers($userId = null, $resourceId = null, $tagId = null) { $callback = function ($select) use ($userId, $resourceId, $tagId) { + $select->columns( + [ + 'resource_id' => new Expression( + 'MAX(?)', ['resource_tags.resource_id'], + [Expression::TYPE_IDENTIFIER] + ), + 'tag_id' => new Expression( + 'MAX(?)', ['resource_tags.tag_id'], + [Expression::TYPE_IDENTIFIER] + ), + 'list_id' => new Expression( + 'MAX(?)', ['resource_tags.list_id'], + [Expression::TYPE_IDENTIFIER] + ), + 'user_id' => new Expression( + 'MAX(?)', ['resource_tags.user_id'], + [Expression::TYPE_IDENTIFIER] + ), + 'id' => new Expression( + 'MAX(?)', ['resource_tags.id'], + [Expression::TYPE_IDENTIFIER] + ) + ] + ); $select->join( ['u' => 'user'], 'resource_tags.user_id = u.id', @@ -378,8 +450,8 @@ class ResourceTags extends Gateway if (!is_null($tagId)) { $select->where->equalTo('resource_tags.tag_id', $tagId); } - $select->group(["user_id"]); - $select->order(["username"]); + $select->group(['user_id', 'username']); + $select->order(['username']); }; return $this->select($callback); } diff --git a/module/VuFind/src/VuFind/ILS/Driver/DAIA.php b/module/VuFind/src/VuFind/ILS/Driver/DAIA.php index 6dbdd76f062bd88c769700b3a76d908577ff3892..f76e83471926585fe0968354b92dc3a39b89d293 100644 --- a/module/VuFind/src/VuFind/ILS/Driver/DAIA.php +++ b/module/VuFind/src/VuFind/ILS/Driver/DAIA.php @@ -362,7 +362,7 @@ class DAIA extends AbstractBase implements { $http_headers = [ 'Content-type: ' . $this->contentTypesRequest[$this->daiaResponseFormat], - 'Accept: ' . $this->contentTypesRequest[$this->daiaResponseFormat], + 'Accept: ' . $this->contentTypesRequest[$this->daiaResponseFormat], ]; $params = [ diff --git a/module/VuFind/src/VuFind/ILS/Driver/Unicorn.php b/module/VuFind/src/VuFind/ILS/Driver/Unicorn.php index 139f90a487882ba7d5ebbeb0ca3e31402d903727..429f40e4f35d1447bff9055adb50f913d58b4dc8 100644 --- a/module/VuFind/src/VuFind/ILS/Driver/Unicorn.php +++ b/module/VuFind/src/VuFind/ILS/Driver/Unicorn.php @@ -322,7 +322,7 @@ class Unicorn extends AbstractBase implements \VuFindHttp\HttpServiceAwareInterf $cmp = create_function( '$a,$b', 'if ($a["shelving_key"] == $b["shelving_key"]) ' - . 'return $a["number"] - $b["number"];' + . 'return $a["number"] - $b["number"];' . 'return $a["shelving_key"] < $b["shelving_key"] ? 1 : -1;' ); usort($items, $cmp); diff --git a/module/VuFind/src/VuFind/ILS/Driver/Virtua.php b/module/VuFind/src/VuFind/ILS/Driver/Virtua.php index 2b957a8c4a802d37db28f347dad711895881b131..ec816b65964f521e63de5afa8b003a60e6c18121 100644 --- a/module/VuFind/src/VuFind/ILS/Driver/Virtua.php +++ b/module/VuFind/src/VuFind/ILS/Driver/Virtua.php @@ -1764,24 +1764,24 @@ class Virtua extends AbstractBase implements \VuFindHttp\HttpServiceAwareInterfa // Have to use raw post data because of the way // virtua expects the barcodes to come across. - $post_data = "function=" . "RENEWAL"; - $post_data .= "&search=" . "PATRON"; - $post_data .= "&sessionid=" . "$session_id"; - $post_data .= "&skin=" . "homepage"; - $post_data .= "&lng=" . $this->getConfiguredLanguage(); - $post_data .= "&inst=" . "consortium"; - $post_data .= "&conf=" . urlencode("./chameleon.conf"); - $post_data .= "&u1=" . "12"; + $post_data = "function=" . "RENEWAL"; + $post_data .= "&search=" . "PATRON"; + $post_data .= "&sessionid=" . "$session_id"; + $post_data .= "&skin=" . "homepage"; + $post_data .= "&lng=" . $this->getConfiguredLanguage(); + $post_data .= "&inst=" . "consortium"; + $post_data .= "&conf=" . urlencode("./chameleon.conf"); + $post_data .= "&u1=" . "12"; $post_data .= "&SourceScreen=" . "PATRONACTIVITY"; - $post_data .= "&pos=" . "1"; - $post_data .= "&patronid=" . $patron['cat_username']; + $post_data .= "&pos=" . "1"; + $post_data .= "&patronid=" . $patron['cat_username']; $post_data .= "&patronhost=" . urlencode($this->config['Catalog']['patron_host']); $post_data .= "&host=" . urlencode($this->config['Catalog']['host_string']); - $post_data .= "&itembarcode=" . implode("&itembarcode=", $item_list); - $post_data .= "&submit=" . "Renew"; - $post_data .= "&reset=" . "Clear"; + $post_data .= "&itembarcode=" . implode("&itembarcode=", $item_list); + $post_data .= "&submit=" . "Renew"; + $post_data .= "&reset=" . "Clear"; $result = $this->httpRequest($virtua_url, null, $post_data); @@ -1832,7 +1832,7 @@ class Virtua extends AbstractBase implements \VuFindHttp\HttpServiceAwareInterfa } foreach ($result as $row) { - $list[] = 'vtls' . str_pad($row['AUTH_ID'], 9, "0", STR_PAD_LEFT); + $list[] = 'vtls' . str_pad($row['AUTH_ID'], 9, "0", STR_PAD_LEFT); } return $list; } diff --git a/module/VuFind/src/VuFind/ILS/Driver/VoyagerRestful.php b/module/VuFind/src/VuFind/ILS/Driver/VoyagerRestful.php index f5f509923747adc9eda732c03dc53dff38fad281..1a89aab9a4154432e32767edddcda6d63d3d91fc 100644 --- a/module/VuFind/src/VuFind/ILS/Driver/VoyagerRestful.php +++ b/module/VuFind/src/VuFind/ILS/Driver/VoyagerRestful.php @@ -2449,7 +2449,7 @@ EOT; ? $details['level'] : 'copy'; $itemId = isset($details['item_id']) ? $details['item_id'] : false; $mfhdId = isset($details['holdings_id']) ? $details['holdings_id'] : false; - $comment = $details['comment']; + $comment = isset($details['comment']) ? $details['comment'] : ''; $bibId = $details['id']; // Make Sure Pick Up Location is Valid diff --git a/module/VuFind/src/VuFind/Search/Tags/Results.php b/module/VuFind/src/VuFind/Search/Tags/Results.php index abcd59608fa3d69cd5564d923148273bfb245511..fd69d91e2d632dbbe1163c7b23f5b25880f19007 100644 --- a/module/VuFind/src/VuFind/Search/Tags/Results.php +++ b/module/VuFind/src/VuFind/Search/Tags/Results.php @@ -48,7 +48,7 @@ class Results extends BaseResults protected function performSearch() { $table = $this->getTable('Tags'); - $tag = $table->getByText($this->getParams()->getDisplayQuery()); + $tag = $table->getByText($this->getParams()->getDisplayQuery(), false); if (!empty($tag)) { $rawResults = $tag->getResources(null, $this->getParams()->getSort()); } else { diff --git a/module/VuFind/src/VuFind/Service/Factory.php b/module/VuFind/src/VuFind/Service/Factory.php index dd7ca59983f8ac5704cbbf251fab49c5c7e4a667..13ad96c8f6668dfb413fc2381bd9e9f4c94484eb 100644 --- a/module/VuFind/src/VuFind/Service/Factory.php +++ b/module/VuFind/src/VuFind/Service/Factory.php @@ -859,7 +859,7 @@ class Factory // Set up the ExtendedIni plugin: $config = $sm->get('VuFind\Config')->get('config'); $pathStack = [ - APPLICATION_PATH . '/languages', + APPLICATION_PATH . '/languages', LOCAL_OVERRIDE_DIR . '/languages' ]; $fallbackLocales = $config->Site->language == 'en' diff --git a/module/VuFind/src/VuFind/XSLT/Import/VuFind.php b/module/VuFind/src/VuFind/XSLT/Import/VuFind.php index 2a507eaed2c77cfffe84a1ff6690584d69b8b676..4862649f466a7a3ea3a0ee1cabfda80476c28ce7 100644 --- a/module/VuFind/src/VuFind/XSLT/Import/VuFind.php +++ b/module/VuFind/src/VuFind/XSLT/Import/VuFind.php @@ -366,7 +366,9 @@ class VuFind { static $articles = ['a', 'an', 'the']; - $text = strtolower(trim($in)); + $text = is_callable('mb_strtolower') + ? mb_strtolower(trim($in), 'UTF-8') + : strtolower(trim($in)); foreach ($articles as $a) { if (substr($text, 0, strlen($a) + 1) == ($a . ' ')) { diff --git a/module/VuFindDevTools/src/VuFindDevTools/Controller/DevtoolsController.php b/module/VuFindDevTools/src/VuFindDevTools/Controller/DevtoolsController.php index 3003ae5c32c9055ea5f26731f0cf9abbec171714..752bb3eb3a175a122652088a64a90bd63f3736a3 100644 --- a/module/VuFindDevTools/src/VuFindDevTools/Controller/DevtoolsController.php +++ b/module/VuFindDevTools/src/VuFindDevTools/Controller/DevtoolsController.php @@ -89,7 +89,7 @@ class DevtoolsController extends \VuFind\Controller\AbstractBase public function languageAction() { // Test languages with no local overrides and no fallback: - $loader = new ExtendedIni([APPLICATION_PATH . '/languages']); + $loader = new ExtendedIni([APPLICATION_PATH . '/languages']); $helper = new LanguageHelper($loader, $this->getConfig()); return $helper->getAllDetails($this->params()->fromQuery('main', 'en')); } diff --git a/module/VuFindDevTools/src/VuFindDevTools/LanguageHelper.php b/module/VuFindDevTools/src/VuFindDevTools/LanguageHelper.php index 222b746d9c525ec1f130c8d6b5418e167d192a6c..6628e741680c9496a1c71eb322a33aa2857afbdb 100644 --- a/module/VuFindDevTools/src/VuFindDevTools/LanguageHelper.php +++ b/module/VuFindDevTools/src/VuFindDevTools/LanguageHelper.php @@ -178,7 +178,7 @@ class LanguageHelper { static $domains = false; if (!$domains) { - $base = APPLICATION_PATH . '/languages'; + $base = APPLICATION_PATH . '/languages'; $dir = opendir($base); $domains = []; while ($current = readdir($dir)) { diff --git a/module/VuFindTheme/src/VuFindTheme/LessCompiler.php b/module/VuFindTheme/src/VuFindTheme/LessCompiler.php index cdcd2ba2b99b07a5ee8ede49d2cd7658c3bc113b..17c4b3830cd8afa17c946ea6185d92821df0e1cb 100644 --- a/module/VuFindTheme/src/VuFindTheme/LessCompiler.php +++ b/module/VuFindTheme/src/VuFindTheme/LessCompiler.php @@ -181,7 +181,7 @@ class LessCompiler list($fileName, ) = explode('.', $less); $finalFile = $finalOutDir . $fileName . '.css'; - $this->logMessage("\tcompiling '" . $less . "' into '" . $finalFile . "'"); + $this->logMessage("\tcompiling '" . $less . "' into '" . $finalFile . "'"); $start = microtime(true); $directories = []; diff --git a/packages/DEBIAN/changelog b/packages/DEBIAN/changelog index 8524042a4452492bdf92b24e9c862c9bd62ca08a..06dce5e387af115f9d83a202d0b134fbda5306c1 100644 --- a/packages/DEBIAN/changelog +++ b/packages/DEBIAN/changelog @@ -1,3 +1,15 @@ +vufind 3.0.3 distribution; urgency=low + + * VuFind 3.0.3 release (see http://vufind.org/wiki/changelog for details) + + -- maintainer VuFind Project Administration Team <vufind-admins@lists.sourceforge.net> Mo 1 Aug 2016 09:01:21 UTC + +vufind 3.0.2 distribution; urgency=low + + * VuFind 3.0.2 release (see http://vufind.org/wiki/changelog for details) + + -- maintainer VuFind Project Administration Team <vufind-admins@lists.sourceforge.net> Tu 5 Jul 2016 12:02:33 UTC + vufind 3.0.1 distribution; urgency=low * VuFind 3.0.1 release (see http://vufind.org/wiki/changelog for details) diff --git a/packages/DEBIAN/control b/packages/DEBIAN/control index 9016c826dd19a96e416cca31060f97c4b9b82eca..059764350cc8d0b5fb97766472d0dfbfa932ea55 100644 --- a/packages/DEBIAN/control +++ b/packages/DEBIAN/control @@ -1,5 +1,5 @@ Package: vufind -Version: 3.0.1 +Version: 3.0.3 Section: World Wide Web Priority: Optional Architecture: all diff --git a/themes/bootstrap3/templates/admin/tags/list.phtml b/themes/bootstrap3/templates/admin/tags/list.phtml index dac9f69aa2c79909cb4baeb22b07ddf11f81b69a..b6eb25e25951845b834526ac9fc1f4c39c686a92 100644 --- a/themes/bootstrap3/templates/admin/tags/list.phtml +++ b/themes/bootstrap3/templates/admin/tags/list.phtml @@ -53,7 +53,8 @@ </select> </div> <div class="col-sm-3"> - <input type="submit" value="<?=$this->transEsc('Filter')?>" class="btn btn-primary"> + <label for="taglistsubmit"> </label><br /> + <input type="submit" id="taglistsubmit" value="<?=$this->transEsc('Filter')?>" class="btn btn-primary"> <? if((isset($this->params['user_id']) && !is_null($this->params['user_id'])) || (isset($this->params['tag_id']) && !is_null($this->params['tag_id'])) || (isset($this->params['resource_id']) && !is_null($this->params['resource_id']))):?> <a href="<?= $this->url('admin/tags', array('action' => 'List')); ?>"><?=$this->translate('clear_tag_filter')?></a> <? endif;?> diff --git a/themes/bootstrap3/templates/cart/export.phtml b/themes/bootstrap3/templates/cart/export.phtml index fc66aa6a5c3f5fa3a309007153244d97b8a5729a..bc064adfe8b7bb4b8b6522af771fc7bbd78c293c 100644 --- a/themes/bootstrap3/templates/cart/export.phtml +++ b/themes/bootstrap3/templates/cart/export.phtml @@ -39,15 +39,17 @@ <label for="format" class="col-sm-3 control-label"><?=$this->transEsc('Format')?>:</label> <div class="col-sm-9"> <select name="format" id="format" class="form-control"> + <? $firstOption = null; ?> <? foreach ($this->exportOptions as $exportOption): ?> - <option value="<?=$this->escapeHtmlAttr($exportOption)?>"><?=$this->transEsc($this->export()->getLabelForFormat($exportOption))?></option> + <? if ($firstOption == null) $firstOption = $exportOption; ?> + <option value="<?=$this->escapeHtmlAttr($exportOption)?>"<? if($this->export()->needsRedirect($exportOption)): ?> data-redirect<? endif; ?>><?=$this->transEsc($this->export()->getLabelForFormat($exportOption))?></option> <? endforeach; ?> </select> </div> </div> <div class="form-group"> <div class="col-sm-9 col-sm-offset-3"> - <input class="btn btn-default" type="submit" name="submit" value="<?=$this->transEsc('Export')?>"/> + <input class="export btn btn-default" type="submit" name="submit" value="<?=$this->transEsc('Export')?>"<? if($this->export()->needsRedirect($firstOption)): ?> data-lightbox-ignore<? endif; ?>/> </div> </div> </form> @@ -56,6 +58,13 @@ $script = <<<JS $('button.btn.hidden').removeClass('hidden'); $('#itemhide').removeClass('in'); + $('#format').change(function exportFormatChange(e) { + if (this.selectedOptions[0].getAttribute('data-redirect') === null) { + $('.export.btn').removeAttr('data-lightbox-ignore'); + } else { + $('.export.btn').attr('data-lightbox-ignore', '1'); + } + }); JS; ?> <?=$this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $script, 'SET') ?> \ No newline at end of file diff --git a/themes/bootstrap3/templates/upgrade/getsourcedir.phtml b/themes/bootstrap3/templates/upgrade/getsourcedir.phtml index e0bf64956b24479275cfc090124cb24f5345e76e..4ac38abb410e09868fe948ab20911aaebe822feb 100644 --- a/themes/bootstrap3/templates/upgrade/getsourcedir.phtml +++ b/themes/bootstrap3/templates/upgrade/getsourcedir.phtml @@ -13,7 +13,7 @@ <input type="text" name="sourcedir" /> <input class="btn btn-default" type="submit" /> </form> <hr /> -<h3>Option 2: Upgrade from VuFind 2.x</h3> +<h3>Option 2: Upgrade from VuFind 2.x or newer</h3> <form class="form-inline" method="post" action="<?=$this->url('upgrade-getsourceversion')?>"> <p> Please enter the version number you are upgrading from (e.g. 2.0.1): diff --git a/themes/foundation5/scss/default.scss b/themes/foundation5/scss/default.scss index 122f85b7010a4d04de1e3ea987b943215dd77e8a..a755b79c918872942c19f5ad6e7ec4972161dc6e 100644 --- a/themes/foundation5/scss/default.scss +++ b/themes/foundation5/scss/default.scss @@ -183,9 +183,10 @@ ul { } } + // make sure it doesn't bleed through - fixme .active { -// background-color: $primary-color; -// color: $white !important; + background-color: $primary-color; + color: lighten($side-nav-link-color-active, 40%); z-index: 2; &:hover {background-color: lighten($secondary-color,5%);} @@ -915,17 +916,28 @@ img.recordcover { // SIDEBAR filters - "remove filters" .sidebar .filters { // first title reposition and borders - .title:first-of-type { border-left:1px solid $primary-color; border-right:1px solid $primary-color; border-top:1px solid $primary-color; padding-left: 1rem } + .title:first-of-type { + border-left:1px solid $primary-color; + border-right:1px solid $primary-color; + border-top:1px solid $primary-color; + padding-left: 1rem; + } // Sidebar filters highlight chosen filter ul.side-nav li .active { background-color: $primary-color; color: #fff; padding-left: 1rem; - span {padding-right:.27rem;padding-top:0;} - &:hover, &:focus { + + span { + padding-right: .27rem; + padding-top: 0; + } + + &:hover, + &:focus { background-color: lighten($primary-color,5%); color: invert($side-nav-link-color); - } + } } // Borders around remove-filters-button diff --git a/themes/foundation5/templates/admin/tags/checkbox.phtml b/themes/foundation5/templates/admin/tags/checkbox.phtml new file mode 100644 index 0000000000000000000000000000000000000000..838852bf5fb09ee096a927ef60c8dcefdc9def66 --- /dev/null +++ b/themes/foundation5/templates/admin/tags/checkbox.phtml @@ -0,0 +1,8 @@ +<!-- admin - tags - checkbox.phtml --> +<div class="checkbox"> + <label for="<?=$this->prefix?>checkbox_<?=$this->tag['id']?>"> + <input id="<?=$this->prefix?>checkbox_<?=$this->tag['id']?>" type="checkbox" name="ids[]" value="<?=$this->escapeHtmlAttr($this->tag['id'])?>" class="checkbox_ui"/> + <input type="hidden" name="idsAll[]" value="<?=$this->escapeHtmlAttr($this->tag['id'])?>" /> + </label> +</div> +<!-- admin - tags - checkbox.phtml - END --> \ No newline at end of file diff --git a/themes/foundation5/templates/admin/tags/home.phtml b/themes/foundation5/templates/admin/tags/home.phtml new file mode 100644 index 0000000000000000000000000000000000000000..fa16398d71d5dc147f59174cc28aad26893335bf --- /dev/null +++ b/themes/foundation5/templates/admin/tags/home.phtml @@ -0,0 +1,35 @@ +<!-- admin - tags - home.phtml --> +<? + // Set page title. + $this->headTitle($this->translate('VuFind Administration - Tag Management')); +?> +<div class="row"> + <div class="<?=$this->layoutClass('mainbody')?>"> + <h2><?=$this->translate('Tag Management')?></h2> + + <?=$this->render("admin/tags/menu.phtml")?> + + <h3><?=$this->translate('Statistics')?></h3> + <table> + <tr> + <th><?=$this->transEsc('total_users')?></th> + <th><?=$this->transEsc('total_resources')?></th> + <th><?=$this->transEsc('total_tags')?></th> + <th><?=$this->transEsc('unique_tags')?></th> + <th><?=$this->transEsc('anonymous_tags')?></th> + </tr> + <tr> + <td><?=$statistics['users']?></td> + <td><?=$statistics['resources']?></td> + <td><?=$statistics['total']?></td> + <td><?=$statistics['unique']?></td> + <td><?=$statistics['anonymous']?></td> + </tr> + </table> + </div> + + <div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->render("admin/menu.phtml")?> + </div> +</div> +<!-- admin - tags - home.phtml - END --> \ No newline at end of file diff --git a/themes/foundation5/templates/admin/tags/list.phtml b/themes/foundation5/templates/admin/tags/list.phtml new file mode 100644 index 0000000000000000000000000000000000000000..cd9ab0753b3d516cf99ef0b1be33fe7d800042f7 --- /dev/null +++ b/themes/foundation5/templates/admin/tags/list.phtml @@ -0,0 +1,112 @@ +<!-- admin - tags - list.phtml --> +<?php + // Set page title. + $this->headTitle($this->translate('VuFind Administration - Tag Management')); +?> + +<div class="row"> + <div class="<?=$this->layoutClass('mainbody')?>"> + <h2><?=$this->translate('Tag Management')?></h2> + <h3><?=$this->translate('List Tags')?></h3> + + <?=$this->render("admin/tags/menu.phtml")?> + + <?=$this->flashmessages()?> + + <div class="tagForm"> + <form action="<?= $this->url('admin/tags', array('action' => 'List'))?>" method="get"> + + <fieldset> + <legend><?=$this->translate('filter_tags')?></legend> + + <div class="row"> + <div class="medium-3 columns"> + <label for="user_id"><?=$this->translate('Username')?></label> + <select name="user_id" id="user_id"> + <option value="ALL"><?=$this->translate('All')?></option> + <? foreach($this->uniqueUsers as $user):?> + <option value="<?= $user['user_id'] ?>"<? if(isset($this->params['user_id']) && $user['user_id'] == $this->params['user_id']): ?> selected="selected"<? endif;?>> + <?=$user['username'] ?> + </option> + <? endforeach;?> + </select> + </div> + <div class="medium-3 columns"> + <label for="tag_id"><?=$this->translate('Tag')?></label> + <select name="tag_id" id="tag_id"> + <option value="ALL"><?=$this->translate('All')?></option> + <? foreach($this->uniqueTags as $tag):?> + <option value="<?= $tag['tag_id'] ?>"<? if(isset($this->params['tag_id']) && $tag['tag_id'] == $this->params['tag_id']): ?> selected="selected"<? endif;?>> + <?=$tag['tag'] ?> + </option> + <? endforeach;?> + </select> + </div> + <div class="medium-3 columns"> + <label for="resource_id"><?=$this->translate('Title')?></label> + <select name="resource_id" id="resource_id"> + <option value="ALL"><?=$this->translate('All')?></option> + <? foreach($this->uniqueResources as $resource):?> + <option value="<?= $resource['resource_id']; ?>" title="<?=$resource['title'] ?>"<? if(isset($this->params['resource_id']) && $resource['resource_id'] == $this->params['resource_id']): ?> selected="selected"<? endif;?>> + <?=$this->truncate($resource['title'], 80) ?> (<?=$resource['resource_id'] ?>) + </option> + <? endforeach;?> + </select> + </div> + <div class="medium-3 columns"> + <label for="taglistsubmit"> </label> + <input type="submit" id="taglistsubmit" value="<?=$this->transEsc('Filter')?>" class="button small"> + <? if((isset($this->params['user_id']) && !is_null($this->params['user_id'])) || (isset($this->params['tag_id']) && !is_null($this->params['tag_id'])) || (isset($this->params['resource_id']) && !is_null($this->params['resource_id']))):?> + <a href="<?= $this->url('admin/tags', array('action' => 'List')); ?>"><?=$this->translate('clear_tag_filter')?></a> + <? endif;?> + </div> + </div> + + </fieldset> + + </form> + </div> + + <? if(count($this->results) > 0):?> + <div class="tagsList"> + <form action="<?= $this->url('admin/tags', array('action' => 'Delete'))?>" method="post"> + <input type="hidden" name="user_id" value="<?=isset($this->params['user_id']) ? $this->params['user_id'] : '' ?>" /> + <input type="hidden" name="tag_id" value="<?=isset($this->params['tag_id']) ? $this->params['tag_id'] : '' ?>" /> + <input type="hidden" name="resource_id" value="<?=isset($this->params['resource_id']) ? $this->params['resource_id'] : '' ?>" /> + <input type="hidden" name="origin" value="list" /> + + <table> + <tr> + <th> </th> + <th><?=$this->translate('Username')?></th> + <th><?=$this->translate('Tag')?></th> + <th><?=$this->translate('Title')?></th> + </tr> + + <? foreach ($this->results as $tag): ?> + <tr> + <td><?=$this->render('admin/tags/checkbox', array('tag'=>$tag)) ; ?></td> + <td><?=$tag->username ?> (<?= $tag->user_id?>)</td> + <td><?=$tag->tag?> (<?= $tag->tag_id?>)</td> + <td><?=$tag->title?> (<?= $tag->resource_id?>)</td> + </tr> + <? endforeach;?> + </table> + + <input type="submit" name="deleteSelected" value="<?=$this->transEsc('delete_selected')?>" class="button small"> + <input type="submit" name="deletePage" value="<?=$this->transEsc('delete_page')?>" class="button small"> + <input type="submit" name="deleteFilter" value="<?=$this->transEsc('delete_all')?>" class="button small"> + + </form> + </div> + <?=$this->paginationControl($this->results, 'Sliding', 'Helpers/pagination.phtml', array('params' => $this->params))?> + <? else:?> + <p><?=$this->translate('tag_filter_empty')?></p> + <? endif;?> + </div> + + <div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->render("admin/menu.phtml")?> + </div> +</div> +<!-- admin - tags - list.phtml - END --> \ No newline at end of file diff --git a/themes/foundation5/templates/admin/tags/manage.phtml b/themes/foundation5/templates/admin/tags/manage.phtml new file mode 100644 index 0000000000000000000000000000000000000000..23756ecc370c81f521b1ae50602a121969773765 --- /dev/null +++ b/themes/foundation5/templates/admin/tags/manage.phtml @@ -0,0 +1,93 @@ +<!-- admin - tags - manage.phtml --> +<? + // Set page title. + $this->headTitle($this->translate('VuFind Administration - Tag Maintenance')); +?> +<div class="row"> + <div class="<?=$this->layoutClass('mainbody')?>"> + <h2><?=$this->translate('Tag Management')?></h2> + <h3><?=$this->translate('Manage Tags')?></h3> + + <?=$this->render("admin/tags/menu.phtml")?> + + <?=$this->flashmessages()?> + + <form action="<?= $this->url('admin/tags', array('action' => 'Manage'));?>" method="post" role="form"> + <div class="row"> + <label for="type" class="medium-2 columns"><?=$this->translate('delete_tags_by')?>:</label> + <div class="medium-6 columns"> + <select id="type" name="type"> + <option value="user" <? if("user" == $this->type) echo " selected=selected";?>><?=$this->translate('Username')?></option> + <option value="tag" <? if("tag" == $this->type) echo " selected=selected";?>><?=$this->translate('Tag')?></option> + <option value="resource" <? if("resource" == $this->type) echo " selected=selected";?>><?=$this->translate('Title')?></option> + </select> + </div> + <div class="medium-4 columns"> + <input type="submit" value="<?=$this->translate('Submit')?>" class="button small"/> + </div> + </div> + </form> + + <? if(false !== $this->type):?> + <form action="<?= $this->url('admin/tags', array('action' => 'Delete'))?>" method="post"> + <input type="hidden" name="origin" value="manage" /> + <input type="hidden" name="type" value="<?= $this->type; ?>" /> + <? if("user" == $type):?> + <div class="row"> + <label for="user_id" class="medium-2 columns"><?=$this->translate('Username')?></label> + <div class="medium-6 columns"> + <select name="user_id" id="user_id"> + <? foreach($this->uniqueUsers as $user):?> + <option value="<?= $user['user_id'] ?>"> + <?= $user['username'] ?> + </option> + <? endforeach;?> + </select> + </div> + <div class="medium-4 columns"> + <input type="submit" name="deleteFilter" value="<?=$this->translate('delete_tags')?>" class="button small"/> + </div> + </div> + <? elseif("tag" == $type):?> + <div class="row"> + <label for="tag_id" class="medium-2 columns"><?=$this->translate('Tag')?></label> + <div class="medium-6 columns"> + <select name="tag_id" id="tag_id"> + <? foreach($this->uniqueTags as $tag):?> + <option value="<?= $tag['tag_id'] ?>"> + <?= $tag['tag'] ?> + </option> + <? endforeach;?> + </select> + </div> + <div class="medium-4 columns"> + <input type="submit" name="deleteFilter" value="<?=$this->translate('delete_tags')?>" class="button small"/> + </div> + </div> + <? elseif("resource" == $type):?> + <div class="row"> + <label for="resource_id" class="medium-2 columns"><?=$this->translate('Title')?></label> + <div class="medium-6 columns"> + <select name="resource_id" id="resource_id"> + <? foreach($this->uniqueResources as $resource):?> + <option value="<?=$resource['resource_id'] ?>" title="<?=$resource['title'] ?>"> + <?=$this->truncate($resource['title'], 80) ?> (<?= $resource['resource_id'] ?>) + </option> + <? endforeach;?> + </select> + </div> + <div class="medium-4 columns"> + <input type="submit" name="deleteFilter" value="<?=$this->translate('delete_tags')?>" class="button small"/> + </div> + </div> + <? endif;?> + </form> + <? endif;?> + + </div> + + <div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->render("admin/menu.phtml")?> + </div> +</div> +<!-- admin - tags - manage.phtml - END --> \ No newline at end of file diff --git a/themes/foundation5/templates/admin/tags/menu.phtml b/themes/foundation5/templates/admin/tags/menu.phtml new file mode 100644 index 0000000000000000000000000000000000000000..bcc61572ef0d80f4250511e7aaf9a4885f1cc1d1 --- /dev/null +++ b/themes/foundation5/templates/admin/tags/menu.phtml @@ -0,0 +1,8 @@ +<!-- admin - tags - toolbar.phtml --> +<div class="toolbar"> + <dl class="nav sub-nav"> + <dd<?=strtolower($this->layout()->templateName) == "tagslist" ? ' class="active"' : ''?>><a href="<?=$this->url('admin/tags', array('action' => 'List'))?>"><?=$this->transEsc('List Tags')?></a></dd> + <dd<?=strtolower($this->layout()->templateName) == "tagsmanage" ? ' class="active"' : ''?>><a href="<?=$this->url('admin/tags', array('action' => 'Manage'))?>"><?=$this->transEsc('Manage Tags')?></a></dd> + </dl> +</div> +<!-- admin - tags - toolbar.phtml - END --> \ No newline at end of file diff --git a/themes/foundation5/templates/cart/export.phtml b/themes/foundation5/templates/cart/export.phtml index 28c2166fc8958b0dc79eca8e70070a5b3c525786..4b2e2791e8ffef781671b2c7697d238d41500f15 100644 --- a/themes/foundation5/templates/cart/export.phtml +++ b/themes/foundation5/templates/cart/export.phtml @@ -24,7 +24,7 @@ $this->layout()->breadcrumbs = '<li>' . $this->searchMemory()->getLastSearchLink <button type="button" class="button secondary small hide" data-dropdown="itemhide" aria-controls="itemhide" aria-expanded="false"> <?=count($this->records).' '.$this->transEsc('items') ?> </button> - <ul id="itemhide" class="f-dropdown" data-dropdown-content aria-hidden="true" tabindex="-1"> + <ul id="itemhide" class="f-dropdown open" data-dropdown-content aria-hidden="true" tabindex="-1"> <? foreach ($this->records as $current): ?> <li><?=$this->escapeHtml($current->getBreadcrumb())?></li> <? endforeach; ?> @@ -39,14 +39,15 @@ $this->layout()->breadcrumbs = '<li>' . $this->searchMemory()->getLastSearchLink <div class="medium-9 columns"> <select name="format" id="format" class="auto-width"> <? foreach ($this->exportOptions as $exportOption): ?> - <option value="<?=$this->escapeHtmlAttr($exportOption)?>"><?=$this->transEsc($this->export()->getLabelForFormat($exportOption))?></option> + <? if ($firstOption == null) $firstOption = $exportOption; ?> + <option value="<?=$this->escapeHtmlAttr($exportOption)?>"<? if($this->export()->needsRedirect($exportOption)): ?> data-redirect<? endif; ?>><?=$this->transEsc($this->export()->getLabelForFormat($exportOption))?></option> <? endforeach; ?> </select> </div> </div> <div class="row"> <div class="medium-9 columns medium-offset-3"> - <input class="button secondary small" type="submit" name="submit" value="<?=$this->transEsc('Export')?>"/> + <input class="button secondary small" type="submit" name="submit" value="<?=$this->transEsc('Export')?>" <? if($this->export()->needsRedirect($firstOption)): ?> data-lightbox-ignore<? endif; ?>/> </div> </div> </form> @@ -54,6 +55,14 @@ $this->layout()->breadcrumbs = '<li>' . $this->searchMemory()->getLastSearchLink <? $script = <<<JS $('button.button.hide').removeClass('hide'); + $('#itemhide').removeClass('open'); + $('#format').change(function exportFormatChange(e) { + if (this.selectedOptions[0].getAttribute('data-redirect') === null) { + $('.export.button').removeAttr('data-lightbox-ignore'); + } else { + $('.export.button').attr('data-lightbox-ignore', '1'); + } + }); JS; ?> <?=$this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $script, 'SET') ?> diff --git a/themes/foundation5/templates/devtools/deminify.phtml b/themes/foundation5/templates/devtools/deminify.phtml new file mode 100644 index 0000000000000000000000000000000000000000..daf211ce6f01a74cf93414a10be1ace95755a225 --- /dev/null +++ b/themes/foundation5/templates/devtools/deminify.phtml @@ -0,0 +1,39 @@ +<? + $this->headTitle('Deminifier'); +?> + +<h2>Deminifier</h2> + +<? if (!$min): ?> + <form method='POST'> + Minified text: + <textarea name="min"></textarea> + <input type="submit" /> + </form> +<? else: ?> + <h3>Minified Object</h3> + <pre><? print_r($min) ?></pre> +<? endif; ?> + +<? if ($results): ?> + <h3>Results Object</h3> + <p>Class: <?=get_class($results)?></p> +<? endif; ?> + +<? if ($query): ?> + <h3>Query Object</h3> + <pre><? print_r($query) ?></pre> +<? endif; ?> + +<? if ($backendParams || $queryParams): ?> + <h3>Backend Parameters</h3> + <? if ($queryParams): ?> + <h4>Query Parameters</h4> + <pre><? print_r($queryParams) ?></pre> + <? endif ; ?> + <? if ($backendParams): ?> + <h4>Non-query Parameters</h4> + <pre><? print_r($backendParams) ?></pre> + <? endif ; ?> +<? endif; ?> + diff --git a/themes/foundation5/templates/upgrade/getsourcedir.phtml b/themes/foundation5/templates/upgrade/getsourcedir.phtml index f8800a7e25c7b172930dd99872332f36c0032235..32fb4324f8c2d14c3488c3ad382a045ead3d4c93 100644 --- a/themes/foundation5/templates/upgrade/getsourcedir.phtml +++ b/themes/foundation5/templates/upgrade/getsourcedir.phtml @@ -13,7 +13,7 @@ $this->layout()->breadcrumbs = '<li><a href="' . $this->url('upgrade-home') . '" <input type="text" name="sourcedir"/> <input class="button secondary small" type="submit" aria-label="submit form"/> </form> <hr /> -<h3>Option 2: Upgrade from VuFind 2.x</h3> +<h3>Option 2: Upgrade from VuFind 2.x or newer</h3> <form class="form-inline" method="post" action="<?=$this->url('upgrade-getsourceversion')?>"> <p> Please enter the version number you are upgrading from (e.g. 2.0.1): diff --git a/themes/root/templates/HelpTranslations/ar/advsearch.phtml b/themes/root/templates/HelpTranslations/ar/advsearch.phtml index be6eef7bab0c9534008fbc217d38a75af474bfc8..d99289abcfef191e9bde7797c1ac1251f419f39e 100644 --- a/themes/root/templates/HelpTranslations/ar/advsearch.phtml +++ b/themes/root/templates/HelpTranslations/ar/advsearch.phtml @@ -8,7 +8,7 @@ <dl class="Content"> <dt><a name="Search Fields"></a>Øقول البØØ«</dt> <dd> - <p>Øين تقوم بزيارة صÙØØ© البØØ« المتقدم لأول مرة، سو٠تظهر لك العديد من Øقول البØØ«. ÙÙŠ كل Øقل يمكنك كتابة الكلمات المÙتاØية التي ترغب ÙÙŠ البØØ« عنها، مع إمكانية استخدام <a href="Home?topic=search">معاملات البØØ«</a> + <p>Øين تقوم بزيارة صÙØØ© البØØ« المتقدم لأول مرة، سو٠تظهر لك العديد من Øقول البØØ«. ÙÙŠ كل Øقل يمكنك كتابة الكلمات المÙتاØية التي ترغب ÙÙŠ البØØ« عنها، مع إمكانية استخدام <a href="<?=$this->url('help-home')?>?topic=search">معاملات البØØ«</a> .</p> <p>يكون كل Øقل مصØوبا بقائمة منسدلة ØªØªÙŠØ Ù„Ùƒ تØديد الØقل (العنوان، المؤلÙØŒ إلخ) التي تود البØØ« عنها. يمكنك مزج ومطابقة أنواع البØØ« كيÙما تشاء.</p> <p>ÙŠØªÙŠØ Ù„Ùƒ إعداد "مطابقة" تØديد كيÙية التعامل مع الØقول المتعددة للبØØ«.</p> diff --git a/themes/root/templates/HelpTranslations/de/advsearch.phtml b/themes/root/templates/HelpTranslations/de/advsearch.phtml index 7315c61993e85f2ecd25ba40a02f16ea93db18db..eeae7847eb155ffe60400692152edcb877eee077 100644 --- a/themes/root/templates/HelpTranslations/de/advsearch.phtml +++ b/themes/root/templates/HelpTranslations/de/advsearch.phtml @@ -10,7 +10,7 @@ <dd> <p>Wenn Sie das erste Mal die erweiterte Suche aufrufen, erscheinen verschiedene Suchfelder. In jedem Feld können Sie einen Suchbegriff - eingeben. Folgende <a href="Home?topic=search">Suchoperatoren</a> + eingeben. Folgende <a href="<?=$this->url('help-home')?>?topic=search">Suchoperatoren</a> sind erlaubt.</p> <p>Jedes Eingabefeld ist mit einem Auswahlmenü versehen, mit welchem Sie das Suchfeld auswählen können (z.B. Titel, Autor). Sie können auch diff --git a/themes/root/templates/HelpTranslations/el/advsearch.phtml b/themes/root/templates/HelpTranslations/el/advsearch.phtml index 0e54ad51bebd8818c295860b4b86ac7c977599a6..4e9cab7f7c8e58e998737a8d1fae80109aaaf3d6 100644 --- a/themes/root/templates/HelpTranslations/el/advsearch.phtml +++ b/themes/root/templates/HelpTranslations/el/advsearch.phtml @@ -1,14 +1,16 @@ -<h1>ΣυμβουλÎÏ‚ ΣÏνθετης Αναζήτησης</h1> +<h1>ΣυμβουλÎÏ‚ ΣÏνθετης Αναζήτησης</h1> + <ul class="HelpMenu"> <li><a href="#Search Fields">Πεδία Αναζήτησης</a></li> <li><a href="#Search Groups">Ομάδες Αναζήτησης</a></li> -</ul> +</ul> + <dl class="Content"> <dt><a name="Search Fields"></a>Πεδία Αναζήτησης</dt> <dd> <p>Όταν επισκÎπτεστε αÏχικά τη σελίδα "ΣÏνθετη αναζήτηση", σας παÏουσιάζονται διάφοÏα πεδία ÎÏευνας. Σε κάθε πεδίο, μποÏείτε να πληκτÏολογήσετε τις λÎξεις-κλειδιά που - θÎλετε να αναζητήσετε. <a href="Home?topic=search">ΤελεστÎÏ‚ Αναζήτησης</a> + θÎλετε να αναζητήσετε. <a href="<?=$this->url('help-home')?>?topic=search">ΤελεστÎÏ‚ Αναζήτησης</a> επιτÏÎπονται.</p> <p>Κάθε πεδίο συνοδεÏεται από Îνα drop-down menu που σας επιτÏÎπει να Ï€ÏοσδιοÏίζεται το είδος των δεδομÎνων (τίτλος, συγγÏαφÎας, κλπ.) που αναζητάτε. ΜποÏείτε να συνδυάσετε και @@ -21,7 +23,8 @@ </ul> <p>Η επιλογή "Î Ïοσθήκη Search Field" μποÏεί να χÏησιμοποιηθεί για να Ï€ÏοσθÎσετε επιπλÎον πεδία αναζήτησης στη φόÏμα. ΜποÏείτε να χÏησιμοποιήσετε όσα πεδία αναζήτησης όπως εσείς επιθυμείτε.</p> - </dd> + </dd> + <dt><a name="Search Groups"></a>Ομάδες Αναζήτησης</dt> <dd> <p>Για οÏισμÎνες σÏνθετες αναζητήσεις, Îνα ενιαίο σÏνολο πεδίων ÎÏευνας δεν είναι @@ -45,4 +48,5 @@ "Όλες οι ομάδες".</li> </ul> </dd> -</dl> +</dl> + diff --git a/themes/root/templates/HelpTranslations/en/advsearch.phtml b/themes/root/templates/HelpTranslations/en/advsearch.phtml index 6982652734ebf6c965e2cd42063c8d6d34b9cf34..64d18992d1ee1d79a94c99b367b30d671c7451eb 100644 --- a/themes/root/templates/HelpTranslations/en/advsearch.phtml +++ b/themes/root/templates/HelpTranslations/en/advsearch.phtml @@ -10,7 +10,7 @@ <dd> <p>When you first visit the Advanced Search page, you are presented with several search fields. In each field, you can type the keywords you - want to search for. <a href="Home?topic=search">Search operators</a> + want to search for. <a href="<?=$this->url('help-home')?>?topic=search">Search operators</a> are allowed.</p> <p>Each field is accompanied by a drop-down that lets you specify the type of data (title, author, etc.) you are searching for. You can mix and diff --git a/themes/root/templates/HelpTranslations/es/advsearch.phtml b/themes/root/templates/HelpTranslations/es/advsearch.phtml index 691d515ffb0a08888a63f83a5fccdf7b9347cd97..d90ce8e98aeec2384911c6e93aa0a212bad0f50a 100644 --- a/themes/root/templates/HelpTranslations/es/advsearch.phtml +++ b/themes/root/templates/HelpTranslations/es/advsearch.phtml @@ -9,7 +9,7 @@ <dt><a name="Search Fields"></a>Campos de Búsqueda</dt> <dd> <p>Visitando la Búsqueda Avanzada por primera vez, aparecen varios campos de búsqueda. - En cada campo puede introducir los términos de búsuqueda. Los <a href="Home?topic=search">Operadores de búsqueda</a> están permitidos. + En cada campo puede introducir los términos de búsuqueda. Los <a href="<?=$this->url('help-home')?>?topic=search">Operadores de búsqueda</a> están permitidos. </p> <p>Cada campo va acompañado de un listado con el cual se puede especificar el tipo de datos (tÃtulo, autor, etc.) que está buscando. En búsqueda avanzada puede combinar y ajustar los tipos de búsqueda según desea. diff --git a/themes/root/templates/HelpTranslations/fr/advsearch.phtml b/themes/root/templates/HelpTranslations/fr/advsearch.phtml index 9c1fecd8a4a9b868984255c8afa2ce56dd851726..1aa65e2bca239c776818e6baf413c3edb902f5dc 100644 --- a/themes/root/templates/HelpTranslations/fr/advsearch.phtml +++ b/themes/root/templates/HelpTranslations/fr/advsearch.phtml @@ -11,7 +11,7 @@ <p>Lorsque vous visitez la première fois la recherche avancée, plusieures champs de saisie vous sont présentés. Vous pouvez taper dans chaque champ de saisie tous les mots que vous désirez rechercher. Certaines - chaînes de caractères, ou <a href="Home?topic=search">« opérateurs »</a> + chaînes de caractères, ou <a href="<?=$this->url('help-home')?>?topic=search">« opérateurs »</a> , modifient le comportement VuFind. </p> <p>Chaque champ est accomapgner par un menu déroulant, avec lequel vous diff --git a/themes/root/templates/HelpTranslations/ga/advsearch.phtml b/themes/root/templates/HelpTranslations/ga/advsearch.phtml index ec81dfae9003457acb21d917acc895f0b4d2182f..cdc5bc7160f1227a31c211a4573c0ea7032f895b 100644 --- a/themes/root/templates/HelpTranslations/ga/advsearch.phtml +++ b/themes/root/templates/HelpTranslations/ga/advsearch.phtml @@ -9,7 +9,7 @@ <dl class="Content"> <dt><a name="Search Fields"></a>Cuardaigh RéimsÃ</dt> <dd> - <p>Cuirtear roinnt réimsà cuardaigh os do chomhair nuair a théann tú go leathanach an Chuardaigh Chasta. Féadfaidh tú na heochairfhocail atá uait a chlóscrÃobh i ngach réimse. CeadaÃtear <a href="Home?topic=search" onClick="return (false);">Oibreoirà cuardaigh</a> a úsáid</p> + <p>Cuirtear roinnt réimsà cuardaigh os do chomhair nuair a théann tú go leathanach an Chuardaigh Chasta. Féadfaidh tú na heochairfhocail atá uait a chlóscrÃobh i ngach réimse. CeadaÃtear <a href="<?=$this->url('help-home')?>?topic=search">Oibreoirà cuardaigh</a> a úsáid</p> <p>BÃonn roghchlár anuas in éineacht le gach réimse, a chuireann ar do chumas an cineál sonra (teideal, údar, srl.) atá uait a shonrú. Féadfaidh tú na cineálacha éagsúla cuardaigh a úsáid in éineacht le chéile cibé bealach is mian leat.</p> <p>Cuireann an socrú “Meaitseáil†ar do chumas a shonrú conas ilraonta cuardaigh a láimhseáil.</p> <ul> @@ -19,7 +19,7 @@ </ul> <p>Is féidir an cnaipe “Cuir Réimse Cuardaigh Leis†a úsáid chun réimsà cuardaigh breise a chur leis an bhfoirm. Féadfaidh tú an oiread réimsà cuardaigh a úsáid agus is mian leat.</p> </dd> - + <dt><a name="Search Groups"></a>Grúpaà Cuardaigh</dt> <dd> <p>D’fhéadfadh sé tarlú nach leor tacar amháin réimsà cuardaigh i gcomhair cuardach casta áirithe. Cuir is gcás, mar shampla, dá mba mhian leat leabhair a fháil faoi stair na SÃne nó na hIndia. Dá ndéanfá cuardach ‘GACH Téarma’ i gcomhair na SÃne, na hIndia, agus na Staire nà bhfaighfeá ach leabhair faoin tSÃn AGUS faoin India. Dá ndéanfá cuardach AON Téarma gheofá leabhair staire nach raibh baint ar bith acu leis an tSÃn nó leis an India.</p> @@ -31,4 +31,4 @@ <li>Déan deimhin de go bhfuil “GACH Grúpa†mar shocrú meaitseála agat ag ceanntásc na nGrúpaà Cuardaigh.</li> </ul> </dd> -</dl> \ No newline at end of file +</dl> \ No newline at end of file diff --git a/themes/root/templates/HelpTranslations/it/advsearch.phtml b/themes/root/templates/HelpTranslations/it/advsearch.phtml index b49c0d0421846f794cd4a7b30b0ab7d60d5ff943..8949372d67ffeebea92b4eb886da7dc428e916ec 100644 --- a/themes/root/templates/HelpTranslations/it/advsearch.phtml +++ b/themes/root/templates/HelpTranslations/it/advsearch.phtml @@ -10,7 +10,7 @@ <dd> <p>La prima volta che vai alla pagina della ricerca avanzata ti si presentano una serie di campi di ricerca. In ciascuno di questi puoi digitare le parole chiave della ricerca che ti interessa fare. - Puoi utilizzare gli <a href="Home?topic=search">operatori</a> + Puoi utilizzare gli <a href="<?=$this->url('help-home')?>?topic=search">operatori</a> di ricerca.</p> <p>Ciascun campo è accompagnato da un menu a tendina che ti permette di specificare il tipo di dato (titolo, autore, etc.) che stai cercando. Puoi combinare la ricerca nel modo che preferisci.</p> diff --git a/themes/root/templates/HelpTranslations/ja/advsearch.phtml b/themes/root/templates/HelpTranslations/ja/advsearch.phtml index 6d686286c4358d302c93ba1685adddcc0e84ea80..d126fd0e008d2d6a7de4f532f48c49c6cbfaf06c 100644 --- a/themes/root/templates/HelpTranslations/ja/advsearch.phtml +++ b/themes/root/templates/HelpTranslations/ja/advsearch.phtml @@ -9,7 +9,7 @@ <dt><a name="Search Fields"></a>検索フィールド</dt> <dd> <p>最åˆã«è©³ç´°æ¤œç´¢ã‚’é¸ã¶ã¨ç”»é¢ã«ã¯3ã¤ã®æ¤œç´¢èªžå…¥åŠ›æ¬„ãŒã‚ã‚Šã¾ã™ã€‚ - å„入力欄ã«æ¤œç´¢ã™ã‚‹èªžå¥ã‚’入力ã—ã¾ã™ã€‚次ã®<a href="Home?topic=search">検索演算å</a>㌠+ å„入力欄ã«æ¤œç´¢ã™ã‚‹èªžå¥ã‚’入力ã—ã¾ã™ã€‚次ã®<a href="<?=$this->url('help-home')?>?topic=search">検索演算å</a>㌠使用ã§ãã¾ã™ã€‚</p> <p>å„検索語ã®æ¤œç´¢å¯¾è±¡ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ï¼ˆã‚¿ã‚¤ãƒˆãƒ«ã€è‘—者ãªã©ï¼‰ã¯ãƒ‰ãƒãƒƒãƒ—ダウンメニューã‹ã‚‰ é¸æŠžã§ãã¾ã™ã€‚</p> diff --git a/themes/root/templates/HelpTranslations/pt-br/advsearch.phtml b/themes/root/templates/HelpTranslations/pt-br/advsearch.phtml index fa99282ea070fe731dfabd5047b5519cb777ac8e..8fab823b349b9d3b72ae75e6dc783a91d4a469ce 100644 --- a/themes/root/templates/HelpTranslations/pt-br/advsearch.phtml +++ b/themes/root/templates/HelpTranslations/pt-br/advsearch.phtml @@ -10,7 +10,7 @@ <dd> <p>A página de Busca Avançada apresenta a vários campos de busca. Em cada campo pode-se digitar termos, a qual deseja buscar itens, relacioando-os a determinado metadado, - podendo fazer uso de <href="Home?topic=search">operadores de busca</a> + podendo fazer uso de <href="<?=$this->url('help-home')?>?topic=search">operadores de busca</a> </p> <p>Pode-se selecionar o tipo de metadado (tÃtulo, autor, etc.) para cada campo de busca, tornando a busca mais precisa.