From c7b9800aee5425a3964963c77c761f4439578b75 Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Thu, 1 Aug 2013 11:35:05 +0200 Subject: Extension manager: First draft of the extension class --- lib/plugins/extension/README | 27 +++ lib/plugins/extension/helper/extension.php | 289 +++++++++++++++++++++++++++++ lib/plugins/extension/plugin.info.txt | 7 + 3 files changed, 323 insertions(+) create mode 100644 lib/plugins/extension/README create mode 100644 lib/plugins/extension/helper/extension.php create mode 100644 lib/plugins/extension/plugin.info.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/README b/lib/plugins/extension/README new file mode 100644 index 000000000..5eefe924d --- /dev/null +++ b/lib/plugins/extension/README @@ -0,0 +1,27 @@ +extension Plugin for DokuWiki + +Extension manager + +All documentation for this plugin can be found at +https://www.dokuwiki.org/plugin:extension + +If you install this plugin manually, make sure it is installed in +lib/plugins/extension/ - if the folder is called different it +will not work! + +Please refer to http://www.dokuwiki.org/plugins for additional info +on how to install plugins in DokuWiki. + +---- +Copyright (C) Michael Hamann + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; version 2 of the License + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +See the COPYING file in your DokuWiki folder for details diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php new file mode 100644 index 000000000..2746837be --- /dev/null +++ b/lib/plugins/extension/helper/extension.php @@ -0,0 +1,289 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +/** + * Class helper_plugin_extension_extension represents a single extension (plugin or template) + */ +class helper_plugin_extension_extension extends DokuWiki_Plugin { + private $name; + private $is_template; + private $localInfo; + private $remoteInfo; + + /** + * @return bool false, this component is not a singleton + */ + public function isSingleton() { + return false; + } + + /** + * Set the name of the extension this instance shall represents, triggers loading the local and remote data + * + * @param string $name The base name of the extension + * @param bool $is_template If the extension is a template + * @return bool If some (local or remote) data was found + */ + public function setExtension($name, $is_template) { + $this->name = $name; + $this->is_template = $is_template; + } + + /** + * If the extension is installed locally + * + * @return bool If the extension is installed locally + */ + public function isInstalled() { + } + + /** + * If the extension should be updated, i.e. if an updated version is available + * + * @return bool If an update is available + */ + public function updateAvailable() { + return $this->getInstalledVersion() < $this->getLastUpdate(); + } + + /** + * If the extension is a template + * + * @return bool If this extension is a template + */ + public function isTemplate() { + return $this->is_template; + } + + // Data from plugin.info.txt/template.info.txt or the repo when not available locally + /** + * Get the basename of the extension + * + * @return string The basename + */ + public function getBase() { + } + + /** + * Get the display name of the extension + * + * @return string The display name + */ + public function getName() { + } + + /** + * Get the author name of the extension + * + * @return string The name of the author + */ + public function getAuthor() { + } + + /** + * Get the email of the author of the extension + * + * @return string The email address + */ + public function getEmail() { + } + + /** + * Get the description of the extension + * + * @return string The description + */ + public function getDescription() { + } + + /** + * Get the URL of the extension, usually a page on dokuwiki.org + * + * @return string The URL + */ + public function getURL() { + } + + /** + * Get the installed version of the extension + * + * @return string The version, usually in the form yyyy-mm-dd + */ + public function getInstalledVersion() { + } + + /** + * Get the names of the dependencies of this extension + * + * @return array The base names of the dependencies + */ + public function getDependencies() { + } + + /** + * Get the names of all conflicting extensions + * + * @return array The names of the conflicting extensions + */ + public function getConflicts() { + } + + /** + * Get the names of similar extensions + * + * @return array The names of similar extensions + */ + public function getSimilarPlugins() { + } + + /** + * Get the names of the tags of the extension + * + * @return array The names of the tags of the extension + */ + public function getTags() { + } + + /** + * Get the text of the security warning if there is any + * + * @return string|bool The security warning if there is any, false otherwise + */ + public function getSecurityWarning() { + } + + /** + * Get the text of the security issue if there is any + * + * @return string|bool The security issue if there is any, false otherwise + */ + public function getSecurityIssue() { + } + + /** + * Get the URL of the screenshot of the extension if there is any + * + * @return string|bool The screenshot URL if there is any, false otherwise + */ + public function getScreenshotURL() { + } + + /** + * Get the last used download URL of the extension if there is any + * + * @return string|bool The previously used download URL, false if the extension has been installed manually + */ + public function getLastDownloadURL() { + } + + /** + * Get the download URL of the extension if there is any + * + * @return string|bool The download URL if there is any, false otherwise + */ + public function getDownloadURL() { + } + + /** + * Get the bug tracker URL of the extension if there is any + * + * @return string|bool The bug tracker URL if there is any, false otherwise + */ + public function getBugtrackerURL() { + } + + /** + * Get the URL of the source repository if there is any + * + * @return string|bool The URL of the source repository if there is any, false otherwise + */ + public function getSourcerepoURL() { + } + + /** + * Get the donation URL of the extension if there is any + * + * @return string|bool The donation URL if there is any, false otherwise + */ + public function getDonationURL() { + } + + /** + * Get the extension type(s) + * + * @return array The type(s) as array of strings + */ + public function getType() { + } + + /** + * Get a list of all DokuWiki versions this extension is compatible with + * + * @return array The versions in the form yyyy-mm-dd + */ + public function getCompatibleVersions() { + } + + /** + * Get the date of the last available update + * + * @return string The last available update in the form yyyy-mm-dd + */ + public function getLastUpdate() { + } + + /** + * Get the base path of the extension + * + * @return string The base path of the extension + */ + public function getInstallDir() { + if ($this->isTemplate()) { + return basename(tpl_incdir()).$this->name; + } else { + return DOKU_PLUGIN.$this->name; + } + } + + /** + * The type of extension installation + * + * @return string One of "none", "manual", "git" or "automatic" + */ + public function getInstallType() { + } + + /** + * If the extension can probably be installed/updated or uninstalled + * + * @return bool|string True or one of "nourl", "noparentperms" (template/plugin install path not writable), "noperms" (extension itself not writable) + */ + public function canModify() { + } + + /** + * Install or update the extension + * + * @return bool|string True or an error message + */ + public function installOrUpdate() { + } + + /** + * Uninstall the extension + * + * @return bool|string True or an error message + */ + public function deleteExtension() { + } +} + +// vim:ts=4:sw=4:et: diff --git a/lib/plugins/extension/plugin.info.txt b/lib/plugins/extension/plugin.info.txt new file mode 100644 index 000000000..3c4469ad7 --- /dev/null +++ b/lib/plugins/extension/plugin.info.txt @@ -0,0 +1,7 @@ +base extension +author Michael Hamann +email michael@content-space.de +date 2013-08-01 +name extension plugin +desc Extension manager +url https://www.dokuwiki.org/plugin:extension -- cgit v1.2.3 From b9ca398d17863ad9a679d220dd742b0480fa80b6 Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Thu, 1 Aug 2013 20:50:37 +0200 Subject: Extension manager: implemented more extension info and basic repository access --- lib/plugins/extension/helper/extension.php | 188 ++++++++++++++++++++++++++-- lib/plugins/extension/helper/repository.php | 112 +++++++++++++++++ 2 files changed, 292 insertions(+), 8 deletions(-) create mode 100644 lib/plugins/extension/helper/repository.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 2746837be..b8981cf91 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -17,6 +17,9 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { private $is_template; private $localInfo; private $remoteInfo; + private $managerData; + /** @var helper_plugin_extension_repository $repository */ + private $repository = null; /** * @return bool false, this component is not a singleton @@ -35,6 +38,28 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { public function setExtension($name, $is_template) { $this->name = $name; $this->is_template = $is_template; + $this->localInfo = array(); + $this->managerData = array(); + $this->remoteInfo = array(); + + if ($this->isInstalled()) { + if ($this->isTemplate()) { + $infopath = $this->getInstallDir().'/template.info.txt'; + } else { + $infopath = $this->getInstallDir().'/plugin.info.txt'; + } + if (is_readable($infopath)) { + $this->localInfo = confToHash($infopath); + } + + $this->readManagerData(); + } + + if ($this->repository == null) { + $this->repository = $this->loadHelper('extension_repository'); + } + + $this->remoteInfo = $this->repository->getData(($this->isTemplate() ? 'template:' : '').$this->getBase()); } /** @@ -43,6 +68,18 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return bool If the extension is installed locally */ public function isInstalled() { + return is_dir($this->getInstallDir()); + } + + /** + * If the extension is enabled + * + * @return bool If the extension is enabled + */ + public function isEnabled() { + /* @var Doku_Plugin_Controller $plugin_controller */ + global $plugin_controller; + return !$plugin_controller->isdisabled($this->name); } /** @@ -51,6 +88,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return bool If an update is available */ public function updateAvailable() { + $lastupdate = $this->getLastUpdate(); + if ($lastupdate === false) return false; return $this->getInstalledVersion() < $this->getLastUpdate(); } @@ -70,6 +109,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string The basename */ public function getBase() { + return $this->name; } /** @@ -78,6 +118,9 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string The display name */ public function getName() { + if (isset($this->localInfo['name'])) return $this->localInfo['name']; + if (isset($this->remoteInfo['name'])) return $this->remoteInfo['name']; + return $this->name; } /** @@ -86,14 +129,31 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string The name of the author */ public function getAuthor() { + if (isset($this->localInfo['author'])) return $this->localInfo['author']; + if (isset($this->remoteInfo['author'])) return $this->remoteInfo['author']; + return $this->getLang('unknownauthor'); } /** - * Get the email of the author of the extension + * Get the email of the author of the extension if there is any * - * @return string The email address + * @return string|bool The email address or false if there is none */ public function getEmail() { + // email is only in the local data + if (isset($this->localInfo['email'])) return $this->localInfo['email']; + return false; + } + + /** + * Get the email id, i.e. the md5sum of the email + * + * @return string|bool The md5sum of the email if there is any, false otherwise + */ + public function getEmailID() { + if (isset($this->remoteInfo['emailid'])) return $this->remoteInfo['emailid']; + if (isset($this->localInfo['email'])) return md5($this->localInfo['email']); + return false; } /** @@ -102,6 +162,9 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string The description */ public function getDescription() { + if (isset($this->localInfo['desc'])) return $this->localInfo['desc']; + if (isset($this->remoteInfo['description'])) return $this->remoteInfo['description']; + return ''; } /** @@ -110,14 +173,19 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string The URL */ public function getURL() { + if (isset($this->localInfo['url'])) return $this->localInfo['url']; + return 'https://www.dokuwiki.org/plugin:'.$this->name; } /** * Get the installed version of the extension * - * @return string The version, usually in the form yyyy-mm-dd + * @return string|bool The version, usually in the form yyyy-mm-dd if there is any */ public function getInstalledVersion() { + if (isset($this->localInfo['date'])) return $this->localInfo['date']; + if ($this->isInstalled()) return $this->getLang('unknownversion'); + return false; } /** @@ -126,6 +194,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return array The base names of the dependencies */ public function getDependencies() { + if (isset($this->remoteInfo['dependencies'])) return $this->remoteInfo['dependencies']; + return array(); } /** @@ -134,6 +204,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return array The names of the conflicting extensions */ public function getConflicts() { + if (isset($this->remoteInfo['conflicts'])) return $this->remoteInfo['dependencies']; + return array(); } /** @@ -141,7 +213,9 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * * @return array The names of similar extensions */ - public function getSimilarPlugins() { + public function getSimilarExtensions() { + if (isset($this->remoteInfo['similar'])) return $this->remoteInfo['similar']; + return array(); } /** @@ -150,6 +224,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return array The names of the tags of the extension */ public function getTags() { + if (isset($this->remoteInfo['tags'])) return $this->remoteInfo['tags']; + return array(); } /** @@ -158,6 +234,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The security warning if there is any, false otherwise */ public function getSecurityWarning() { + if (isset($this->remoteInfo['securitywarning'])) return $this->remoteInfo['securitywarning']; + return false; } /** @@ -166,6 +244,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The security issue if there is any, false otherwise */ public function getSecurityIssue() { + if (isset($this->remoteInfo['securityissue'])) return $this->remoteInfo['securityissue']; + return false; } /** @@ -174,6 +254,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The screenshot URL if there is any, false otherwise */ public function getScreenshotURL() { + if (isset($this->remoteInfo['screenshoturl'])) return $this->remoteInfo['screenshoturl']; + return false; } /** @@ -182,6 +264,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The previously used download URL, false if the extension has been installed manually */ public function getLastDownloadURL() { + if (isset($this->managerData['downloadurl'])) return $this->managerData['downloadurl']; + return false; } /** @@ -190,6 +274,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The download URL if there is any, false otherwise */ public function getDownloadURL() { + if (isset($this->remoteInfo['downloadurl'])) return $this->remoteInfo['downloadurl']; + return false; } /** @@ -198,6 +284,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The bug tracker URL if there is any, false otherwise */ public function getBugtrackerURL() { + if (isset($this->remoteInfo['bugtracker'])) return $this->remoteInfo['bugtracker']; + return false; } /** @@ -206,6 +294,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The URL of the source repository if there is any, false otherwise */ public function getSourcerepoURL() { + if (isset($this->remoteInfo['sourcerepo'])) return $this->remoteInfo['sourcerepo']; + return false; } /** @@ -214,6 +304,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The donation URL if there is any, false otherwise */ public function getDonationURL() { + if (isset($this->remoteInfo['donationurl'])) return $this->remoteInfo['donationurl']; + return false; } /** @@ -221,23 +313,30 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * * @return array The type(s) as array of strings */ - public function getType() { + public function getTypes() { + if (isset($this->remoteInfo['types'])) return explode(', ', $this->remoteInfo['types']); + if ($this->isTemplate()) return array(32 => 'template'); + return array(); } /** * Get a list of all DokuWiki versions this extension is compatible with * - * @return array The versions in the form yyyy-mm-dd + * @return array The versions in the form yyyy-mm-dd => ('label' => label, 'implicit' => implicit) */ public function getCompatibleVersions() { + if (isset($this->remoteInfo['compatible'])) return $this->remoteInfo['compatible']; + return array(); } /** * Get the date of the last available update * - * @return string The last available update in the form yyyy-mm-dd + * @return string|bool The last available update in the form yyyy-mm-dd if there is any, false otherwise */ public function getLastUpdate() { + if (isset($this->remoteInfo['lastupdate'])) return $this->remoteInfo['lastupdate']; + return false; } /** @@ -259,6 +358,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string One of "none", "manual", "git" or "automatic" */ public function getInstallType() { + if (!$this->isInstalled()) return 'none'; + if (!empty($this->managerData)) return 'automatic'; + if (is_dir($this->getInstallDir().'/.git')) return 'git'; + return 'manual'; } /** @@ -282,7 +385,76 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * * @return bool|string True or an error message */ - public function deleteExtension() { + public function uninstall() { + } + + /** + * Enable the extension + * + * @return bool|string True or an error message + */ + public function enable() { + if ($this->isTemplate()) return $this->getLang('notimplemented'); + /* @var Doku_Plugin_Controller $plugin_controller */ + global $plugin_controller; + if (!$this->isInstalled()) return $this->getLang('notinstalled'); + if (!$this->isEnabled()) return $this->getLang('alreadyenabled'); + if ($plugin_controller->enable($this->name)) { + return true; + } else { + return $this->getLang('pluginlistsaveerror'); + } + } + + /** + * Disable the extension + * + * @return bool|string True or an error message + */ + public function disable() { + if ($this->isTemplate()) return $this->getLang('notimplemented'); + + /* @var Doku_Plugin_Controller $plugin_controller */ + global $plugin_controller; + if (!$this->isInstalled()) return $this->getLang('notinstalled'); + if (!$this->isEnabled()) return $this->getLang('alreadydisabled'); + if ($plugin_controller->disable($this->name)) { + return true; + } else { + return $this->getLang('pluginlistsaveerror'); + } + } + + /** + * Read the manager.dat file + */ + protected function readManagerData() { + $managerpath = $this->getInstallDir().'/manager.dat'; + if (is_readable($managerpath)) { + $file = @file($managerpath); + if(!empty($file)) { + foreach($file as $line) { + list($key, $value) = explode('=', trim($line, PHP_EOL), 2); + $key = trim($key); + $value = trim($value); + // backwards compatible with old plugin manager + if($key == 'url') $key = 'downloadurl'; + $this->managerData[$key] = $value; + } + } + } + } + + /** + * Write the manager.data file + */ + protected function writeManagerData() { + $managerpath = $this->getInstallDir().'/manager.dat'; + $data = ''; + foreach ($this->managerData as $k => $v) { + $data .= $k.'='.$v.DOKU_LF; + } + io_saveFile($managerpath, $data); } } diff --git a/lib/plugins/extension/helper/repository.php b/lib/plugins/extension/helper/repository.php new file mode 100644 index 000000000..37b9bc02c --- /dev/null +++ b/lib/plugins/extension/helper/repository.php @@ -0,0 +1,112 @@ + + */ + +if (!defined('EXTENSION_REPOSITORY_API_ENDPOINT')) + define('EXTENSION_REPSITORY_API', 'http://www.dokuwiki.org/lib/plugins/pluginrepo/api.php'); + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +/** + * Class helper_plugin_extension_repository provides access to the extension repository on dokuwiki.org + */ +class helper_plugin_extension_repository extends DokuWiki_Plugin { + private $loaded_extensions = array(); + private $has_access = null; + /** + * Initialize the repository (cache), fetches data for all installed plugins + */ + public function init() { + /* @var Doku_Plugin_Controller $plugin_controller */ + global $plugin_controller; + if ($this->hasAccess()) { + $list = $plugin_controller->getList('', true); + $request_data = array('fmt' => 'php'); + $request_needed = false; + foreach ($list as $name) { + $cache = new cache('##extension_manager##'.$name, 'repo'); + $result = null; + if (!isset($this->loaded_extensions[$name]) && $this->hasAccess() && !$cache->useCache(array('age' => 3600 * 24))) { + $this->loaded_extensions[$name] = true; + $request_data['ext'][] = $name; + $request_needed = true; + } + } + + if ($request_needed) { + $httpclient = new DokuHTTPClient(); + $data = $httpclient->post(EXTENSION_REPSITORY_API, $request_data); + if ($data !== false) { + $extensions = unserialize($data); + foreach ($extensions as $extension) { + $cache = new cache('##extension_manager##'.$extension['plugin'], 'repo'); + $cache->storeCache(serialize($extension)); + } + } else { + $this->has_access = false; + } + } + } + } + + /** + * If repository access is available + * + * @return bool If repository access is available + */ + public function hasAccess() { + if ($this->has_access === null) { + $cache = new cache('##extension_manager###hasAccess', 'repo'); + $result = null; + if (!$cache->useCache(array('age' => 3600 * 24))) { + $httpclient = new DokuHTTPClient(); + $httpclient->timeout = 5; + $data = $httpclient->get(EXTENSION_REPSITORY_API.'?cmd=ping'); + if ($data !== false) { + $this->has_access = true; + $cache->storeCache(1); + } else { + $this->has_access = false; + $cache->storeCache(0); + } + } else { + $this->has_access = ($cache->retrieveCache(false) == 1); + } + } + return $this->has_access; + } + + /** + * Get the remote data of an individual plugin or template + * + * @param string $name The plugin name to get the data for, template names need to be prefix by 'template:' + * @return array The data or null if nothing was found (possibly no repository access) + */ + public function getData($name) { + $cache = new cache('##extension_manager##'.$name, 'repo'); + $result = null; + if (!isset($this->loaded_extensions[$name]) && $this->hasAccess() && !$cache->useCache(array('age' => 3600 * 24))) { + $this->loaded_extensions[$name] = true; + $httpclient = new DokuHTTPClient(); + $data = $httpclient->get(EXTENSION_REPSITORY_API.'?fmt=php&ext[]='.urlencode($name)); + if ($data !== false) { + $result = unserialize($data); + $cache->storeCache(serialize($result[0])); + return $result[0]; + } else { + $this->has_access = false; + } + } + if (file_exists($cache->cache)) { + return unserialize($cache->retrieveCache(false)); + } + return array(); + } +} + +// vim:ts=4:sw=4:et: -- cgit v1.2.3 From 788f86d986d170475e9fda3578b4fde5ba4864dd Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Thu, 1 Aug 2013 21:14:17 +0200 Subject: Extension manager: add language file and simple admin component --- lib/plugins/extension/admin.php | 58 ++++++++++++++++++++++++++++++++++ lib/plugins/extension/lang/en/lang.php | 21 ++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 lib/plugins/extension/admin.php create mode 100644 lib/plugins/extension/lang/en/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php new file mode 100644 index 000000000..19863e772 --- /dev/null +++ b/lib/plugins/extension/admin.php @@ -0,0 +1,58 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +class admin_plugin_extension extends DokuWiki_Admin_Plugin { + + /** + * @return int sort number in admin menu + */ + public function getMenuSort() { + return 0; + } + + /** + * @return bool true if only access for superuser, false is for superusers and moderators + */ + public function forAdminOnly() { + return true; + } + + /** + * Should carry out any processing required by the plugin. + */ + public function handle() { + /* @var helper_plugin_extension_repository $repository */ + $repository = $this->loadHelper('extension_repository'); + $repository->init(); + } + + /** + * Render HTML output, e.g. helpful text and a form + */ + public function html() { + /* @var Doku_Plugin_Controller $plugin_controller */ + global $plugin_controller; + ptln('

'.$this->getLang('menu').'

'); + + $pluginlist = $plugin_controller->getList('', true); + /* @var helper_plugin_extension_extension $extension */ + $extension = $this->loadHelper('extension_extension'); + foreach ($pluginlist as $name) { + $extension->setExtension($name, false); + ptln('

'.hsc($extension->getName()).'

'); + ptln('

'.hsc($extension->getDescription()).'

'); + ptln('

Latest available version: '.hsc($extension->getLastUpdate()).'

'); + ptln('

Installed version: '.hsc($extension->getInstalledVersion()).'

'); + } + } +} + +// vim:ts=4:sw=4:et: \ No newline at end of file diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php new file mode 100644 index 000000000..81069e498 --- /dev/null +++ b/lib/plugins/extension/lang/en/lang.php @@ -0,0 +1,21 @@ + + */ + +// menu entry for admin plugins +$lang['menu'] = 'Extension manager'; + +// custom language strings for the plugin +$lang['notimplemented'] = 'This feature hasn\'t been implemented yet'; +$lang['alreadyenabled'] = 'This extension has already been enabled'; +$lang['alreadydisabled'] = 'This extension has already been disabled'; +$lang['pluginlistsaveerror'] = 'There was an error saving the plugin list'; +$lang['unknownauthor'] = 'Unknown author'; +$lang['unknownversion'] = 'Unknown version'; + + + +//Setup VIM: ex: et ts=4 : -- cgit v1.2.3 From 9c0a72696a95f03deea27243cb67a497ed3d6993 Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Fri, 2 Aug 2013 12:28:08 +0200 Subject: Extension manager: fix install dir for templates --- lib/plugins/extension/helper/extension.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index b8981cf91..05f64efeb 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -8,6 +8,7 @@ // must be run within Dokuwiki if(!defined('DOKU_INC')) die(); +if(!defined('DOKU_TPLLIB')) define('DOKU_TPLLIB', DOKU_INC.'lib/tpl/'); /** * Class helper_plugin_extension_extension represents a single extension (plugin or template) @@ -346,7 +347,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { */ public function getInstallDir() { if ($this->isTemplate()) { - return basename(tpl_incdir()).$this->name; + return DOKU_TPLLIB.$this->name; } else { return DOKU_PLUGIN.$this->name; } -- cgit v1.2.3 From 7c30f5ced5496bbc22c78497011da33d121aeb56 Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Fri, 2 Aug 2013 12:29:34 +0200 Subject: Extension manager: Use getInfo() when no info.txt is available --- lib/plugins/extension/helper/extension.php | 52 ++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 9 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 05f64efeb..4243afb69 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -44,15 +44,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { $this->remoteInfo = array(); if ($this->isInstalled()) { - if ($this->isTemplate()) { - $infopath = $this->getInstallDir().'/template.info.txt'; - } else { - $infopath = $this->getInstallDir().'/plugin.info.txt'; - } - if (is_readable($infopath)) { - $this->localInfo = confToHash($infopath); - } - + $this->readLocalData(); $this->readManagerData(); } @@ -426,6 +418,48 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { } } + /** + * Read local extension data either from info.txt or getInfo() + */ + protected function readLocalData() { + if ($this->isTemplate()) { + $infopath = $this->getInstallDir().'/template.info.txt'; + } else { + $infopath = $this->getInstallDir().'/plugin.info.txt'; + } + + if (is_readable($infopath)) { + $this->localInfo = confToHash($infopath); + } elseif (!$this->isTemplate() && $this->isEnabled()) { + global $plugin_types; + $path = $this->getInstallDir().'/'; + $plugin = null; + + foreach($plugin_types as $type) { + if(@file_exists($path.$type.'.php')) { + $plugin = plugin_load($type, $this->getBase()); + if ($plugin) break; + } + + if($dh = @opendir($path.$type.'/')) { + while(false !== ($cp = readdir($dh))) { + if($cp == '.' || $cp == '..' || strtolower(substr($cp, -4)) != '.php') continue; + + $plugin = plugin_load($type, $this->getBase().'_'.substr($cp, 0, -4)); + if ($plugin) break; + } + if ($plugin) break; + closedir($dh); + } + } + + if ($plugin) { + /* @var DokuWiki_Plugin $plugin */ + $this->localInfo = $plugin->getInfo(); + } + } + } + /** * Read the manager.dat file */ -- cgit v1.2.3 From 449f398253213589bf4cd3c28f2c38b9d853b06a Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Fri, 2 Aug 2013 12:30:42 +0200 Subject: Extension manager: Improve update check --- lib/plugins/extension/helper/extension.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 4243afb69..5e3074c83 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -83,6 +83,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { public function updateAvailable() { $lastupdate = $this->getLastUpdate(); if ($lastupdate === false) return false; + $installed = $this->getInstalledVersion(); + if ($installed === false || $installed === $this->getLang('unknownversion')) return true; return $this->getInstalledVersion() < $this->getLastUpdate(); } -- cgit v1.2.3 From 1981046ea006031f74fb082960756b3d2919b99e Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Fri, 2 Aug 2013 12:31:11 +0200 Subject: Extension manager: implement uninstall, canModify and install/update --- lib/plugins/extension/helper/extension.php | 361 ++++++++++++++++++++++++++++- lib/plugins/extension/lang/en/lang.php | 6 + 2 files changed, 366 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 5e3074c83..b80e56a4d 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -365,6 +365,18 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return bool|string True or one of "nourl", "noparentperms" (template/plugin install path not writable), "noperms" (extension itself not writable) */ public function canModify() { + if ($this->isInstalled()) { + if (!is_writable($this->getInstallDir())) { + return 'noperms'; + } + } + $parent_path = ($this->isTemplate() ? DOKU_TPLLIB : DOKU_PLUGIN); + if (!is_writable($parent_path)) { + return 'noparentperms'; + } + + if (!$this->getDownloadURL()) return 'nourl'; + return true; } /** @@ -373,14 +385,26 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return bool|string True or an error message */ public function installOrUpdate() { + if (($status = $this->download($this->getDownloadURL(), $path)) === true) { + if (($status = $this->installArchive($path, $installed_extensions, $this->isInstalled(), $this->getBase())) == true) { + // refresh extension information + if (!isset($installed_extensions[$this->getBase()])) { + $status = 'Error, the requested extension hasn\'t been installed or updated'; + } + $this->setExtension($this->name, $this->isTemplate()); + } + $this->dir_delete(dirname($path)); + } + return $status; } /** * Uninstall the extension * - * @return bool|string True or an error message + * @return bool If the plugin was sucessfully installed */ public function uninstall() { + return $this->dir_delete($this->getInstallDir()); } /** @@ -493,6 +517,341 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { } io_saveFile($managerpath, $data); } + + /** + * delete, with recursive sub-directory support + * + * @param string $path The path that shall be deleted + * @return bool If the directory has been successfully deleted + */ + protected function dir_delete($path) { + if(!is_string($path) || $path == "") return false; + + if(is_dir($path) && !is_link($path)) { + if(!$dh = @opendir($path)) return false; + + while ($f = readdir($dh)) { + if($f == '..' || $f == '.') continue; + $this->dir_delete("$path/$f"); + } + + closedir($dh); + return @rmdir($path); + } else { + return @unlink($path); + } + } + + /** + * Download an archive to a protected path + * @param string $url The url to get the archive from + * @param string $path The path where the archive was saved (output parameter) + * @return bool|string True on success, an error message on failure + */ + public function download($url, &$path) { + // check the url + $matches = array(); + if(!preg_match("/[^/]*$/", $url, $matches) || !$matches[0]) { + return $this->getLang('baddownloadurl'); + } + $file = $matches[0]; + + // create tmp directory for download + if(!($tmp = io_mktmpdir())) { + return $this->getLang('error_dircreate'); + } + + // download + if(!$file = io_download($url, $tmp.'/', true, $file)) { + $this->dir_delete($tmp); + return sprintf($this->getLang('error_download'), $url); + } + + $path = $tmp.'/'.$file; + + return true; + } + + /** + * @param string $file The path to the archive that shall be installed + * @param bool $overwrite If an already installed plugin should be overwritten + * @param array $installed_extensions Array of all installed extensions in the form $base => ('type' => $type, 'action' => 'update'|'install') + * @param string $base The basename of the plugin if it's known + * @return bool|string True on success, an error message on failure + */ + public function installArchive($file, &$installed_extensions, $overwrite=false, $base = '') { + $error = false; + + // create tmp directory for decompression + if(!($tmp = io_mktmpdir())) { + return $this->getLang('error_dircreate'); + } + + // add default base folder if specified to handle case where zip doesn't contain this + if($base && !@mkdir($tmp.'/'.$base)) { + $error = $this->getLang('error_dircreate'); + } + + if(!$error && !$this->decompress("$tmp/$file", "$tmp/".$base)) { + $error = sprintf($this->getLang('error_decompress'), $file); + } + + // search $tmp/$base for the folder(s) that has been created + // move the folder(s) to lib/.. + if(!$error) { + $result = array('old'=>array(), 'new'=>array()); + + if(!$this->find_folders($result, $tmp.'/'.$base, ($this->isTemplate() ? 'template' : 'plugin'))) { + $error = $this->getLang('error_findfolder'); + + } else { + // choose correct result array + if(count($result['new'])) { + $install = $result['new']; + }else{ + $install = $result['old']; + } + + // now install all found items + foreach($install as $item) { + // where to install? + if($item['type'] == 'template') { + $target_base_dir = DOKU_TPLLIB; + }else{ + $target_base_dir = DOKU_PLUGIN; + } + + if(!empty($item['base'])) { + // use base set in info.txt + } elseif($base && count($install) == 1) { + $item['base'] = $base; + } else { + // default - use directory as found in zip + // plugins from github/master without *.info.txt will install in wrong folder + // but using $info->id will make 'code3' fail (which should install in lib/code/..) + $item['base'] = basename($item['tmp']); + } + + // check to make sure we aren't overwriting anything + $target = $target_base_dir.$item['base']; + if(!$overwrite && @file_exists($target)) { + // TODO remember our settings, ask the user to confirm overwrite + continue; + } + + $action = @file_exists($target) ? 'update' : 'install'; + + // copy action + if($this->dircopy($item['tmp'], $target)) { + // TODO: write manager.dat! + $installed_extensions[$item['base']] = array('type' => $item['type'], 'action' => $action); + } else { + $error = sprintf($this->getLang('error_copy').DOKU_LF, $item['base']); + break; + } + } + } + } + + // cleanup + if($tmp) $this->dir_delete($tmp); + + if($error) { + return $error; + } + + return true; + } + + /** + * Find out what was in the extracted directory + * + * Correct folders are searched recursively using the "*.info.txt" configs + * as indicator for a root folder. When such a file is found, it's base + * setting is used (when set). All folders found by this method are stored + * in the 'new' key of the $result array. + * + * For backwards compatibility all found top level folders are stored as + * in the 'old' key of the $result array. + * + * When no items are found in 'new' the copy mechanism should fall back + * the 'old' list. + * + * @author Andreas Gohr + * @param array $result - results are stored here + * @param string $base - the temp directory where the package was unpacked to + * @param string $default_type - type used if no info.txt available + * @param string $dir - a subdirectory. do not set. used by recursion + * @return bool - false on error + */ + private function find_folders(&$result, $base, $default_type, $dir='') { + $this_dir = "$base$dir"; + $dh = @opendir($this_dir); + if(!$dh) return false; + + $found_dirs = array(); + $found_files = 0; + $found_template_parts = 0; + $found_info_txt = false; + while (false !== ($f = readdir($dh))) { + if($f == '.' || $f == '..') continue; + + if(is_dir("$this_dir/$f")) { + $found_dirs[] = "$dir/$f"; + + } else { + // it's a file -> check for config + $found_files++; + switch ($f) { + case 'plugin.info.txt': + case 'template.info.txt': + $found_info_txt = true; + $info = array(); + $type = explode('.', $f, 2); + $info['type'] = $type[0]; + $info['tmp'] = $this_dir; + $conf = confToHash("$this_dir/$f"); + $info['base'] = basename($conf['base']); + $result['new'][] = $info; + break; + + case 'main.php': + case 'details.php': + case 'mediamanager.php': + case 'style.ini': + $found_template_parts++; + break; + } + } + } + closedir($dh); + + // URL downloads default to 'plugin', try extra hard to indentify templates + if(!$default_type && $found_template_parts > 2 && !$found_info_txt) { + $info = array(); + $info['type'] = 'template'; + $info['tmp'] = $this_dir; + $result['new'][] = $info; + } + + // files in top level but no info.txt, assume this is zip missing a base directory + // works for all downloads unless direct URL where $base will be the tmp directory ($info->id was empty) + if(!$dir && $found_files > 0 && !$found_info_txt && $default_type) { + $info = array(); + $info['type'] = $default_type; + $info['tmp'] = $base; + $result['old'][] = $info; + return true; + } + + foreach ($found_dirs as $found_dir) { + // if top level add to dir list for old method, then recurse + if(!$dir) { + $info = array(); + $info['type'] = ($default_type ? $default_type : 'plugin'); + $info['tmp'] = "$base$found_dir"; + $result['old'][] = $info; + } + $this->find_folders($result, $base, $default_type, "$found_dir"); + } + return true; + } + + + /** + * Decompress a given file to the given target directory + * + * Determines the compression type from the file extension + */ + private function decompress($file, $target) { + // decompression library doesn't like target folders ending in "/" + if(substr($target, -1) == "/") $target = substr($target, 0, -1); + + $ext = $this->guess_archive($file); + if(in_array($ext, array('tar', 'bz', 'gz'))) { + switch($ext) { + case 'bz': + $compress_type = Tar::COMPRESS_BZIP; + break; + case 'gz': + $compress_type = Tar::COMPRESS_GZIP; + break; + default: + $compress_type = Tar::COMPRESS_NONE; + } + + $tar = new Tar(); + try { + $tar->open($file, $compress_type); + $tar->extract($target); + } catch (Exception $e) { + return $e->getMessage(); + } + + return true; + } elseif($ext == 'zip') { + + $zip = new ZipLib(); + $ok = $zip->Extract($file, $target); + + return ($ok==-1 ? 'Error extracting the zip archive' : true); + } + + // the only case when we don't get one of the recognized archive types is when the archive file can't be read + return 'Couldn\'t read archive file'; + } + + /** + * Determine the archive type of the given file + * + * Reads the first magic bytes of the given file for content type guessing, + * if neither bz, gz or zip are recognized, tar is assumed. + * + * @author Andreas Gohr + * @param string $file The file to analyze + * @return string|bool false if the file can't be read, otherwise an "extension" + */ + private function guess_archive($file) { + $fh = fopen($file, 'rb'); + if(!$fh) return false; + $magic = fread($fh, 5); + fclose($fh); + + if(strpos($magic, "\x42\x5a") === 0) return 'bz'; + if(strpos($magic, "\x1f\x8b") === 0) return 'gz'; + if(strpos($magic, "\x50\x4b\x03\x04") === 0) return 'zip'; + return 'tar'; + } + + /** + * Copy with recursive sub-directory support + */ + private function dircopy($src, $dst) { + global $conf; + + if(is_dir($src)) { + if(!$dh = @opendir($src)) return false; + + if($ok = io_mkdir_p($dst)) { + while ($ok && (false !== ($f = readdir($dh)))) { + if($f == '..' || $f == '.') continue; + $ok = $this->dircopy("$src/$f", "$dst/$f"); + } + } + + closedir($dh); + return $ok; + + } else { + $exists = @file_exists($dst); + + if(!@copy($src, $dst)) return false; + if(!$exists && !empty($conf['fperm'])) chmod($dst, $conf['fperm']); + @touch($dst, filemtime($src)); + } + + return true; + } } // vim:ts=4:sw=4:et: diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 81069e498..f0999ff01 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -17,5 +17,11 @@ $lang['unknownauthor'] = 'Unknown author'; $lang['unknownversion'] = 'Unknown version'; +$lang['error_badurl'] = 'URL ends with slash - unable to determine file name from the url'; +$lang['error_dircreate'] = 'Unable to create temporary folder to receive download'; +$lang['error_download'] = 'Unable to download the file: %s'; +$lang['error_decompress'] = 'Unable to decompress the downloaded file. This maybe as a result of a bad download, in which case you should try again; or the compression format may be unknown, in which case you will need to download and install manually'; +$lang['error_findfolder'] = 'Unable to identify extension directory, you need to download and install manually'; +$lang['error_copy'] = 'There was a file copy error while attempting to install files for directory %s: the disk could be full or file access permissions may be incorrect. This may have resulted in a partially installed plugin and leave your wiki installation unstable'; //Setup VIM: ex: et ts=4 : -- cgit v1.2.3 From 02779b18797b2ee1304613de684d54988815dacb Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Fri, 2 Aug 2013 23:30:32 +0200 Subject: Extension manager: Implement extension table This uses a lot of code and the whole design from the previous extension manager implementation. --- lib/plugins/extension/admin.php | 78 ++++- lib/plugins/extension/helper/extension.php | 189 ++++++++++-- lib/plugins/extension/helper/list.php | 477 +++++++++++++++++++++++++++++ lib/plugins/extension/images/disabled.png | Bin 0 -> 1486 bytes lib/plugins/extension/images/donate.png | Bin 0 -> 1293 bytes lib/plugins/extension/images/down.png | Bin 0 -> 280 bytes lib/plugins/extension/images/enabled.png | Bin 0 -> 1231 bytes lib/plugins/extension/images/icons.xcf | Bin 0 -> 43016 bytes lib/plugins/extension/images/license.txt | 4 + lib/plugins/extension/images/plugin.png | Bin 0 -> 6259 bytes lib/plugins/extension/images/template.png | Bin 0 -> 6802 bytes lib/plugins/extension/images/up.png | Bin 0 -> 281 bytes lib/plugins/extension/lang/en/lang.php | 96 +++++- lib/plugins/extension/style.css | 368 ++++++++++++++++++++++ 14 files changed, 1172 insertions(+), 40 deletions(-) create mode 100644 lib/plugins/extension/helper/list.php create mode 100644 lib/plugins/extension/images/disabled.png create mode 100644 lib/plugins/extension/images/donate.png create mode 100644 lib/plugins/extension/images/down.png create mode 100644 lib/plugins/extension/images/enabled.png create mode 100644 lib/plugins/extension/images/icons.xcf create mode 100644 lib/plugins/extension/images/license.txt create mode 100644 lib/plugins/extension/images/plugin.png create mode 100644 lib/plugins/extension/images/template.png create mode 100644 lib/plugins/extension/images/up.png create mode 100644 lib/plugins/extension/style.css (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 19863e772..373f90183 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -9,7 +9,11 @@ // must be run within Dokuwiki if(!defined('DOKU_INC')) die(); +/** + * Admin part of the extension manager + */ class admin_plugin_extension extends DokuWiki_Admin_Plugin { + protected $infoFor = null; /** * @return int sort number in admin menu @@ -26,32 +30,94 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { } /** - * Should carry out any processing required by the plugin. + * Execute the requested action(s) and initialize the plugin repository */ public function handle() { + global $INPUT; + // initialize the remote repository /* @var helper_plugin_extension_repository $repository */ $repository = $this->loadHelper('extension_repository'); $repository->init(); + + /* @var helper_plugin_extension_extension $extension */ + $extension = $this->loadHelper('extension_extension'); + + if ($INPUT->post->has('fn')) { + $actions = $INPUT->post->arr('fn'); + foreach ($actions as $action => $extensions) { + foreach ($extensions as $extname => $label) { + switch ($action) { + case 'info': + $this->infoFor = $extname; + break; + case 'install': + msg('Not implemented'); + break; + case 'reinstall': + case 'update': + $extension->setExtension($extname, false); + $status = $extension->installOrUpdate(); + if ($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_update_success'), hsc($extension->getName())), 1); + } + break; + case 'uninstall': + $extension->setExtension($extname, false); + $status = $extension->uninstall(); + if ($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getName())), 1); + } + break; + case 'enable'; + $extension->setExtension($extname, false); + $status = $extension->enable(); + if ($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getName())), 1); + } + break; + case 'disable'; + $extension->setExtension($extname, false); + $status = $extension->disable(); + if ($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getName())), 1); + } + break; + } + } + } + } } /** - * Render HTML output, e.g. helpful text and a form + * Render HTML output */ public function html() { /* @var Doku_Plugin_Controller $plugin_controller */ global $plugin_controller; ptln('

'.$this->getLang('menu').'

'); + ptln('
'); $pluginlist = $plugin_controller->getList('', true); /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); + /* @var helper_plugin_extension_list $list */ + $list = $this->loadHelper('extension_list'); + $list->start_form(); foreach ($pluginlist as $name) { $extension->setExtension($name, false); - ptln('

'.hsc($extension->getName()).'

'); - ptln('

'.hsc($extension->getDescription()).'

'); - ptln('

Latest available version: '.hsc($extension->getLastUpdate()).'

'); - ptln('

Installed version: '.hsc($extension->getInstalledVersion()).'

'); + $list->add_row($extension, $name == $this->infoFor); } + $list->end_form(); + $list->render(); + ptln('
'); } } diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index b80e56a4d..093ee7828 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -64,6 +64,35 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { return is_dir($this->getInstallDir()); } + /** + * If the extension is bundled + * + * @return bool If the extension is bundled + */ + public function isBundled() { + if (!empty($this->remoteInfo['bundled'])) return $this->remoteInfo['bundled']; + return in_array($this->name, + array('acl', 'info', 'extension', 'test', 'revert', 'popularity', 'config', 'plugin', 'safefnrecode', 'authplain')); + } + + /** + * If the extension is protected + * + * @return bool if the extension is protected + */ + public function isProtected() { + return in_array($this->name, array('acl', 'config', 'info', 'plugin', 'revert', 'usermanager')); + } + + /** + * If the extension is installed in the correct directory + * + * @return bool If the extension is installed in the correct directory + */ + public function isInWrongFolder() { + return $this->name != $this->getBase(); + } + /** * If the extension is enabled * @@ -97,6 +126,15 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { return $this->is_template; } + /** + * Get the name of the installation directory + * + * @return string The name of the installation directory + */ + public function getInstallName() { + return $this->name; + } + // Data from plugin.info.txt/template.info.txt or the repo when not available locally /** * Get the basename of the extension @@ -104,6 +142,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string The basename */ public function getBase() { + if (!empty($this->localInfo['base'])) return $this->localInfo['base']; return $this->name; } @@ -113,20 +152,20 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string The display name */ public function getName() { - if (isset($this->localInfo['name'])) return $this->localInfo['name']; - if (isset($this->remoteInfo['name'])) return $this->remoteInfo['name']; + if (!empty($this->localInfo['name'])) return $this->localInfo['name']; + if (!empty($this->remoteInfo['name'])) return $this->remoteInfo['name']; return $this->name; } /** * Get the author name of the extension * - * @return string The name of the author + * @return string|bool The name of the author or false if there is none */ public function getAuthor() { - if (isset($this->localInfo['author'])) return $this->localInfo['author']; - if (isset($this->remoteInfo['author'])) return $this->remoteInfo['author']; - return $this->getLang('unknownauthor'); + if (!empty($this->localInfo['author'])) return $this->localInfo['author']; + if (!empty($this->remoteInfo['author'])) return $this->remoteInfo['author']; + return false; } /** @@ -136,7 +175,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { */ public function getEmail() { // email is only in the local data - if (isset($this->localInfo['email'])) return $this->localInfo['email']; + if (!empty($this->localInfo['email'])) return $this->localInfo['email']; return false; } @@ -146,8 +185,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The md5sum of the email if there is any, false otherwise */ public function getEmailID() { - if (isset($this->remoteInfo['emailid'])) return $this->remoteInfo['emailid']; - if (isset($this->localInfo['email'])) return md5($this->localInfo['email']); + if (!empty($this->remoteInfo['emailid'])) return $this->remoteInfo['emailid']; + if (!empty($this->localInfo['email'])) return md5($this->localInfo['email']); return false; } @@ -157,8 +196,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string The description */ public function getDescription() { - if (isset($this->localInfo['desc'])) return $this->localInfo['desc']; - if (isset($this->remoteInfo['description'])) return $this->remoteInfo['description']; + if (!empty($this->localInfo['desc'])) return $this->localInfo['desc']; + if (!empty($this->remoteInfo['description'])) return $this->remoteInfo['description']; return ''; } @@ -168,8 +207,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string The URL */ public function getURL() { - if (isset($this->localInfo['url'])) return $this->localInfo['url']; - return 'https://www.dokuwiki.org/plugin:'.$this->name; + if (!empty($this->localInfo['url'])) return $this->localInfo['url']; + return 'https://www.dokuwiki.org/'.($this->isTemplate() ? 'template' : 'plugin').':'.$this->getBase(); } /** @@ -178,28 +217,66 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The version, usually in the form yyyy-mm-dd if there is any */ public function getInstalledVersion() { - if (isset($this->localInfo['date'])) return $this->localInfo['date']; + if (!empty($this->localInfo['date'])) return $this->localInfo['date']; if ($this->isInstalled()) return $this->getLang('unknownversion'); return false; } + /** + * Get the install date of the current version + * + * @return string|bool The date of the last update or false if not available + */ + public function getUpdateDate() { + if (!empty($this->managerData['updated'])) return $this->managerData['updated']; + return false; + } + + /** + * Get the date of the installation of the plugin + * + * @return string|bool The date of the installation or false if not available + */ + public function getInstallDate() { + if (!empty($this->managerData['installed'])) return $this->managerData['installed']; + return false; + } + /** * Get the names of the dependencies of this extension * * @return array The base names of the dependencies */ public function getDependencies() { - if (isset($this->remoteInfo['dependencies'])) return $this->remoteInfo['dependencies']; + if (!empty($this->remoteInfo['dependencies'])) return $this->remoteInfo['dependencies']; return array(); } + /** + * Get the names of the missing dependencies + * + * @return array The base names of the missing dependencies + */ + public function getMissingDependencies() { + /* @var Doku_Plugin_Controller $plugin_controller */ + global $plugin_controller; + $dependencies = $this->getDependencies(); + $missing_dependencies = array(); + foreach ($dependencies as $dependency) { + if ($plugin_controller->isdisabled($dependency)) { + $missing_dependencies[] = $dependency; + } + } + return $missing_dependencies; + } + /** * Get the names of all conflicting extensions * * @return array The names of the conflicting extensions */ public function getConflicts() { - if (isset($this->remoteInfo['conflicts'])) return $this->remoteInfo['dependencies']; + if (!empty($this->remoteInfo['conflicts'])) return $this->remoteInfo['dependencies']; return array(); } @@ -209,7 +286,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return array The names of similar extensions */ public function getSimilarExtensions() { - if (isset($this->remoteInfo['similar'])) return $this->remoteInfo['similar']; + if (!empty($this->remoteInfo['similar'])) return $this->remoteInfo['similar']; return array(); } @@ -219,17 +296,28 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return array The names of the tags of the extension */ public function getTags() { - if (isset($this->remoteInfo['tags'])) return $this->remoteInfo['tags']; + if (!empty($this->remoteInfo['tags'])) return $this->remoteInfo['tags']; return array(); } + /** + * Get the popularity information as floating point number [0,1] + * + * @return float|bool The popularity information or false if it isn't available + */ + public function getPopularity() { + if (!empty($this->remoteInfo['popularity'])) return $this->remoteInfo['popularity']/200.0; + return false; + } + + /** * Get the text of the security warning if there is any * * @return string|bool The security warning if there is any, false otherwise */ public function getSecurityWarning() { - if (isset($this->remoteInfo['securitywarning'])) return $this->remoteInfo['securitywarning']; + if (!empty($this->remoteInfo['securitywarning'])) return $this->remoteInfo['securitywarning']; return false; } @@ -239,7 +327,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The security issue if there is any, false otherwise */ public function getSecurityIssue() { - if (isset($this->remoteInfo['securityissue'])) return $this->remoteInfo['securityissue']; + if (!empty($this->remoteInfo['securityissue'])) return $this->remoteInfo['securityissue']; return false; } @@ -249,17 +337,26 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The screenshot URL if there is any, false otherwise */ public function getScreenshotURL() { - if (isset($this->remoteInfo['screenshoturl'])) return $this->remoteInfo['screenshoturl']; + if (!empty($this->remoteInfo['screenshoturl'])) return $this->remoteInfo['screenshoturl']; return false; } + /** + * Get the URL of the thumbnail of the extension if there is any + * + * @return string|bool The thumbnail URL if there is any, false otherwise + */ + public function getThumbnailURL() { + if (!empty($this->remoteInfo['thumbnailurl'])) return $this->remoteInfo['thumbnailurl']; + return false; + } /** * Get the last used download URL of the extension if there is any * * @return string|bool The previously used download URL, false if the extension has been installed manually */ public function getLastDownloadURL() { - if (isset($this->managerData['downloadurl'])) return $this->managerData['downloadurl']; + if (!empty($this->managerData['downloadurl'])) return $this->managerData['downloadurl']; return false; } @@ -269,17 +366,28 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The download URL if there is any, false otherwise */ public function getDownloadURL() { - if (isset($this->remoteInfo['downloadurl'])) return $this->remoteInfo['downloadurl']; + if (!empty($this->remoteInfo['downloadurl'])) return $this->remoteInfo['downloadurl']; return false; } + /** + * If the download URL has changed since the last download + * + * @return bool If the download URL has changed + */ + public function hasDownloadURLChanged() { + $lasturl = $this->getLastDownloadURL(); + $currenturl = $this->getDownloadURL(); + return ($lasturl && $currenturl && $lasturl != $currenturl); + } + /** * Get the bug tracker URL of the extension if there is any * * @return string|bool The bug tracker URL if there is any, false otherwise */ public function getBugtrackerURL() { - if (isset($this->remoteInfo['bugtracker'])) return $this->remoteInfo['bugtracker']; + if (!empty($this->remoteInfo['bugtracker'])) return $this->remoteInfo['bugtracker']; return false; } @@ -289,7 +397,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The URL of the source repository if there is any, false otherwise */ public function getSourcerepoURL() { - if (isset($this->remoteInfo['sourcerepo'])) return $this->remoteInfo['sourcerepo']; + if (!empty($this->remoteInfo['sourcerepo'])) return $this->remoteInfo['sourcerepo']; return false; } @@ -299,7 +407,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The donation URL if there is any, false otherwise */ public function getDonationURL() { - if (isset($this->remoteInfo['donationurl'])) return $this->remoteInfo['donationurl']; + if (!empty($this->remoteInfo['donationurl'])) return $this->remoteInfo['donationurl']; return false; } @@ -309,7 +417,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return array The type(s) as array of strings */ public function getTypes() { - if (isset($this->remoteInfo['types'])) return explode(', ', $this->remoteInfo['types']); + if (!empty($this->remoteInfo['types'])) return $this->remoteInfo['types']; if ($this->isTemplate()) return array(32 => 'template'); return array(); } @@ -320,7 +428,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return array The versions in the form yyyy-mm-dd => ('label' => label, 'implicit' => implicit) */ public function getCompatibleVersions() { - if (isset($this->remoteInfo['compatible'])) return $this->remoteInfo['compatible']; + if (!empty($this->remoteInfo['compatible'])) return $this->remoteInfo['compatible']; return array(); } @@ -330,7 +438,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string|bool The last available update in the form yyyy-mm-dd if there is any, false otherwise */ public function getLastUpdate() { - if (isset($this->remoteInfo['lastupdate'])) return $this->remoteInfo['lastupdate']; + if (!empty($this->remoteInfo['lastupdate'])) return $this->remoteInfo['lastupdate']; return false; } @@ -392,6 +500,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { $status = 'Error, the requested extension hasn\'t been installed or updated'; } $this->setExtension($this->name, $this->isTemplate()); + $this->purgeCache(); } $this->dir_delete(dirname($path)); } @@ -404,6 +513,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return bool If the plugin was sucessfully installed */ public function uninstall() { + $this->purgeCache(); return $this->dir_delete($this->getInstallDir()); } @@ -417,8 +527,9 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { /* @var Doku_Plugin_Controller $plugin_controller */ global $plugin_controller; if (!$this->isInstalled()) return $this->getLang('notinstalled'); - if (!$this->isEnabled()) return $this->getLang('alreadyenabled'); + if ($this->isEnabled()) return $this->getLang('alreadyenabled'); if ($plugin_controller->enable($this->name)) { + $this->purgeCache(); return true; } else { return $this->getLang('pluginlistsaveerror'); @@ -438,12 +549,24 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { if (!$this->isInstalled()) return $this->getLang('notinstalled'); if (!$this->isEnabled()) return $this->getLang('alreadydisabled'); if ($plugin_controller->disable($this->name)) { + $this->purgeCache(); return true; } else { return $this->getLang('pluginlistsaveerror'); } } + /** + * Purge the cache by touching the main configuration file + */ + protected function purgeCache() { + global $config_cascade; + + // expire dokuwiki caches + // touching local.php expires wiki page, JS and CSS caches + @touch(reset($config_cascade['main']['local'])); + } + /** * Read local extension data either from info.txt or getInfo() */ @@ -463,7 +586,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { foreach($plugin_types as $type) { if(@file_exists($path.$type.'.php')) { - $plugin = plugin_load($type, $this->getBase()); + $plugin = plugin_load($type, $this->name); if ($plugin) break; } @@ -471,7 +594,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { while(false !== ($cp = readdir($dh))) { if($cp == '.' || $cp == '..' || strtolower(substr($cp, -4)) != '.php') continue; - $plugin = plugin_load($type, $this->getBase().'_'.substr($cp, 0, -4)); + $plugin = plugin_load($type, $this->name.'_'.substr($cp, 0, -4)); if ($plugin) break; } if ($plugin) break; @@ -551,7 +674,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { public function download($url, &$path) { // check the url $matches = array(); - if(!preg_match("/[^/]*$/", $url, $matches) || !$matches[0]) { + if(!preg_match("/[^\/]*$/", $url, $matches) || !$matches[0]) { return $this->getLang('baddownloadurl'); } $file = $matches[0]; diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php new file mode 100644 index 000000000..ffb88114d --- /dev/null +++ b/lib/plugins/extension/helper/list.php @@ -0,0 +1,477 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +/** + * Class helper_plugin_extension_extension represents a single extension (plugin or template) + */ +class helper_plugin_extension_list extends DokuWiki_Plugin { + protected $form = ''; + + function start_form() { + $this->form .= '
'; + $hidden = array( + 'do'=>'admin', + 'page'=>'extension', + 'sectok'=>getSecurityToken() + ); + $this->add_hidden($hidden); + $this->form .= '
    '; + } + /** + * Build single row of extension table + * @param helper_plugin_extension_extension $extension The extension that shall be added + * @param bool $showinfo Show the info area + */ + function add_row(helper_plugin_extension_extension $extension, $showinfo = false) { + $this->start_row($extension); + $this->populate_column('legend', $this->make_legend($extension, $showinfo)); + $this->populate_column('actions', $this->make_actions($extension)); + $this->end_row(); + } + + /** + * Adds a header to the form + * + * @param string $id The id of the header + * @param string $header The content of the header + * @param int $level The level of the header + */ + function add_header($id, $header, $level = 2) { + $this->form .=''.hsc($header).''; + } + + /** + * Adds a paragraph to the form + * + * @param string $data The content + */ + function add_p($data) { + $this->form .= '

    '.hsc($data).'

    '; + } + + /** + * Add hidden fields to the form with the given data + * @param array $array + */ + function add_hidden(array $array) { + $this->form .= '
    '; + foreach ($array as $key => $value) { + $this->form .= ''; + } + $this->form .= '
    '; + } + + /** + * Add closing tags + */ + function end_form() { + $this->form .= '
'; + $this->form .= '
'; + } + + /** + * Print the form + */ + function render() { + echo $this->form; + } + + /** + * Start the HTML for the row for the extension + * + * @param helper_plugin_extension_extension $extension The extension + */ + private function start_row(helper_plugin_extension_extension $extension) { + $this->form .= '
  • '; + } + + /** + * Add a column with the given class and content + * @param string $class The class name + * @param string $html The content + */ + private function populate_column($class, $html) { + $this->form .= '
    '.$html.'
    '; + } + + /** + * End the row + */ + private function end_row() { + $this->form .= '
  • '.DOKU_LF; + } + + /** + * Generate the link to the plugin homepage + * + * @param helper_plugin_extension_extension $extension The extension + * @return string The HTML code + */ + function make_homepagelink(helper_plugin_extension_extension $extension) { + $text = $this->getLang('homepage_link'); + $url = hsc($extension->getURL()); + return ''.$text.' '; + } + + /** + * Generate the class name for the row of the extensio + * + * @param helper_plugin_extension_extension $extension The extension object + * @return string The class name + */ + function make_class(helper_plugin_extension_extension $extension) { + $class = ($extension->isTemplate()) ? 'template' : 'plugin'; + if($extension->isInstalled()) { + $class.=' installed'; + $class.= ($extension->isEnabled()) ? ' enabled':' disabled'; + } + if(!$extension->canModify()) $class.= ' notselect'; + if($extension->isProtected()) $class.= ' protected'; + //if($this->showinfo) $class.= ' showinfo'; + return $class; + } + + /** + * Generate a link to the author of the extension + * + * @param helper_plugin_extension_extension $extension The extension object + * @return string The HTML code of the link + */ + function make_author(helper_plugin_extension_extension $extension) { + global $ID; + + if($extension->getAuthor()) { + + $params = array( + 'do'=>'admin', + 'page'=>'extension', + 'tab'=>'search', + 'q'=>'author:'.$extension->getAuthor() + ); + $url = wl($ID, $params); + return ''.hsc($extension->getAuthor()).''; + } + return "".$this->getLang('unknown_author').""; + } + + /** + * Get the link and image tag for the screenshot/thumbnail + * + * @param helper_plugin_extension_extension $extension The extension object + * @return string The HTML code + */ + function make_screenshot(helper_plugin_extension_extension $extension) { + if($extension->getScreenshotURL()) { + $img = ''. + ''.hsc($extension->getName()).''. + ''; + } elseif($extension->isTemplate()) { + $img = 'template'; + + } else { + $img = 'plugin'; + } + return '
    '.$img.'
    '; + } + + /** + * Extension main description + * + * @param helper_plugin_extension_extension $extension The extension object + * @param bool $showinfo Show the info section + * @return string The HTML code + */ + function make_legend(helper_plugin_extension_extension $extension, $showinfo = false) { + $return = '
    '; + $return .= '

    '; + $return .= sprintf($this->getLang('extensionby'), hsc($extension->getName()), $this->make_author($extension)); + $return .= '

    '; + + $return .= $this->make_screenshot($extension); + + $popularity = $extension->getPopularity(); + if ($popularity !== false && !$extension->isBundled()) { + $popularityText = sprintf($this->getLang('popularity'), $popularity); + $return .= '
    '; + } + + $return .= '

    '; + if($extension->getDescription()) { + $return .= hsc($extension->getDescription()).' '; + } + $return .= '

    '; + + $return .= $this->make_linkbar($extension); + $return .= $this->make_action('info', $extension, $showinfo); + if ($showinfo) { + $return .= $this->make_info($extension); + } + $return .= $this->make_noticearea($extension); + $return .= '
    '; + return $return; + } + + /** + * Generate the link bar HTML code + * + * @param helper_plugin_extension_extension $extension The extension instance + * @return string The HTML code + */ + function make_linkbar(helper_plugin_extension_extension $extension) { + $return = ''; + $return .= $this->make_homepagelink($extension); + if ($extension->getBugtrackerURL()) { + $return .= ' '.$this->getLang('bugs_features').' '; + } + foreach ($extension->getTags() as $tag) { + $return .= hsc($tag).' '; //$this->manager->handler->html_taglink($tag); + } + $return .= ''; + return $return; + } + + /** + * Notice area + * + * @param helper_plugin_extension_extension $extension The extension + * @return string The HTML code + */ + function make_noticearea(helper_plugin_extension_extension $extension) { + $return = ''; + $missing_dependencies = $extension->getMissingDependencies(); + if(!empty($missing_dependencies)) { + $return .= '
    '. + sprintf($this->getLang('missing_dependency'), implode(', ', /*array_map(array($this->helper, 'make_extensionsearchlink'),*/ $missing_dependencies)). + '
    '; + } + if($extension->isInWrongFolder()) { + $return .= '
    '. + sprintf($this->getLang('wrong_folder'), hsc($extension->getInstallName()), hsc($extension->getBase())). + '
    '; + } + if(($securityissue = $extension->getSecurityIssue()) !== false) { + $return .= '
    '. + sprintf($this->getLang('security_issue'), hsc($securityissue )). + '
    '; + } + if(($securitywarning = $extension->getSecurityWarning()) !== false) { + $return .= '
    '. + sprintf($this->getLang('security_warning'), hsc($securitywarning)). + '
    '; + } + if($extension->updateAvailable()) { + $return .= '
    '. + sprintf($this->getLang('update_available'), hsc($extension->getLastUpdate())). + '
    '; + } + if($extension->hasDownloadURLChanged()) { + $return .= '
    '. + sprintf($this->getLang('url_change'), hsc($extension->getDownloadURL()), hsc($extension->getLastDownloadURL())). + '
    '; + } + return $return; + } + + /** + * Create a link from the given URL + * + * Shortens the URL for display + * + * @param string $url + * + * @return string HTML link + */ + function shortlink($url){ + $link = parse_url($url); + + $base = $link['host']; + if($link['port']) $base .= $base.':'.$link['port']; + $long = $link['path']; + if($link['query']) $long .= $link['query']; + + $name = shorten($base, $long, 55); + + return ''.hsc($name).''; + } + + /** + * Plugin/template details + * + * @param helper_plugin_extension_extension $extension The extension + * @return string The HTML code + */ + function make_info(helper_plugin_extension_extension $extension) { + $default = $this->getLang('unknown'); + $return = '
    '; + + if (!$extension->isBundled()) { + $return .= '
    '.$this->getLang('downloadurl').'
    '; + $return .= '
    '; + $return .= ($extension->getDownloadURL() ? $this->shortlink($extension->getDownloadURL()) : $default); + $return .= '
    '; + + $return .= '
    '.$this->getLang('repository').'
    '; + $return .= '
    '; + $return .= ($extension->getSourcerepoURL() ? $this->shortlink($extension->getSourcerepoURL()) : $default); + $return .= '
    '; + } + + if ($extension->isInstalled()) { + if ($extension->getInstalledVersion()) { + $return .= '
    '.$this->getLang('installed_version').'
    '; + $return .= '
    '; + $return .= hsc($extension->getInstalledVersion()); + $return .= '
    '; + } else { + $return .= '
    '.$this->getLang('install_date').'
    '; + $return .= '
    '; + $return .= ($extension->getUpdateDate() ? hsc($extension->getUpdateDate()) : $this->getLang('unknown')); + $return .= '
    '; + } + } + if (!$extension->isInstalled() || $extension->updateAvailable()) { + $return .= '
    '.$this->getLang('available_version').'
    '; + $return .= '
    '; + $return .= ($extension->getLastUpdate() ? hsc($extension->getLastUpdate()) : $this->getLang('unknown')); + $return .= '
    '; + } + + if($extension->getInstallDate()) { + $return .= '
    '.$this->getLang('installed').'
    '; + $return .= '
    '; + $return .= hsc($extension->getInstallDate()); + $return .= '
    '; + } + + $return .= '
    '.$this->getLang('provides').'
    '; + $return .= '
    '; + $return .= ($extension->getTypes() ? hsc(implode(', ', $extension->getTypes())) : $default); + $return .= '
    '; + + if($extension->getCompatibleVersions()) { + $return .= '
    '.$this->getLang('compatible').'
    '; + $return .= '
    '; + foreach ($extension->getCompatibleVersions() as $date => $version) { + $return .= $version['label'].' ('.$date.'), '; + } + $return .= '
    '; + } + if($extension->getDependencies()) { + $return .= '
    '.$this->getLang('depends').'
    '; + $return .= '
    '; + $return .= $this->make_linklist($extension->getDependencies()); + $return .= '
    '; + } + + if($extension->getSimilarExtensions()) { + $return .= '
    '.$this->getLang('similar').'
    '; + $return .= '
    '; + $return .= $this->make_linklist($extension->getSimilarExtensions()); + $return .= '
    '; + } + + if($extension->getConflicts()) { + $return .= '
    '.$this->getLang('conflicts').'
    '; + $return .= '
    '; + $return .= $this->make_linklist($extension->getConflicts()); + $return .= '
    '; + } + if ($extension->getDonationURL()) { + $return .= ''; + } + $return .= '
    '; + return $return; + } + + /** + * Generate a list of links for extensions + * @param array $links The links + * @return string The HTML code + */ + function make_linklist($links) { + $return = ''; + foreach ($links as $link) { + $dokulink = hsc($link); + if (strpos($link, 'template:') !== 0) $dokulink = 'plugin:'.$dokulink; + $return .= ''.$link.' '; + } + return $return; + } + + /** + * Display the action buttons if they are possible + * + * @param helper_plugin_extension_extension $extension The extension + * @return string The HTML code + */ + function make_actions(helper_plugin_extension_extension $extension) { + $return = ''; + if (!$extension->isInstalled() && $extension->canModify() === true) { + $return .= $this->make_action('install', $extension); + } elseif ($extension->canModify()) { + if (!$extension->isBundled()) { + $return .= $this->make_action('uninstall', $extension); + if ($extension->getDownloadURL()) { + if ($extension->updateAvailable()) { + $return .= $this->make_action('update', $extension); + } else { + $return .= $this->make_action('reinstall', $extension); + } + } + } + if (!$extension->isProtected()) { + if ($extension->isEnabled()) { + $return .= $this->make_action('disable', $extension); + } else { + $return .= $this->make_action('enable', $extension); + } + } + } + + if (!$extension->isInstalled()) { + $return .= ' '.$this->getLang('available_version').' '; + $return .= ($extension->getLastUpdate() ? hsc($extension->getLastUpdate()) : $this->getLang('unknown')).''; + } + + return $return; + } + + /** + * Display an action button for an extension + * + * @param string $action The action + * @param helper_plugin_extension_extension $extension The extension + * @param bool $showinfo If the info block is shown + * @return string The HTML code + */ + function make_action($action, $extension, $showinfo = false) { + $title = $revertAction = $extraClass = ''; + + switch ($action) { + case 'info': + $title = 'title="'.$this->getLang('btn_info').'"'; + if ($showinfo) { + $revertAction = '-'; + $extraClass = 'close'; + } + break; + case 'install': + case 'reinstall': + $title = 'title="'.$extension->getDownloadURL().'"'; + break; + } + + $classes = 'button '.$action.' '.$extraClass; + $name = 'fn['.$action.']['.$revertAction.hsc($extension->getInstallName()).']'; + + return ''; + } +} diff --git a/lib/plugins/extension/images/disabled.png b/lib/plugins/extension/images/disabled.png new file mode 100644 index 000000000..7a0dbb3b5 Binary files /dev/null and b/lib/plugins/extension/images/disabled.png differ diff --git a/lib/plugins/extension/images/donate.png b/lib/plugins/extension/images/donate.png new file mode 100644 index 000000000..b26ceb66e Binary files /dev/null and b/lib/plugins/extension/images/donate.png differ diff --git a/lib/plugins/extension/images/down.png b/lib/plugins/extension/images/down.png new file mode 100644 index 000000000..df7beda4e Binary files /dev/null and b/lib/plugins/extension/images/down.png differ diff --git a/lib/plugins/extension/images/enabled.png b/lib/plugins/extension/images/enabled.png new file mode 100644 index 000000000..7c051cda1 Binary files /dev/null and b/lib/plugins/extension/images/enabled.png differ diff --git a/lib/plugins/extension/images/icons.xcf b/lib/plugins/extension/images/icons.xcf new file mode 100644 index 000000000..a99747d81 Binary files /dev/null and b/lib/plugins/extension/images/icons.xcf differ diff --git a/lib/plugins/extension/images/license.txt b/lib/plugins/extension/images/license.txt new file mode 100644 index 000000000..254b9cdf6 --- /dev/null +++ b/lib/plugins/extension/images/license.txt @@ -0,0 +1,4 @@ +enabled.png - CC-BY-ND, (c) Emey87 http://www.iconfinder.com/icondetails/65590/48/lightbulb_icon +disabled.png - CC-BY-ND, (c) Emey87 http://www.iconfinder.com/icondetails/65589/48/idea_lightbulb_off_icon +plugin.png - public domain, (c) nicubunu, http://openclipart.org/detail/15093/blue-jigsaw-piece-07-by-nicubunu +template.png - public domain, (c) mathec, http://openclipart.org/detail/166596/palette-by-mathec diff --git a/lib/plugins/extension/images/plugin.png b/lib/plugins/extension/images/plugin.png new file mode 100644 index 000000000..b9133681f Binary files /dev/null and b/lib/plugins/extension/images/plugin.png differ diff --git a/lib/plugins/extension/images/template.png b/lib/plugins/extension/images/template.png new file mode 100644 index 000000000..383c4d0a3 Binary files /dev/null and b/lib/plugins/extension/images/template.png differ diff --git a/lib/plugins/extension/images/up.png b/lib/plugins/extension/images/up.png new file mode 100644 index 000000000..ec9337715 Binary files /dev/null and b/lib/plugins/extension/images/up.png differ diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index f0999ff01..b3a451ecc 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -3,6 +3,7 @@ * English language file for extension plugin * * @author Michael Hamann + * @author Christopher Smith */ // menu entry for admin plugins @@ -16,6 +17,100 @@ $lang['pluginlistsaveerror'] = 'There was an error saving the plugin list'; $lang['unknownauthor'] = 'Unknown author'; $lang['unknownversion'] = 'Unknown version'; +// extension list +$lang['btn_info'] = 'Show more info'; +$lang['btn_update'] = 'Update'; +$lang['btn_uninstall'] = 'Uninstall'; +$lang['btn_enable'] = 'Enable'; +$lang['btn_disable'] = 'Disable'; +//$lang['btn_disable_all'] = 'Disable all'; +//$lang['btn_settings'] = 'Settings'; +$lang['btn_install'] = 'Install'; +$lang['btn_reinstall'] = 'Re-install'; +//$lang['btn_disdown'] = 'Download as Disabled'; +//$lang['btn_dependown'] = 'Download with dependencies'; + +$lang['extensionby'] = '%s by %s'; +$lang['popularity'] = 'Popularity: %s'; +$lang['homepage_link'] = 'Docs'; +$lang['bugs_features'] = 'Bugs'; +$lang['author_hint'] = 'Search extensions by this author'; +$lang['tag_hint'] = 'Search extensions with this tag'; +$lang['installed'] = 'Installed:'; +$lang['lastupdate'] = 'Last updated:'; +$lang['downloadurl'] = 'Download URL:'; +$lang['repository'] = 'Repository:'; +$lang['unknown'] = 'unknown'; +$lang['installed_version'] = 'Installed version:'; +$lang['install_date'] = 'Your last update:'; +$lang['available_version'] = 'Version:'; +$lang['compatible'] = 'Compatible with:'; +$lang['depends'] = 'Depends on:'; +$lang['similar'] = 'Similar to:'; +$lang['conflicts'] = 'Conflicts with:'; +$lang['donate'] = 'Donate'; +$lang['bundled'] = 'bundled'; +$lang['manual_install'] = 'manual install'; + +$lang['msg_tpl_uninstalled'] = 'Template %s uninstalled'; +$lang['msg_tpl_uninstalled'] = 'Template %s could not be uninstalled'; +$lang['msg_uninstalled'] = 'Plugin %s uninstalled'; +$lang['msg_uninstalled'] = 'Plugin %s could not be uninstalled'; + +$lang['msg_tpl_enabled'] = 'Template %s enabled'; +$lang['msg_tpl_notenabled'] = 'Template %s could not be enabled, check file permissions'; +$lang['msg_enabled'] = 'Plugin %s enabled'; +$lang['msg_notenabled'] = 'Plugin %s could not be enabled, check file permissions'; + +$lang['msg_disabled'] = 'Plugin %s disabled'; +$lang['msg_notdisabled'] = 'Plugin %s could not be disabled, check file permissions'; + +$lang['msg_url_failed'] = 'URL [%s] could not be downloaded.
    %s'; +$lang['msg_download_failed'] = 'Plugin %s could not be downloaded.
    %s'; +$lang['msg_download_success'] = 'Plugin %s installed successfully'; +$lang['msg_tpl_download_failed'] = 'Template %s could not be downloaded.
    %s'; +$lang['msg_tpl_download_success'] = 'Template %s installed successfully'; +$lang['msg_download_pkg_success'] = '%s extension package successfully installed (%s)'; +$lang['msg_tpl_download_pkg_success'] = '%s extension package successfully installed (%s)'; + +$lang['msg_update_success'] = 'Plugin %s successfully updated'; +$lang['msg_update_failed'] = 'Update of plugin %s failed.
    %s'; +$lang['msg_tpl_update_success'] = 'Template %s successfully updated'; +$lang['msg_tpl_update_failed'] = 'Update of template %s failed.
    %s'; +$lang['msg_update_pkg_success'] = '%s extension package successfully updated (%s)'; +$lang['msg_tpl_update_pkg_success'] = '%s extension package successfully updated (%s)'; + +$lang['msg_reinstall_success'] = 'Plugin %s re-installed successfully'; +$lang['msg_reinstall_failed'] = 'Failed to re-install plugin %s.
    %s'; +$lang['msg_tpl_reinstall_success'] = 'Template %s re-installed successfully'; +$lang['msg_tpl_reinstall_failed'] = 'Failed to re-install template %s.
    %s'; +$lang['msg_reinstall_pkg_success'] = '%s extension package successfully reinstalled (%s)'; +$lang['msg_tpl_reinstall_pkg_success'] = '%s extension package successfully reinstalled (%s)'; + +// info titles +$lang['plugin'] = 'Plugin'; +$lang['provides'] = 'Provides:'; +$lang['noinfo'] = 'This plugin returned no information, it may be invalid.'; +$lang['name'] = 'Name:'; +$lang['date'] = 'Date:'; +$lang['type'] = 'Type:'; +$lang['desc'] = 'Description:'; +$lang['author'] = 'Author:'; +$lang['www'] = 'Web:'; + +// error messages +$lang['needed_by'] = 'Needed by:'; +$lang['not_writable'] = 'DokuWiki can not write to the folder'; +$lang['missing_dependency'] = 'Missing or disabled dependency: %s'; +$lang['security_issue'] = 'Security Issue: %s'; +$lang['security_warning'] = 'Security Warning: %s'; +$lang['update_available'] = 'Update: New version %s is available.'; +$lang['wrong_folder'] = 'Plugin installed incorrectly: Rename plugin directory "%s" to "%s".'; +$lang['url_change'] = 'URL changed: Download URL has changed since last download. Check if the new URL is valid before updating the extension.
    New: %s
    Old: %s'; +$lang['gitmanaged'] = 'Extension installed with git'; +$lang['bundled_source'] = 'Bundled with DokuWiki source'; +$lang['no_url'] = 'No download URL'; +$lang['no_manager'] = 'Could not find manager.dat file'; $lang['error_badurl'] = 'URL ends with slash - unable to determine file name from the url'; $lang['error_dircreate'] = 'Unable to create temporary folder to receive download'; @@ -23,5 +118,4 @@ $lang['error_download'] = 'Unable to download the file: %s'; $lang['error_decompress'] = 'Unable to decompress the downloaded file. This maybe as a result of a bad download, in which case you should try again; or the compression format may be unknown, in which case you will need to download and install manually'; $lang['error_findfolder'] = 'Unable to identify extension directory, you need to download and install manually'; $lang['error_copy'] = 'There was a file copy error while attempting to install files for directory %s: the disk could be full or file access permissions may be incorrect. This may have resulted in a partially installed plugin and leave your wiki installation unstable'; - //Setup VIM: ex: et ts=4 : diff --git a/lib/plugins/extension/style.css b/lib/plugins/extension/style.css new file mode 100644 index 000000000..1cce52be8 --- /dev/null +++ b/lib/plugins/extension/style.css @@ -0,0 +1,368 @@ +/* + * Extension plugin styles + * + * @author Christopher Smith + * @author Piyush Mishra + * @author Håkan Sandell + * @author Anika Henke + */ + +/* + * tab support not included in "Angua", copied from _mediamanager.css + */ +#extension__manager .panelHeader { + background-color: __background_alt__; + margin-bottom: 10px; + padding: 10px; + text-align: left; + /* to counter partly missing border of ul.tabs: */ + border-top: 1px solid __border__; + margin-top: -1px; +} + +#extension__manager .panelHeader p { + float: left; + font-weight: normal; + font-size: 1em; + padding: 0; + margin: 0 0 3px; +} +[dir=rtl] #extension__manager .panelHeader p { + float: right; +} + +#extension__manager ul.tabs div.message { + display: inline; + margin: 0 .5em; +} + +/* + * general layout + */ +#extension__manager h2 { + margin-left: 0; +} + +#extension__manager a.taglink { + padding: 1px 4px; + background-color: __background_neu__; + border-radius: 3px; +} +[dir=rtl] #extension__manager a.taglink { + display: inline-block; + line-height: 1.2; +} + +#extension__manager .panelHeader div.error { + margin-top: 0; + float: left; +} +[dir=rtl] #extension__manager .panelHeader div.error { + float: right; +} + +/* + * search & url download forms + */ +#extension__manager form.search, +#extension__manager form.btn_reload { + float: right; +} +[dir=rtl] #extension__manager form.search, +[dir=rtl] #extension__manager form.btn_reload { + float: left; +} + +#extension__manager div.search form.search { + float: none; +} + +#extension__manager .tagcloud { + width: 55%; + float: left; + margin: 0 0.5em 1em 0; +} +[dir=rtl] #extension__manager .tagcloud { + float: right; + margin: 0 0 1em .5em; +} + +#extension__manager .tagcloud a.taglink { + background-color: inherit; +} + +#extension__manager div.search { + width: 44%; + float: left; +} +[dir=rtl] #extension__manager div.search { + float: right; +} + +#extension__manager fieldset { + margin-top: 0.5em; + width: auto; +} + +#extension__manager fieldset p { + margin: 0.5em; + text-align: justify; + font-size: 85%; +} + +/* tag cloud */ +#extension__manager a.cl0 { font-size: 0.7em; } +#extension__manager a.cl1 { font-size: 0.9em; } +#extension__manager a.cl2 { font-size: 1em; } +#extension__manager a.cl3 { font-size: 1.3em; } +#extension__manager a.cl4 { font-size: 1.6em; } +#extension__manager a.cl5 { font-size: 1.9em; } + + +#extension__manager .extensionList input.button { + margin: 0 .3em .3em 0; +} +[dir=rtl] #extension__manager .extensionList input.button { + margin: 0 0 .3em .3em; +} + +/* + * extensions table + */ +#extension__manager .extensionList { + margin-left: 0; + margin-right: 0; + padding: 0; + list-style: none; +} + +#extension__manager .extensionList li { + margin: 0 0 .5em; + padding: 0 0 .5em; + color: __text__; + border-bottom: 1px solid __border__; + overflow: hidden; +} + +#extension__manager .legend { + position: relative; + width: 75%; + float: left; +} +[dir=rtl] #extension__manager .legend { + float: right; +} + +#extension__manager .legend > div { + padding: 0 .5em 0 132px; + border-right: 1px solid __background_alt__; + overflow: hidden; +} +[dir=rtl] #extension__manager .legend > div { + padding: 0 132px 0 .5em; + border-left: 1px solid __background_alt__; + border-right-width: 0; +} + +#extension__manager .enabled div.screenshot span { + background: transparent url(images/enabled.png) no-repeat 2px 2px; +} + +#extension__manager .disabled div.screenshot span { + background: transparent url(images/disabled.png) no-repeat 2px 2px; +} + +#extension__manager .legend div.screenshot { + margin-top: 4px; + margin-left: -132px; + max-width: 120px; + float: left; +} +[dir=rtl] #extension__manager .legend div.screenshot { + margin-left: 0; + margin-right: -132px; + float: right; +} + +#extension__manager .legend div.screenshot span { + min-height: 24px; + min-width: 24px; + position: absolute; + left: 0; +} +[dir=rtl] #extension__manager .legend div.screenshot span { + left: auto; + right: 0; +} + +#extension__manager .legend h2 { + width: 100%; + float: right; + margin: 0.2em 0 0.5em; + font-size: 100%; + font-weight: normal; + border: none; +} +[dir=rtl] #extension__manager .legend h2 { + float: left; +} + +#extension__manager .legend h2 strong { + font-size: 120%; + font-weight: bold; + vertical-align: baseline; +} + +#extension__manager .legend p { + margin: 0 0 0.6em 0; +} + +#extension__manager .legend span.linkbar { + font-size: 85%; +} + +#extension__manager .legend span.linkbar a.urlextern + a.taglink, +#extension__manager .legend span.linkbar a.interwiki + a.taglink { + margin-left: 0.4em; +} +[dir=rtl] #extension__manager .legend span.linkbar a.urlextern + a.taglink, +[dir=rtl] #extension__manager .legend span.linkbar a.interwiki + a.taglink { + margin-left: 0; +} +[dir=rtl] #extension__manager .legend span.linkbar a.urlextern, +[dir=rtl] #extension__manager .legend span.linkbar a.interwiki { + margin-left: .4em; +} + +#extension__manager .legend input.button { + background: transparent url(images/up.png) no-repeat 0 0; + box-shadow: none; + border-width: 0; + height: 14px; + text-indent: -99999px; + float: right; + margin: .5em 0 0; +} +[dir=rtl] #extension__manager .legend input.button { + float: left; + margin: .5em 0 0; +} + +#extension__manager .legend input.button.close { + background: transparent url(images/down.png) no-repeat 0 0; +} + +#extension__manager .legend div.popularity { + background-color: __background__; + border: 1px solid silver; + height: .4em; + margin: 0 auto; + padding: 1px; + width: 5.5em; + position: absolute; + right: .5em; + top: 0.2em; +} +[dir=rtl] #extension__manager .legend div.popularity { + right: auto; + left: .5em; +} + +#extension__manager .legend div.popularity div { + background-color: __border__; + height: 100%; +} + +#extension__manager .legend div.popularity div span { + display: none;/* @todo: hide accessibly */ +} + +#extension__manager .actions { + padding: 0; + font-size: 95%; + width: 25%; + float: right; + text-align: right; +} +[dir=rtl] #extension__manager .actions { + float: left; + text-align: left; +} + +#extension__manager .actions .version { + display: block; +} + +#extension__manager .actions p { + margin: 0.2em 0; + text-align: center; +} + +/* + * extensions table, detailed info box + */ +#extension__manager dl.details { + margin: 0.4em 0 0 0; + font-size: 85%; + border-top: 1px solid __background_alt__; + clear: both; +} + +#extension__manager dl.details dt { + clear: left; + float: left; + width: 25%; + margin: 0; + text-align: right; + font-weight: normal; + padding: 0.2em 5px 0 0; +} +[dir=rtl] #extension__manager dl.details dt { + clear: right; + float: right; + text-align: left; + padding: 0.2em 0 0 5px; +} + +#extension__manager dl.details dd { + margin-left: 25%; + font-weight: bold; + padding: 0.2em 0 0 5px; +} +[dir=rtl] #extension__manager dl.details dd { + margin-left: 0; + margin-right: 25%; + padding: 0.2em 5px 0 0 ; +} + +#extension__manager dl.details dd a { + font-weight: normal; +} + +#extension__manager #info__popup { + z-index: 20; + overflow: hidden; + opacity: 0.9; + border: 1px solid __border__; + background-color: __border__; /*background_other__;*/ + text-align: left; + padding: 0.2em; +} +[dir=rtl] #extension__manager #info__popup { + text-align: right; +} + +#extension__manager div.msg { + margin: 0.4em 0 0 0; +} + +#extension__manager ul.tabs div.msg { + display: inline; + margin-left: 0.4em; +} +[dir=rtl] #extension__manager ul.tabs div.msg { + margin-left: 0; + margin-right: 0.4em; +} + +/* end admin plugin styles */ -- cgit v1.2.3 From dfabb2233685be891929dd4065c257a025dc3151 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 18:20:45 +0200 Subject: added tabURL builder --- lib/plugins/extension/helper/list.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index ffb88114d..e8b4f472f 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -474,4 +474,24 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { return ''; } + + /** + * Create an URL inside the extension manager + * + * @param string tab tb to load, empty for current tab + * @param array $params associative array of parameter to set + * @return string + */ + static public function tabURL($tab='', $params=array()){ + global $ID; + global $INPUT; + + if(!$tab) $tab = $INPUT->str('tab', 'installed', true); + $defaults = array( + 'do' => 'admin', + 'page' => 'extension', + 'tab' => $tab, + ); + return wl($ID, array_merge($defaults, $params)); + } } -- cgit v1.2.3 From b8d600ef317ee91b73133cc7af7a83cf12d5d0d9 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 18:21:08 +0200 Subject: fixed screenshot height --- lib/plugins/extension/style.css | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/style.css b/lib/plugins/extension/style.css index 1cce52be8..0a3a0cc0e 100644 --- a/lib/plugins/extension/style.css +++ b/lib/plugins/extension/style.css @@ -172,6 +172,11 @@ background: transparent url(images/disabled.png) no-repeat 2px 2px; } +#extension__manager div.screenshot img { + width: 120px; + height: 70px; +} + #extension__manager .legend div.screenshot { margin-top: 4px; margin-left: -132px; -- cgit v1.2.3 From 141407788877f98d4acc6eabc7cc3e831eaa8317 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 18:22:39 +0200 Subject: fixed typo in define --- lib/plugins/extension/helper/repository.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/repository.php b/lib/plugins/extension/helper/repository.php index 37b9bc02c..459d7cbec 100644 --- a/lib/plugins/extension/helper/repository.php +++ b/lib/plugins/extension/helper/repository.php @@ -6,8 +6,10 @@ * @author Michael Hamann */ +define('EXTENSION_REPOSITORY_API', 'http://localhost/dokuwiki/lib/plugins/pluginrepo/api.php'); + if (!defined('EXTENSION_REPOSITORY_API_ENDPOINT')) - define('EXTENSION_REPSITORY_API', 'http://www.dokuwiki.org/lib/plugins/pluginrepo/api.php'); + define('EXTENSION_REPOSITORY_API', 'http://www.dokuwiki.org/lib/plugins/pluginrepo/api.php'); // must be run within Dokuwiki if(!defined('DOKU_INC')) die(); @@ -40,7 +42,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { if ($request_needed) { $httpclient = new DokuHTTPClient(); - $data = $httpclient->post(EXTENSION_REPSITORY_API, $request_data); + $data = $httpclient->post(EXTENSION_REPOSITORY_API, $request_data); if ($data !== false) { $extensions = unserialize($data); foreach ($extensions as $extension) { @@ -66,7 +68,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { if (!$cache->useCache(array('age' => 3600 * 24))) { $httpclient = new DokuHTTPClient(); $httpclient->timeout = 5; - $data = $httpclient->get(EXTENSION_REPSITORY_API.'?cmd=ping'); + $data = $httpclient->get(EXTENSION_REPOSITORY_API.'?cmd=ping'); if ($data !== false) { $this->has_access = true; $cache->storeCache(1); @@ -93,7 +95,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { if (!isset($this->loaded_extensions[$name]) && $this->hasAccess() && !$cache->useCache(array('age' => 3600 * 24))) { $this->loaded_extensions[$name] = true; $httpclient = new DokuHTTPClient(); - $data = $httpclient->get(EXTENSION_REPSITORY_API.'?fmt=php&ext[]='.urlencode($name)); + $data = $httpclient->get(EXTENSION_REPOSITORY_API.'?fmt=php&ext[]='.urlencode($name)); if ($data !== false) { $result = unserialize($data); $cache->storeCache(serialize($result[0])); -- cgit v1.2.3 From e45b5c14dbb09dd200d66ff21de1bba960113c68 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 18:24:20 +0200 Subject: added connectivity recheck --- lib/plugins/extension/admin.php | 7 +++++++ lib/plugins/extension/helper/repository.php | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 373f90183..6cad58595 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -39,6 +39,13 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { $repository = $this->loadHelper('extension_repository'); $repository->init(); + if(!$repository->hasAccess()){ + $url = helper_plugin_extension_list::tabURL('', array('purge'=>1)); + + msg('The DokuWiki extension repository can not be reached currently. + Online Features are not available. [retry]', -1); + } + /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); diff --git a/lib/plugins/extension/helper/repository.php b/lib/plugins/extension/helper/repository.php index 459d7cbec..a5012ccb5 100644 --- a/lib/plugins/extension/helper/repository.php +++ b/lib/plugins/extension/helper/repository.php @@ -65,7 +65,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { if ($this->has_access === null) { $cache = new cache('##extension_manager###hasAccess', 'repo'); $result = null; - if (!$cache->useCache(array('age' => 3600 * 24))) { + if (!$cache->useCache(array('age' => 3600 * 24, 'purge'=>1))) { $httpclient = new DokuHTTPClient(); $httpclient->timeout = 5; $data = $httpclient->get(EXTENSION_REPOSITORY_API.'?cmd=ping'); -- cgit v1.2.3 From a8332b68fa9dd8f70d2fc9d9e50c34957cf9e24d Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 18:24:53 +0200 Subject: various gui fixes --- lib/plugins/extension/helper/extension.php | 2 ++ lib/plugins/extension/helper/list.php | 34 +++++++++++++++++++----------- 2 files changed, 24 insertions(+), 12 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 093ee7828..296b81ac5 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -53,6 +53,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { } $this->remoteInfo = $this->repository->getData(($this->isTemplate() ? 'template:' : '').$this->getBase()); + + return ($this->localInfo || $this->remoteInfo); } /** diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index e8b4f472f..816d4a444 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -10,7 +10,7 @@ if(!defined('DOKU_INC')) die(); /** - * Class helper_plugin_extension_extension represents a single extension (plugin or template) + * Class helper_plugin_extension_list takes care of creating a HTML list of extensions */ class helper_plugin_extension_list extends DokuWiki_Plugin { protected $form = ''; @@ -150,16 +150,15 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { if($extension->getAuthor()) { - $params = array( - 'do'=>'admin', - 'page'=>'extension', - 'tab'=>'search', - 'q'=>'author:'.$extension->getAuthor() - ); - $url = wl($ID, $params); - return ''.hsc($extension->getAuthor()).''; + $mailid = $extension->getEmailID(); + if($mailid){ + $url = $this->tabURL('search', array('q' => 'mailid:'.$mailid)); + return ''.hsc($extension->getAuthor()).''; + }else{ + return ''.hsc($extension->getAuthor()).''; + } } - return "".$this->getLang('unknown_author').""; + return "".$this->getLang('unknown_author').""; } /** @@ -231,8 +230,19 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { if ($extension->getBugtrackerURL()) { $return .= ' '.$this->getLang('bugs_features').' '; } - foreach ($extension->getTags() as $tag) { - $return .= hsc($tag).' '; //$this->manager->handler->html_taglink($tag); + if($extension->getTags()){ + $first = true; + echo ''; + foreach ($extension->getTags() as $tag) { + if(!$first){ + $return .= ', '; + }else{ + $first = false; + } + $url = $this->tabURL('search', array('q' => 'tag:'.$tag)); + $return .= ''.hsc($tag).''; + } + echo ''; } $return .= ''; return $return; -- cgit v1.2.3 From d7410643d8e3db12a76845370d8eee2508fa6115 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 19:46:02 +0200 Subject: added tab navigation --- lib/plugins/extension/admin.php | 49 +++++++++++++++++------ lib/plugins/extension/helper/gui.php | 71 ++++++++++++++++++++++++++++++++++ lib/plugins/extension/helper/list.php | 35 +++++++---------- lib/plugins/extension/lang/en/lang.php | 6 ++- 4 files changed, 126 insertions(+), 35 deletions(-) create mode 100644 lib/plugins/extension/helper/gui.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 6cad58595..4faafedb2 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -14,6 +14,17 @@ if(!defined('DOKU_INC')) die(); */ class admin_plugin_extension extends DokuWiki_Admin_Plugin { protected $infoFor = null; + /** @var helper_plugin_extension_gui */ + protected $gui; + + /** + * Constructor + * + * loads additional helpers + */ + public function __construct(){ + $this->gui = plugin_load('helper', 'extension_gui'); + } /** * @return int sort number in admin menu @@ -40,7 +51,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { $repository->init(); if(!$repository->hasAccess()){ - $url = helper_plugin_extension_list::tabURL('', array('purge'=>1)); + $url = $this->gui->tabURL('', array('purge'=>1)); msg('The DokuWiki extension repository can not be reached currently. Online Features are not available. [retry]', -1); @@ -109,21 +120,35 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { public function html() { /* @var Doku_Plugin_Controller $plugin_controller */ global $plugin_controller; + global $INPUT; ptln('

    '.$this->getLang('menu').'

    '); ptln('
    '); - $pluginlist = $plugin_controller->getList('', true); - /* @var helper_plugin_extension_extension $extension */ - $extension = $this->loadHelper('extension_extension'); - /* @var helper_plugin_extension_list $list */ - $list = $this->loadHelper('extension_list'); - $list->start_form(); - foreach ($pluginlist as $name) { - $extension->setExtension($name, false); - $list->add_row($extension, $name == $this->infoFor); + $this->gui->tabNavigation(); + + switch($INPUT->str('tab','plugins')){ + case 'search': + echo 'search interface'; + break; + case 'plugins': + default: + // FIXME move to function? + + $pluginlist = $plugin_controller->getList('', true); + /* @var helper_plugin_extension_extension $extension */ + $extension = $this->loadHelper('extension_extension'); + /* @var helper_plugin_extension_list $list */ + $list = $this->loadHelper('extension_list'); + $list->start_form(); + foreach ($pluginlist as $name) { + $extension->setExtension($name, false); + $list->add_row($extension, $name == $this->infoFor); + } + $list->end_form(); + $list->render(); } - $list->end_form(); - $list->render(); + + ptln('
    '); } } diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php new file mode 100644 index 000000000..eba5fbc7f --- /dev/null +++ b/lib/plugins/extension/helper/gui.php @@ -0,0 +1,71 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +/** + * Class helper_plugin_extension_list takes care of the overall GUI + */ +class helper_plugin_extension_gui extends DokuWiki_Plugin { + + protected $tabs = array('plugins', 'templates', 'search'); + + /** + * Print the tab navigation + * + * @fixme style active one + */ + public function tabNavigation() { + echo '
      '; + foreach(array('plugins', 'templates', 'search') as $tab) { + $url = $this->tabURL($tab); + if($this->currentTab() == $tab) { + $class = 'class="active"'; + } else { + $class = ''; + } + echo '
    • '.$this->getLang('tab_'.$tab).'
    • '; + } + echo '
    '; + } + + /** + * Return the currently selected tab + * + * @return string + */ + public function currentTab() { + global $INPUT; + + $tab = $INPUT->str('tab', 'plugins', true); + if(!in_array($tab, $this->tabs)) $tab = 'plugins'; + return $tab; + } + + /** + * Create an URL inside the extension manager + * + * @param string $tab tab to load, empty for current tab + * @param array $params associative array of parameter to set + * + * @return string + */ + public function tabURL($tab = '', $params = array()) { + global $ID; + + if(!$tab) $tab = $this->currentTab(); + $defaults = array( + 'do' => 'admin', + 'page' => 'extension', + 'tab' => $tab, + ); + return wl($ID, array_merge($defaults, $params)); + } + +} diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 816d4a444..1c337176d 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -14,6 +14,17 @@ if(!defined('DOKU_INC')) die(); */ class helper_plugin_extension_list extends DokuWiki_Plugin { protected $form = ''; + /** @var helper_plugin_extension_gui */ + protected $gui; + + /** + * Constructor + * + * loads additional helpers + */ + public function __construct(){ + $this->gui = plugin_load('helper', 'extension_gui'); + } function start_form() { $this->form .= '
    '; @@ -152,7 +163,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $mailid = $extension->getEmailID(); if($mailid){ - $url = $this->tabURL('search', array('q' => 'mailid:'.$mailid)); + $url = $this->gui->tabURL('search', array('q' => 'mailid:'.$mailid)); return ''.hsc($extension->getAuthor()).''; }else{ return ''.hsc($extension->getAuthor()).''; @@ -239,7 +250,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { }else{ $first = false; } - $url = $this->tabURL('search', array('q' => 'tag:'.$tag)); + $url = $this->gui->tabURL('search', array('q' => 'tag:'.$tag)); $return .= ''.hsc($tag).''; } echo ''; @@ -484,24 +495,4 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { return ''; } - - /** - * Create an URL inside the extension manager - * - * @param string tab tb to load, empty for current tab - * @param array $params associative array of parameter to set - * @return string - */ - static public function tabURL($tab='', $params=array()){ - global $ID; - global $INPUT; - - if(!$tab) $tab = $INPUT->str('tab', 'installed', true); - $defaults = array( - 'do' => 'admin', - 'page' => 'extension', - 'tab' => $tab, - ); - return wl($ID, array_merge($defaults, $params)); - } } diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index b3a451ecc..4439db879 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -7,7 +7,11 @@ */ // menu entry for admin plugins -$lang['menu'] = 'Extension manager'; +$lang['menu'] = 'Extension Manager'; + +$lang['tab_plugins'] = 'Installed Plugins'; +$lang['tab_templates'] = 'Installed Templates'; +$lang['tab_search'] = 'Search and Install'; // custom language strings for the plugin $lang['notimplemented'] = 'This feature hasn\'t been implemented yet'; -- cgit v1.2.3 From 5d7f3164ea4199d7cf1215a1a8a5785218c9e149 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 20:08:30 +0200 Subject: moved display stuff to gui class, added template list --- lib/plugins/extension/admin.php | 23 +++++----------------- lib/plugins/extension/helper/gui.php | 37 ++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 18 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 4faafedb2..39ce9e947 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -118,34 +118,21 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { * Render HTML output */ public function html() { - /* @var Doku_Plugin_Controller $plugin_controller */ - global $plugin_controller; - global $INPUT; ptln('

    '.$this->getLang('menu').'

    '); ptln('
    '); $this->gui->tabNavigation(); - switch($INPUT->str('tab','plugins')){ + switch($this->gui->currentTab()){ case 'search': echo 'search interface'; break; + case 'templates': + $this->gui->templateList(); + break; case 'plugins': default: - // FIXME move to function? - - $pluginlist = $plugin_controller->getList('', true); - /* @var helper_plugin_extension_extension $extension */ - $extension = $this->loadHelper('extension_extension'); - /* @var helper_plugin_extension_list $list */ - $list = $this->loadHelper('extension_list'); - $list->start_form(); - foreach ($pluginlist as $name) { - $extension->setExtension($name, false); - $list->add_row($extension, $name == $this->infoFor); - } - $list->end_form(); - $list->render(); + $this->gui->pluginList(); } diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index eba5fbc7f..41afc2069 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -16,6 +16,43 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { protected $tabs = array('plugins', 'templates', 'search'); + + public function pluginList(){ + /* @var Doku_Plugin_Controller $plugin_controller */ + global $plugin_controller; + + $pluginlist = $plugin_controller->getList('', true); + /* @var helper_plugin_extension_extension $extension */ + $extension = $this->loadHelper('extension_extension'); + /* @var helper_plugin_extension_list $list */ + $list = $this->loadHelper('extension_list'); + $list->start_form(); + foreach ($pluginlist as $name) { + $extension->setExtension($name, false); + $list->add_row($extension, $name == $this->infoFor); + } + $list->end_form(); + $list->render(); + } + + public function templateList(){ + // FIXME do we have a real way? + $tpllist = glob(DOKU_INC.'lib/tpl/*', GLOB_ONLYDIR); + $tpllist = array_map('basename', $tpllist); + + /* @var helper_plugin_extension_extension $extension */ + $extension = $this->loadHelper('extension_extension'); + /* @var helper_plugin_extension_list $list */ + $list = $this->loadHelper('extension_list'); + $list->start_form(); + foreach ($tpllist as $name) { + $extension->setExtension($name, true); + $list->add_row($extension, $name == $this->infoFor); + } + $list->end_form(); + $list->render(); + } + /** * Print the tab navigation * -- cgit v1.2.3 From 1dd40c86eb47f24a2e7c7022592fd9cd25ff07f2 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 20:24:19 +0200 Subject: added intros --- lib/plugins/extension/admin.php | 6 +++--- lib/plugins/extension/helper/gui.php | 22 +++++++++++++++++++--- lib/plugins/extension/lang/en/intro_plugins.txt | 1 + lib/plugins/extension/lang/en/intro_search.txt | 1 + lib/plugins/extension/lang/en/intro_templates.txt | 1 + 5 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 lib/plugins/extension/lang/en/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/en/intro_search.txt create mode 100644 lib/plugins/extension/lang/en/intro_templates.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 39ce9e947..ee180192d 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -125,14 +125,14 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { switch($this->gui->currentTab()){ case 'search': - echo 'search interface'; + $this->gui->tabSearch(); break; case 'templates': - $this->gui->templateList(); + $this->gui->tabTemplates(); break; case 'plugins': default: - $this->gui->pluginList(); + $this->gui->tabPlugins(); } diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index 41afc2069..7c83a3854 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -16,11 +16,15 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { protected $tabs = array('plugins', 'templates', 'search'); - - public function pluginList(){ + /** + * display the plugin tab + */ + public function tabPlugins(){ /* @var Doku_Plugin_Controller $plugin_controller */ global $plugin_controller; + echo $this->locale_xhtml('intro_plugins'); + $pluginlist = $plugin_controller->getList('', true); /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); @@ -35,7 +39,12 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { $list->render(); } - public function templateList(){ + /** + * Display the template tab + */ + public function tabTemplates(){ + echo $this->locale_xhtml('intro_templates'); + // FIXME do we have a real way? $tpllist = glob(DOKU_INC.'lib/tpl/*', GLOB_ONLYDIR); $tpllist = array_map('basename', $tpllist); @@ -53,6 +62,13 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { $list->render(); } + /** + * Display the search tab + */ + public function tabSearch(){ + echo $this->locale_xhtml('intro_search'); + } + /** * Print the tab navigation * diff --git a/lib/plugins/extension/lang/en/intro_plugins.txt b/lib/plugins/extension/lang/en/intro_plugins.txt new file mode 100644 index 000000000..ef180135e --- /dev/null +++ b/lib/plugins/extension/lang/en/intro_plugins.txt @@ -0,0 +1 @@ +Here you can view, enable and disable installed plugins. \ No newline at end of file diff --git a/lib/plugins/extension/lang/en/intro_search.txt b/lib/plugins/extension/lang/en/intro_search.txt new file mode 100644 index 000000000..003c99c61 --- /dev/null +++ b/lib/plugins/extension/lang/en/intro_search.txt @@ -0,0 +1 @@ +Here you can search for available plugins and templates for DokuWiki. Be sure to read more about Plugin Security before installing FIXME add link \ No newline at end of file diff --git a/lib/plugins/extension/lang/en/intro_templates.txt b/lib/plugins/extension/lang/en/intro_templates.txt new file mode 100644 index 000000000..2b3af727b --- /dev/null +++ b/lib/plugins/extension/lang/en/intro_templates.txt @@ -0,0 +1 @@ +Here you can view, enable and disable installed templates. Note that only one template can be activated at a time. \ No newline at end of file -- cgit v1.2.3 From a218edff81be5cec78bfcb0f65042315ae4e656b Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 20:24:28 +0200 Subject: removed test repository again --- lib/plugins/extension/helper/repository.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/repository.php b/lib/plugins/extension/helper/repository.php index a5012ccb5..21082c0d8 100644 --- a/lib/plugins/extension/helper/repository.php +++ b/lib/plugins/extension/helper/repository.php @@ -6,7 +6,7 @@ * @author Michael Hamann */ -define('EXTENSION_REPOSITORY_API', 'http://localhost/dokuwiki/lib/plugins/pluginrepo/api.php'); +#define('EXTENSION_REPOSITORY_API', 'http://localhost/dokuwiki/lib/plugins/pluginrepo/api.php'); if (!defined('EXTENSION_REPOSITORY_API_ENDPOINT')) define('EXTENSION_REPOSITORY_API', 'http://www.dokuwiki.org/lib/plugins/pluginrepo/api.php'); -- cgit v1.2.3 From 7944abddde7619d8d59740cde19743c090d4fd3d Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 4 Aug 2013 20:34:12 +0200 Subject: translated error message --- lib/plugins/extension/admin.php | 4 +--- lib/plugins/extension/lang/en/lang.php | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index ee180192d..c9f37affb 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -52,9 +52,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { if(!$repository->hasAccess()){ $url = $this->gui->tabURL('', array('purge'=>1)); - - msg('The DokuWiki extension repository can not be reached currently. - Online Features are not available. [retry]', -1); + msg($this->getLang('repo_error').' ['.$this->getLang('repo_retry').']', -1); } /* @var helper_plugin_extension_extension $extension */ diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 4439db879..10bf2087f 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -56,6 +56,9 @@ $lang['donate'] = 'Donate'; $lang['bundled'] = 'bundled'; $lang['manual_install'] = 'manual install'; +$lang['repo_error'] = 'The DokuWiki extension repository can not be reached currently. Online Features are not available.'; +$lang['repo_retry'] = 'Retry'; + $lang['msg_tpl_uninstalled'] = 'Template %s uninstalled'; $lang['msg_tpl_uninstalled'] = 'Template %s could not be uninstalled'; $lang['msg_uninstalled'] = 'Plugin %s uninstalled'; -- cgit v1.2.3 From e8dda2c3faf5eb61b68d5afcbea13c5802484b4a Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 13:08:06 +0200 Subject: added gravatar images --- lib/plugins/extension/helper/list.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 1c337176d..843697667 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -164,7 +164,8 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $mailid = $extension->getEmailID(); if($mailid){ $url = $this->gui->tabURL('search', array('q' => 'mailid:'.$mailid)); - return ''.hsc($extension->getAuthor()).''; + return ' '.hsc($extension->getAuthor()).''; + }else{ return ''.hsc($extension->getAuthor()).''; } -- cgit v1.2.3 From 55332151e03b99bbfd15e0fbaae391aae454d9eb Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 13:43:35 +0200 Subject: some initial go at the search tab --- lib/plugins/extension/admin.php | 2 +- lib/plugins/extension/helper/extension.php | 29 +++++++++--- lib/plugins/extension/helper/gui.php | 49 +++++++++++++++---- lib/plugins/extension/helper/repository.php | 73 +++++++++++++++++++++++++++++ 4 files changed, 136 insertions(+), 17 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index c9f37affb..51d4a8d1d 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -48,7 +48,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { // initialize the remote repository /* @var helper_plugin_extension_repository $repository */ $repository = $this->loadHelper('extension_repository'); - $repository->init(); + if(!$repository->hasAccess()){ $url = $this->gui->tabURL('', array('purge'=>1)); diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 296b81ac5..53753fcc1 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -14,8 +14,9 @@ if(!defined('DOKU_TPLLIB')) define('DOKU_TPLLIB', DOKU_INC.'lib/tpl/'); * Class helper_plugin_extension_extension represents a single extension (plugin or template) */ class helper_plugin_extension_extension extends DokuWiki_Plugin { + private $id; private $name; - private $is_template; + private $is_template = false; private $localInfo; private $remoteInfo; private $managerData; @@ -32,13 +33,18 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { /** * Set the name of the extension this instance shall represents, triggers loading the local and remote data * - * @param string $name The base name of the extension - * @param bool $is_template If the extension is a template + * @param string $id The id of the extension (prefixed with template: for templates) * @return bool If some (local or remote) data was found */ - public function setExtension($name, $is_template) { - $this->name = $name; - $this->is_template = $is_template; + public function setExtension($id) { + $this->id = $id; + $this->name = $id; + + if(substr($id, 0 , 9) == 'template'){ + $this->name = substr($id, 10); + $this->is_template = true; + } + $this->localInfo = array(); $this->managerData = array(); $this->remoteInfo = array(); @@ -128,6 +134,17 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { return $this->is_template; } + /** + * Get the ID of the extension + * + * This is the same as getName() for plugins, for templates it's getName() prefixed with 'template:' + * + * @return string + */ + public function getID() { + return $this->id; + } + /** * Get the name of the installation directory * diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index 7c83a3854..cf5b8a347 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -16,10 +16,13 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { protected $tabs = array('plugins', 'templates', 'search'); + /** @var string the extension that should have an open info window FIXME currently broken*/ + protected $infofor = ''; + /** * display the plugin tab */ - public function tabPlugins(){ + public function tabPlugins() { /* @var Doku_Plugin_Controller $plugin_controller */ global $plugin_controller; @@ -31,8 +34,8 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { /* @var helper_plugin_extension_list $list */ $list = $this->loadHelper('extension_list'); $list->start_form(); - foreach ($pluginlist as $name) { - $extension->setExtension($name, false); + foreach($pluginlist as $name) { + $extension->setExtension($name); $list->add_row($extension, $name == $this->infoFor); } $list->end_form(); @@ -42,7 +45,7 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { /** * Display the template tab */ - public function tabTemplates(){ + public function tabTemplates() { echo $this->locale_xhtml('intro_templates'); // FIXME do we have a real way? @@ -54,8 +57,8 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { /* @var helper_plugin_extension_list $list */ $list = $this->loadHelper('extension_list'); $list->start_form(); - foreach ($tpllist as $name) { - $extension->setExtension($name, true); + foreach($tpllist as $name) { + $extension->setExtension("template:$name"); $list->add_row($extension, $name == $this->infoFor); } $list->end_form(); @@ -65,8 +68,34 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { /** * Display the search tab */ - public function tabSearch(){ + public function tabSearch() { + global $INPUT; echo $this->locale_xhtml('intro_search'); + + $form = new Doku_Form(array('action' => $this->tabURL('', array(), '&'))); + $form->addElement(form_makeTextField('q', $INPUT->str('q'), 'Search')); + $form->addElement(form_makeButton('submit', '', 'Search')); + $form->printForm(); + + if(!$INPUT->bool('q')) return; + + + /* @var helper_plugin_extension_repository $repository FIXME should we use some gloabl instance? */ + $repository = $this->loadHelper('extension_repository'); + $result = $repository->search($INPUT->str('q')); + + /* @var helper_plugin_extension_extension $extension */ + $extension = $this->loadHelper('extension_extension'); + /* @var helper_plugin_extension_list $list */ + $list = $this->loadHelper('extension_list'); + $list->start_form(); + foreach($result as $name) { + $extension->setExtension($name); + $list->add_row($extension, $name == $this->infoFor); + } + $list->end_form(); + $list->render(); + } /** @@ -106,10 +135,10 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { * * @param string $tab tab to load, empty for current tab * @param array $params associative array of parameter to set - * + * @param string $sep seperator to build the URL * @return string */ - public function tabURL($tab = '', $params = array()) { + public function tabURL($tab = '', $params = array(), $sep = '&') { global $ID; if(!$tab) $tab = $this->currentTab(); @@ -118,7 +147,7 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { 'page' => 'extension', 'tab' => $tab, ); - return wl($ID, array_merge($defaults, $params)); + return wl($ID, array_merge($defaults, $params), false, $sep); } } diff --git a/lib/plugins/extension/helper/repository.php b/lib/plugins/extension/helper/repository.php index 21082c0d8..98128a9a3 100644 --- a/lib/plugins/extension/helper/repository.php +++ b/lib/plugins/extension/helper/repository.php @@ -109,6 +109,79 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { } return array(); } + + protected function cacheData($name, $data){ + + } + + /** + * Search for plugins or templates using the given query string + * + * @param string $q the query string + * @return array a list of matching extensions + */ + public function search($q){ + $query = $this->parse_query($q); + $query['fmt'] = 'php'; + + $httpclient = new DokuHTTPClient(); + $data = $httpclient->post(EXTENSION_REPOSITORY_API, $query); + if ($data === false) return array(); + $result = unserialize($data); + + $ids = array(); + + // store cache info for each extension + foreach($result as $ext){ + $name = $ext['name']; + $cache = new cache('##extension_manager##'.$name, 'repo'); + $cache->storeCache(serialize($ext)); + $ids[] = $name; + } + + return $ids; + } + + /** + * Parses special queries from the query string + * + * @param string $q + * @return array + */ + protected function parse_query($q){ + $parameters = array( + 'tag' => array(), + 'mail' => array(), + 'type' => array() + ); + + // extract tags + if(preg_match_all('/(^|\s)(tag:([\S]+))/', $q, $matches, PREG_SET_ORDER)){ + foreach($matches as $m){ + $q = str_replace($m[2], '', $q); + $parameters['tag'][] = $m[3]; + } + } + // extract author ids + if(preg_match_all('/(^|\s)(authorid:([\S]+))/', $q, $matches, PREG_SET_ORDER)){ + foreach($matches as $m){ + $q = str_replace($m[2], '', $q); + $parameters['mail'][] = $m[3]; + } + } + // extract types + if(preg_match_all('/(^|\s)(type:([\S]+))/', $q, $matches, PREG_SET_ORDER)){ + foreach($matches as $m){ + $q = str_replace($m[2], '', $q); + $parameters['type'][] = $m[3]; + } + } + + // FIXME make integer from type value + + $parameters['q'] = trim($q); + return $parameters; + } } // vim:ts=4:sw=4:et: -- cgit v1.2.3 From 813d7e0910cdbb80dceef4d952adc551987c84e7 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 14:06:34 +0200 Subject: fixed some confusion between base, id and name --- lib/plugins/extension/admin.php | 8 +++--- lib/plugins/extension/helper/extension.php | 40 ++++++++++++++--------------- lib/plugins/extension/helper/list.php | 8 +++--- lib/plugins/extension/helper/repository.php | 6 +---- 4 files changed, 29 insertions(+), 33 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 51d4a8d1d..7faed142d 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -76,7 +76,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { if ($status !== true) { msg($status, -1); } else { - msg(sprintf($this->getLang('msg_update_success'), hsc($extension->getName())), 1); + msg(sprintf($this->getLang('msg_update_success'), hsc($extension->getDisplayName())), 1); } break; case 'uninstall': @@ -85,7 +85,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { if ($status !== true) { msg($status, -1); } else { - msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getName())), 1); + msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getDisplayName())), 1); } break; case 'enable'; @@ -94,7 +94,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { if ($status !== true) { msg($status, -1); } else { - msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getName())), 1); + msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getDisplayName())), 1); } break; case 'disable'; @@ -103,7 +103,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { if ($status !== true) { msg($status, -1); } else { - msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getName())), 1); + msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getDisplayName())), 1); } break; } diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 53753fcc1..6a152b169 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -15,7 +15,7 @@ if(!defined('DOKU_TPLLIB')) define('DOKU_TPLLIB', DOKU_INC.'lib/tpl/'); */ class helper_plugin_extension_extension extends DokuWiki_Plugin { private $id; - private $name; + private $base; private $is_template = false; private $localInfo; private $remoteInfo; @@ -38,10 +38,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { */ public function setExtension($id) { $this->id = $id; - $this->name = $id; + $this->base = $id; - if(substr($id, 0 , 9) == 'template'){ - $this->name = substr($id, 10); + if(substr($id, 0 , 9) == 'template:'){ + $this->base = substr($id, 9); $this->is_template = true; } @@ -58,7 +58,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { $this->repository = $this->loadHelper('extension_repository'); } - $this->remoteInfo = $this->repository->getData(($this->isTemplate() ? 'template:' : '').$this->getBase()); + $this->remoteInfo = $this->repository->getData($this->getID()); return ($this->localInfo || $this->remoteInfo); } @@ -79,7 +79,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { */ public function isBundled() { if (!empty($this->remoteInfo['bundled'])) return $this->remoteInfo['bundled']; - return in_array($this->name, + return in_array($this->base, array('acl', 'info', 'extension', 'test', 'revert', 'popularity', 'config', 'plugin', 'safefnrecode', 'authplain')); } @@ -89,7 +89,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return bool if the extension is protected */ public function isProtected() { - return in_array($this->name, array('acl', 'config', 'info', 'plugin', 'revert', 'usermanager')); + return in_array($this->base, array('acl', 'config', 'info', 'plugin', 'revert', 'usermanager')); } /** @@ -98,7 +98,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return bool If the extension is installed in the correct directory */ public function isInWrongFolder() { - return $this->name != $this->getBase(); + return $this->base != $this->getBase(); } /** @@ -109,7 +109,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { public function isEnabled() { /* @var Doku_Plugin_Controller $plugin_controller */ global $plugin_controller; - return !$plugin_controller->isdisabled($this->name); + return !$plugin_controller->isdisabled($this->base); } /** @@ -151,7 +151,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return string The name of the installation directory */ public function getInstallName() { - return $this->name; + return $this->base; } // Data from plugin.info.txt/template.info.txt or the repo when not available locally @@ -162,7 +162,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { */ public function getBase() { if (!empty($this->localInfo['base'])) return $this->localInfo['base']; - return $this->name; + return $this->base; } /** @@ -170,10 +170,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * * @return string The display name */ - public function getName() { + public function getDisplayName() { if (!empty($this->localInfo['name'])) return $this->localInfo['name']; if (!empty($this->remoteInfo['name'])) return $this->remoteInfo['name']; - return $this->name; + return $this->base; } /** @@ -468,9 +468,9 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { */ public function getInstallDir() { if ($this->isTemplate()) { - return DOKU_TPLLIB.$this->name; + return DOKU_TPLLIB.$this->base; } else { - return DOKU_PLUGIN.$this->name; + return DOKU_PLUGIN.$this->base; } } @@ -518,7 +518,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { if (!isset($installed_extensions[$this->getBase()])) { $status = 'Error, the requested extension hasn\'t been installed or updated'; } - $this->setExtension($this->name, $this->isTemplate()); + $this->setExtension($this->getID()); $this->purgeCache(); } $this->dir_delete(dirname($path)); @@ -547,7 +547,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { global $plugin_controller; if (!$this->isInstalled()) return $this->getLang('notinstalled'); if ($this->isEnabled()) return $this->getLang('alreadyenabled'); - if ($plugin_controller->enable($this->name)) { + if ($plugin_controller->enable($this->base)) { $this->purgeCache(); return true; } else { @@ -567,7 +567,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { global $plugin_controller; if (!$this->isInstalled()) return $this->getLang('notinstalled'); if (!$this->isEnabled()) return $this->getLang('alreadydisabled'); - if ($plugin_controller->disable($this->name)) { + if ($plugin_controller->disable($this->base)) { $this->purgeCache(); return true; } else { @@ -605,7 +605,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { foreach($plugin_types as $type) { if(@file_exists($path.$type.'.php')) { - $plugin = plugin_load($type, $this->name); + $plugin = plugin_load($type, $this->base); if ($plugin) break; } @@ -613,7 +613,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { while(false !== ($cp = readdir($dh))) { if($cp == '.' || $cp == '..' || strtolower(substr($cp, -4)) != '.php') continue; - $plugin = plugin_load($type, $this->name.'_'.substr($cp, 0, -4)); + $plugin = plugin_load($type, $this->base.'_'.substr($cp, 0, -4)); if ($plugin) break; } if ($plugin) break; diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 843697667..12db5ea3c 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -163,7 +163,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $mailid = $extension->getEmailID(); if($mailid){ - $url = $this->gui->tabURL('search', array('q' => 'mailid:'.$mailid)); + $url = $this->gui->tabURL('search', array('q' => 'authorid:'.$mailid)); return ' '.hsc($extension->getAuthor()).''; }else{ @@ -181,8 +181,8 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { */ function make_screenshot(helper_plugin_extension_extension $extension) { if($extension->getScreenshotURL()) { - $img = ''. - ''.hsc($extension->getName()).''. + $img = ''. + ''.hsc($extension->getDisplayName()).''. ''; } elseif($extension->isTemplate()) { $img = 'template'; @@ -203,7 +203,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { function make_legend(helper_plugin_extension_extension $extension, $showinfo = false) { $return = '
    '; $return .= '

    '; - $return .= sprintf($this->getLang('extensionby'), hsc($extension->getName()), $this->make_author($extension)); + $return .= sprintf($this->getLang('extensionby'), hsc($extension->getDisplayName()), $this->make_author($extension)); $return .= '

    '; $return .= $this->make_screenshot($extension); diff --git a/lib/plugins/extension/helper/repository.php b/lib/plugins/extension/helper/repository.php index 98128a9a3..38e07786e 100644 --- a/lib/plugins/extension/helper/repository.php +++ b/lib/plugins/extension/helper/repository.php @@ -110,10 +110,6 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { return array(); } - protected function cacheData($name, $data){ - - } - /** * Search for plugins or templates using the given query string * @@ -133,7 +129,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { // store cache info for each extension foreach($result as $ext){ - $name = $ext['name']; + $name = $ext['plugin']; $cache = new cache('##extension_manager##'.$name, 'repo'); $cache->storeCache(serialize($ext)); $ids[] = $name; -- cgit v1.2.3 From 89275cfd7e4e8b88724a36ccf7ae7bd29342d494 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 15:22:18 +0200 Subject: added a first unit test --- lib/plugins/extension/_test/extension.test.php | 62 ++++++++++++++++++++++++++ lib/plugins/extension/helper/extension.php | 11 ++++- lib/plugins/extension/plugin.info.txt | 4 +- 3 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 lib/plugins/extension/_test/extension.test.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/_test/extension.test.php b/lib/plugins/extension/_test/extension.test.php new file mode 100644 index 000000000..6dfa49a46 --- /dev/null +++ b/lib/plugins/extension/_test/extension.test.php @@ -0,0 +1,62 @@ +setExtension('extension'); + $this->assertEquals('extension', $extension->getID()); + $this->assertEquals('extension', $extension->getBase()); + $this->assertEquals('Extension Manager', $extension->getDisplayName()); + $this->assertEquals('Michael Hamann', $extension->getAuthor()); + $this->assertEquals('michael@content-space.de', $extension->getEmail()); + $this->assertEquals(md5('michael@content-space.de'), $extension->getEmailID()); + $this->assertEquals('https://www.dokuwiki.org/plugin:extension', $extension->getURL()); + $this->assertEquals('Allows managing and installing plugins and templates', $extension->getDescription()); + $this->assertFalse($extension->isTemplate()); + $this->assertTrue($extension->isEnabled()); + $this->assertTrue($extension->isInstalled()); + $this->assertTrue($extension->isBundled()); + + $extension->setExtension('testing'); + $this->assertEquals('testing', $extension->getID()); + $this->assertEquals('testing', $extension->getBase()); + $this->assertEquals('Testing Plugin', $extension->getDisplayName()); + $this->assertEquals('Tobias Sarnowski', $extension->getAuthor()); + $this->assertEquals('tobias@trustedco.de', $extension->getEmail()); + $this->assertEquals(md5('tobias@trustedco.de'), $extension->getEmailID()); + $this->assertEquals('http://www.dokuwiki.org/plugin:testing', $extension->getURL()); + $this->assertEquals('Used to test the test framework. Should always be disabled.', $extension->getDescription()); + $this->assertFalse($extension->isTemplate()); + $this->assertFalse($extension->isEnabled()); + $this->assertTrue($extension->isInstalled()); + $this->assertTrue($extension->isBundled()); + + $extension->setExtension('template:dokuwiki'); + $this->assertEquals('template:dokuwiki', $extension->getID()); + $this->assertEquals('dokuwiki', $extension->getBase()); + $this->assertEquals('DokuWiki Template', $extension->getDisplayName()); + $this->assertEquals('Anika Henke', $extension->getAuthor()); + $this->assertEquals('anika@selfthinker.org', $extension->getEmail()); + $this->assertEquals(md5('anika@selfthinker.org'), $extension->getEmailID()); + $this->assertEquals('http://www.dokuwiki.org/template:dokuwiki', $extension->getURL()); + $this->assertEquals('DokuWiki\'s default template since 2012', $extension->getDescription()); + $this->assertTrue($extension->isTemplate()); + $this->assertTrue($extension->isEnabled()); + $this->assertTrue($extension->isInstalled()); + $this->assertTrue($extension->isBundled()); + + } + +} \ No newline at end of file diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 6a152b169..88fb5e229 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -80,7 +80,11 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { public function isBundled() { if (!empty($this->remoteInfo['bundled'])) return $this->remoteInfo['bundled']; return in_array($this->base, - array('acl', 'info', 'extension', 'test', 'revert', 'popularity', 'config', 'plugin', 'safefnrecode', 'authplain')); + array('acl', 'info', 'extension', 'test', 'revert', 'popularity', + 'config', 'plugin', 'safefnrecode', 'authplain', 'testing', + 'template:dokuwiki', 'template:default' + ) + ); } /** @@ -107,6 +111,11 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return bool If the extension is enabled */ public function isEnabled() { + global $conf; + if($this->isTemplate()){ + return ($conf['template'] == $this->getBase()); + } + /* @var Doku_Plugin_Controller $plugin_controller */ global $plugin_controller; return !$plugin_controller->isdisabled($this->base); diff --git a/lib/plugins/extension/plugin.info.txt b/lib/plugins/extension/plugin.info.txt index 3c4469ad7..ef16d78a1 100644 --- a/lib/plugins/extension/plugin.info.txt +++ b/lib/plugins/extension/plugin.info.txt @@ -2,6 +2,6 @@ base extension author Michael Hamann email michael@content-space.de date 2013-08-01 -name extension plugin -desc Extension manager +name Extension Manager +desc Allows managing and installing plugins and templates url https://www.dokuwiki.org/plugin:extension -- cgit v1.2.3 From ea9f3f904d439e9af84bdbed8e1a0bba3ed286b2 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 15:31:45 +0200 Subject: added 4th tab for manual install --- lib/plugins/extension/admin.php | 3 +++ lib/plugins/extension/helper/extension.php | 2 +- lib/plugins/extension/helper/gui.php | 11 +++++++++-- lib/plugins/extension/lang/en/intro_install.txt | 1 + lib/plugins/extension/lang/en/lang.php | 1 + 5 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 lib/plugins/extension/lang/en/intro_install.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 7faed142d..cf4eb79d7 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -128,6 +128,9 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { case 'templates': $this->gui->tabTemplates(); break; + case 'install': + $this->gui->tabInstall(); + break; case 'plugins': default: $this->gui->tabPlugins(); diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 88fb5e229..244ec9b9a 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -702,7 +702,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { public function download($url, &$path) { // check the url $matches = array(); - if(!preg_match("/[^\/]*$/", $url, $matches) || !$matches[0]) { + if(!preg_match('/[^\/]*$/', $url, $matches) || !$matches[0]) { return $this->getLang('baddownloadurl'); } $file = $matches[0]; diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index cf5b8a347..09cea7fcb 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -14,7 +14,7 @@ if(!defined('DOKU_INC')) die(); */ class helper_plugin_extension_gui extends DokuWiki_Plugin { - protected $tabs = array('plugins', 'templates', 'search'); + protected $tabs = array('plugins', 'templates', 'search', 'install'); /** @var string the extension that should have an open info window FIXME currently broken*/ protected $infofor = ''; @@ -98,6 +98,13 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { } + /** + * Display the template tab + */ + public function tabInstall() { + echo $this->locale_xhtml('intro_install'); + } + /** * Print the tab navigation * @@ -105,7 +112,7 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { */ public function tabNavigation() { echo '
      '; - foreach(array('plugins', 'templates', 'search') as $tab) { + foreach($this->tabs as $tab) { $url = $this->tabURL($tab); if($this->currentTab() == $tab) { $class = 'class="active"'; diff --git a/lib/plugins/extension/lang/en/intro_install.txt b/lib/plugins/extension/lang/en/intro_install.txt new file mode 100644 index 000000000..f68d2d909 --- /dev/null +++ b/lib/plugins/extension/lang/en/intro_install.txt @@ -0,0 +1 @@ +Here you can manual install plugins and templates by either uploading them or providing a direct download URL. \ No newline at end of file diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 10bf2087f..24cabe1fa 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -12,6 +12,7 @@ $lang['menu'] = 'Extension Manager'; $lang['tab_plugins'] = 'Installed Plugins'; $lang['tab_templates'] = 'Installed Templates'; $lang['tab_search'] = 'Search and Install'; +$lang['tab_install'] = 'Manual Install'; // custom language strings for the plugin $lang['notimplemented'] = 'This feature hasn\'t been implemented yet'; -- cgit v1.2.3 From 2d87f05b99091011a83d131724e9714f9c07f976 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 15:40:05 +0200 Subject: moved CSS to LESS file, removed angua compatibility --- lib/plugins/extension/style.css | 373 --------------------------------------- lib/plugins/extension/style.less | 345 ++++++++++++++++++++++++++++++++++++ 2 files changed, 345 insertions(+), 373 deletions(-) delete mode 100644 lib/plugins/extension/style.css create mode 100644 lib/plugins/extension/style.less (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/style.css b/lib/plugins/extension/style.css deleted file mode 100644 index 0a3a0cc0e..000000000 --- a/lib/plugins/extension/style.css +++ /dev/null @@ -1,373 +0,0 @@ -/* - * Extension plugin styles - * - * @author Christopher Smith - * @author Piyush Mishra - * @author Håkan Sandell - * @author Anika Henke - */ - -/* - * tab support not included in "Angua", copied from _mediamanager.css - */ -#extension__manager .panelHeader { - background-color: __background_alt__; - margin-bottom: 10px; - padding: 10px; - text-align: left; - /* to counter partly missing border of ul.tabs: */ - border-top: 1px solid __border__; - margin-top: -1px; -} - -#extension__manager .panelHeader p { - float: left; - font-weight: normal; - font-size: 1em; - padding: 0; - margin: 0 0 3px; -} -[dir=rtl] #extension__manager .panelHeader p { - float: right; -} - -#extension__manager ul.tabs div.message { - display: inline; - margin: 0 .5em; -} - -/* - * general layout - */ -#extension__manager h2 { - margin-left: 0; -} - -#extension__manager a.taglink { - padding: 1px 4px; - background-color: __background_neu__; - border-radius: 3px; -} -[dir=rtl] #extension__manager a.taglink { - display: inline-block; - line-height: 1.2; -} - -#extension__manager .panelHeader div.error { - margin-top: 0; - float: left; -} -[dir=rtl] #extension__manager .panelHeader div.error { - float: right; -} - -/* - * search & url download forms - */ -#extension__manager form.search, -#extension__manager form.btn_reload { - float: right; -} -[dir=rtl] #extension__manager form.search, -[dir=rtl] #extension__manager form.btn_reload { - float: left; -} - -#extension__manager div.search form.search { - float: none; -} - -#extension__manager .tagcloud { - width: 55%; - float: left; - margin: 0 0.5em 1em 0; -} -[dir=rtl] #extension__manager .tagcloud { - float: right; - margin: 0 0 1em .5em; -} - -#extension__manager .tagcloud a.taglink { - background-color: inherit; -} - -#extension__manager div.search { - width: 44%; - float: left; -} -[dir=rtl] #extension__manager div.search { - float: right; -} - -#extension__manager fieldset { - margin-top: 0.5em; - width: auto; -} - -#extension__manager fieldset p { - margin: 0.5em; - text-align: justify; - font-size: 85%; -} - -/* tag cloud */ -#extension__manager a.cl0 { font-size: 0.7em; } -#extension__manager a.cl1 { font-size: 0.9em; } -#extension__manager a.cl2 { font-size: 1em; } -#extension__manager a.cl3 { font-size: 1.3em; } -#extension__manager a.cl4 { font-size: 1.6em; } -#extension__manager a.cl5 { font-size: 1.9em; } - - -#extension__manager .extensionList input.button { - margin: 0 .3em .3em 0; -} -[dir=rtl] #extension__manager .extensionList input.button { - margin: 0 0 .3em .3em; -} - -/* - * extensions table - */ -#extension__manager .extensionList { - margin-left: 0; - margin-right: 0; - padding: 0; - list-style: none; -} - -#extension__manager .extensionList li { - margin: 0 0 .5em; - padding: 0 0 .5em; - color: __text__; - border-bottom: 1px solid __border__; - overflow: hidden; -} - -#extension__manager .legend { - position: relative; - width: 75%; - float: left; -} -[dir=rtl] #extension__manager .legend { - float: right; -} - -#extension__manager .legend > div { - padding: 0 .5em 0 132px; - border-right: 1px solid __background_alt__; - overflow: hidden; -} -[dir=rtl] #extension__manager .legend > div { - padding: 0 132px 0 .5em; - border-left: 1px solid __background_alt__; - border-right-width: 0; -} - -#extension__manager .enabled div.screenshot span { - background: transparent url(images/enabled.png) no-repeat 2px 2px; -} - -#extension__manager .disabled div.screenshot span { - background: transparent url(images/disabled.png) no-repeat 2px 2px; -} - -#extension__manager div.screenshot img { - width: 120px; - height: 70px; -} - -#extension__manager .legend div.screenshot { - margin-top: 4px; - margin-left: -132px; - max-width: 120px; - float: left; -} -[dir=rtl] #extension__manager .legend div.screenshot { - margin-left: 0; - margin-right: -132px; - float: right; -} - -#extension__manager .legend div.screenshot span { - min-height: 24px; - min-width: 24px; - position: absolute; - left: 0; -} -[dir=rtl] #extension__manager .legend div.screenshot span { - left: auto; - right: 0; -} - -#extension__manager .legend h2 { - width: 100%; - float: right; - margin: 0.2em 0 0.5em; - font-size: 100%; - font-weight: normal; - border: none; -} -[dir=rtl] #extension__manager .legend h2 { - float: left; -} - -#extension__manager .legend h2 strong { - font-size: 120%; - font-weight: bold; - vertical-align: baseline; -} - -#extension__manager .legend p { - margin: 0 0 0.6em 0; -} - -#extension__manager .legend span.linkbar { - font-size: 85%; -} - -#extension__manager .legend span.linkbar a.urlextern + a.taglink, -#extension__manager .legend span.linkbar a.interwiki + a.taglink { - margin-left: 0.4em; -} -[dir=rtl] #extension__manager .legend span.linkbar a.urlextern + a.taglink, -[dir=rtl] #extension__manager .legend span.linkbar a.interwiki + a.taglink { - margin-left: 0; -} -[dir=rtl] #extension__manager .legend span.linkbar a.urlextern, -[dir=rtl] #extension__manager .legend span.linkbar a.interwiki { - margin-left: .4em; -} - -#extension__manager .legend input.button { - background: transparent url(images/up.png) no-repeat 0 0; - box-shadow: none; - border-width: 0; - height: 14px; - text-indent: -99999px; - float: right; - margin: .5em 0 0; -} -[dir=rtl] #extension__manager .legend input.button { - float: left; - margin: .5em 0 0; -} - -#extension__manager .legend input.button.close { - background: transparent url(images/down.png) no-repeat 0 0; -} - -#extension__manager .legend div.popularity { - background-color: __background__; - border: 1px solid silver; - height: .4em; - margin: 0 auto; - padding: 1px; - width: 5.5em; - position: absolute; - right: .5em; - top: 0.2em; -} -[dir=rtl] #extension__manager .legend div.popularity { - right: auto; - left: .5em; -} - -#extension__manager .legend div.popularity div { - background-color: __border__; - height: 100%; -} - -#extension__manager .legend div.popularity div span { - display: none;/* @todo: hide accessibly */ -} - -#extension__manager .actions { - padding: 0; - font-size: 95%; - width: 25%; - float: right; - text-align: right; -} -[dir=rtl] #extension__manager .actions { - float: left; - text-align: left; -} - -#extension__manager .actions .version { - display: block; -} - -#extension__manager .actions p { - margin: 0.2em 0; - text-align: center; -} - -/* - * extensions table, detailed info box - */ -#extension__manager dl.details { - margin: 0.4em 0 0 0; - font-size: 85%; - border-top: 1px solid __background_alt__; - clear: both; -} - -#extension__manager dl.details dt { - clear: left; - float: left; - width: 25%; - margin: 0; - text-align: right; - font-weight: normal; - padding: 0.2em 5px 0 0; -} -[dir=rtl] #extension__manager dl.details dt { - clear: right; - float: right; - text-align: left; - padding: 0.2em 0 0 5px; -} - -#extension__manager dl.details dd { - margin-left: 25%; - font-weight: bold; - padding: 0.2em 0 0 5px; -} -[dir=rtl] #extension__manager dl.details dd { - margin-left: 0; - margin-right: 25%; - padding: 0.2em 5px 0 0 ; -} - -#extension__manager dl.details dd a { - font-weight: normal; -} - -#extension__manager #info__popup { - z-index: 20; - overflow: hidden; - opacity: 0.9; - border: 1px solid __border__; - background-color: __border__; /*background_other__;*/ - text-align: left; - padding: 0.2em; -} -[dir=rtl] #extension__manager #info__popup { - text-align: right; -} - -#extension__manager div.msg { - margin: 0.4em 0 0 0; -} - -#extension__manager ul.tabs div.msg { - display: inline; - margin-left: 0.4em; -} -[dir=rtl] #extension__manager ul.tabs div.msg { - margin-left: 0; - margin-right: 0.4em; -} - -/* end admin plugin styles */ diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less new file mode 100644 index 000000000..40fdb6075 --- /dev/null +++ b/lib/plugins/extension/style.less @@ -0,0 +1,345 @@ +/* + * Extension plugin styles + * + * @author Christopher Smith + * @author Piyush Mishra + * @author Håkan Sandell + * @author Anika Henke + */ + + +/* + * general layout + */ +#extension__manager h2 { + margin-left: 0; +} + +#extension__manager a.taglink { + padding: 1px 4px; + background-color: @ini_background_neu; + border-radius: 3px; +} +[dir=rtl] #extension__manager a.taglink { + display: inline-block; + line-height: 1.2; +} + +#extension__manager .panelHeader div.error { + margin-top: 0; + float: left; +} +[dir=rtl] #extension__manager .panelHeader div.error { + float: right; +} + +/* + * search & url download forms + */ +#extension__manager form.search, +#extension__manager form.btn_reload { + float: right; +} +[dir=rtl] #extension__manager form.search, +[dir=rtl] #extension__manager form.btn_reload { + float: left; +} + +#extension__manager div.search form.search { + float: none; +} + +#extension__manager .tagcloud { + width: 55%; + float: left; + margin: 0 0.5em 1em 0; +} +[dir=rtl] #extension__manager .tagcloud { + float: right; + margin: 0 0 1em .5em; +} + +#extension__manager .tagcloud a.taglink { + background-color: inherit; +} + +#extension__manager div.search { + width: 44%; + float: left; +} +[dir=rtl] #extension__manager div.search { + float: right; +} + +#extension__manager fieldset { + margin-top: 0.5em; + width: auto; +} + +#extension__manager fieldset p { + margin: 0.5em; + text-align: justify; + font-size: 85%; +} + +/* tag cloud */ +#extension__manager a.cl0 { font-size: 0.7em; } +#extension__manager a.cl1 { font-size: 0.9em; } +#extension__manager a.cl2 { font-size: 1em; } +#extension__manager a.cl3 { font-size: 1.3em; } +#extension__manager a.cl4 { font-size: 1.6em; } +#extension__manager a.cl5 { font-size: 1.9em; } + + +#extension__manager .extensionList input.button { + margin: 0 .3em .3em 0; +} +[dir=rtl] #extension__manager .extensionList input.button { + margin: 0 0 .3em .3em; +} + +/* + * extensions table + */ +#extension__manager .extensionList { + margin-left: 0; + margin-right: 0; + padding: 0; + list-style: none; +} + +#extension__manager .extensionList li { + margin: 0 0 .5em; + padding: 0 0 .5em; + color: @ini_text; + border-bottom: 1px solid @ini_border; + overflow: hidden; +} + +#extension__manager .legend { + position: relative; + width: 75%; + float: left; +} +[dir=rtl] #extension__manager .legend { + float: right; +} + +#extension__manager .legend > div { + padding: 0 .5em 0 132px; + border-right: 1px solid @ini_background_alt; + overflow: hidden; +} +[dir=rtl] #extension__manager .legend > div { + padding: 0 132px 0 .5em; + border-left: 1px solid @ini_background_alt; + border-right-width: 0; +} + +#extension__manager .enabled div.screenshot span { + background: transparent url(images/enabled.png) no-repeat 2px 2px; +} + +#extension__manager .disabled div.screenshot span { + background: transparent url(images/disabled.png) no-repeat 2px 2px; +} + +#extension__manager div.screenshot img { + width: 120px; + height: 70px; +} + +#extension__manager .legend div.screenshot { + margin-top: 4px; + margin-left: -132px; + max-width: 120px; + float: left; +} +[dir=rtl] #extension__manager .legend div.screenshot { + margin-left: 0; + margin-right: -132px; + float: right; +} + +#extension__manager .legend div.screenshot span { + min-height: 24px; + min-width: 24px; + position: absolute; + left: 0; +} +[dir=rtl] #extension__manager .legend div.screenshot span { + left: auto; + right: 0; +} + +#extension__manager .legend h2 { + width: 100%; + float: right; + margin: 0.2em 0 0.5em; + font-size: 100%; + font-weight: normal; + border: none; +} +[dir=rtl] #extension__manager .legend h2 { + float: left; +} + +#extension__manager .legend h2 strong { + font-size: 120%; + font-weight: bold; + vertical-align: baseline; +} + +#extension__manager .legend p { + margin: 0 0 0.6em 0; +} + +#extension__manager .legend span.linkbar { + font-size: 85%; +} + +#extension__manager .legend span.linkbar a.urlextern + a.taglink, +#extension__manager .legend span.linkbar a.interwiki + a.taglink { + margin-left: 0.4em; +} +[dir=rtl] #extension__manager .legend span.linkbar a.urlextern + a.taglink, +[dir=rtl] #extension__manager .legend span.linkbar a.interwiki + a.taglink { + margin-left: 0; +} +[dir=rtl] #extension__manager .legend span.linkbar a.urlextern, +[dir=rtl] #extension__manager .legend span.linkbar a.interwiki { + margin-left: .4em; +} + +#extension__manager .legend input.button { + background: transparent url(images/up.png) no-repeat 0 0; + box-shadow: none; + border-width: 0; + height: 14px; + text-indent: -99999px; + float: right; + margin: .5em 0 0; +} +[dir=rtl] #extension__manager .legend input.button { + float: left; + margin: .5em 0 0; +} + +#extension__manager .legend input.button.close { + background: transparent url(images/down.png) no-repeat 0 0; +} + +#extension__manager .legend div.popularity { + background-color: @ini_background; + border: 1px solid silver; + height: .4em; + margin: 0 auto; + padding: 1px; + width: 5.5em; + position: absolute; + right: .5em; + top: 0.2em; +} +[dir=rtl] #extension__manager .legend div.popularity { + right: auto; + left: .5em; +} + +#extension__manager .legend div.popularity div { + background-color: @ini_border; + height: 100%; +} + +#extension__manager .legend div.popularity div span { + display: none;/* @todo: hide accessibly */ +} + +#extension__manager .actions { + padding: 0; + font-size: 95%; + width: 25%; + float: right; + text-align: right; +} +[dir=rtl] #extension__manager .actions { + float: left; + text-align: left; +} + +#extension__manager .actions .version { + display: block; +} + +#extension__manager .actions p { + margin: 0.2em 0; + text-align: center; +} + +/* + * extensions table, detailed info box + */ +#extension__manager dl.details { + margin: 0.4em 0 0 0; + font-size: 85%; + border-top: 1px solid @ini_background_alt; + clear: both; +} + +#extension__manager dl.details dt { + clear: left; + float: left; + width: 25%; + margin: 0; + text-align: right; + font-weight: normal; + padding: 0.2em 5px 0 0; +} +[dir=rtl] #extension__manager dl.details dt { + clear: right; + float: right; + text-align: left; + padding: 0.2em 0 0 5px; +} + +#extension__manager dl.details dd { + margin-left: 25%; + font-weight: bold; + padding: 0.2em 0 0 5px; +} +[dir=rtl] #extension__manager dl.details dd { + margin-left: 0; + margin-right: 25%; + padding: 0.2em 5px 0 0 ; +} + +#extension__manager dl.details dd a { + font-weight: normal; +} + +#extension__manager #info__popup { + z-index: 20; + overflow: hidden; + opacity: 0.9; + border: 1px solid @ini_border; + background-color: @ini_border; /*background_other__;*/ + text-align: left; + padding: 0.2em; +} +[dir=rtl] #extension__manager #info__popup { + text-align: right; +} + +#extension__manager div.msg { + margin: 0.4em 0 0 0; +} + +#extension__manager ul.tabs div.msg { + display: inline; + margin-left: 0.4em; +} +[dir=rtl] #extension__manager ul.tabs div.msg { + margin-left: 0; + margin-right: 0.4em; +} + +/* end admin plugin styles */ -- cgit v1.2.3 From 61746d5540723d7463a0c1d666decb9c164c6678 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 16:07:21 +0200 Subject: added a very simplistic lightbox --- lib/plugins/extension/helper/list.php | 2 +- lib/plugins/extension/images/overlay.png | Bin 0 -> 109 bytes lib/plugins/extension/script.js | 34 +++++++++++++++++++++++++++++++ lib/plugins/extension/style.less | 29 ++++++++++++++++++++++++++ 4 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 lib/plugins/extension/images/overlay.png create mode 100644 lib/plugins/extension/script.js (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 12db5ea3c..62031a69b 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -181,7 +181,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { */ function make_screenshot(helper_plugin_extension_extension $extension) { if($extension->getScreenshotURL()) { - $img = ''. + $img = ''. ''.hsc($extension->getDisplayName()).''. ''; } elseif($extension->isTemplate()) { diff --git a/lib/plugins/extension/images/overlay.png b/lib/plugins/extension/images/overlay.png new file mode 100644 index 000000000..8f92c2fe7 Binary files /dev/null and b/lib/plugins/extension/images/overlay.png differ diff --git a/lib/plugins/extension/script.js b/lib/plugins/extension/script.js new file mode 100644 index 000000000..f2a6aae50 --- /dev/null +++ b/lib/plugins/extension/script.js @@ -0,0 +1,34 @@ +jQuery(function(){ + + + /** + * very simple lightbox + * @link http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/super-simple-lightbox-with-css-and-jquery/ + */ + jQuery('a.extension_screenshot').click(function(e) { + e.preventDefault(); + + //Get clicked link href + var image_href = jQuery(this).attr("href"); + + // create lightbox if needed + var $lightbox = jQuery('#plugin__extensionlightbox'); + if(!$lightbox.length){ + $lightbox = jQuery('

      Click to close

      ') + .appendTo(jQuery('body')) + .hide() + .click(function(){ + $lightbox.hide(); + }); + } + + // fill and show it + $lightbox + .show() + .find('div').html(''); + + + return false; + }); + +}); \ No newline at end of file diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less index 40fdb6075..cd9eeaa74 100644 --- a/lib/plugins/extension/style.less +++ b/lib/plugins/extension/style.less @@ -7,6 +7,35 @@ * @author Anika Henke */ +/** + * very simple lightbox + * @link http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/super-simple-lightbox-with-css-and-jquery/ + */ +#plugin__extensionlightbox { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url(images/overlay.png) repeat; + text-align: center; + cursor: pointer; + + p { + text-align: right; + color: #fff; + margin-right: 20px; + font-size: 12px; + } + + img { + box-shadow: 0 0 25px #111; + -webkit-box-shadow: 0 0 25px #111; + -moz-box-shadow: 0 0 25px #111; + max-width: 90%; + max-height: 90%; + } +} /* * general layout -- cgit v1.2.3 From 519895b5625277197a88748c515919515f1113b8 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 20:04:17 +0200 Subject: added tests for the find_folders method --- lib/plugins/extension/_test/extension.test.php | 234 ++++++++++++++++++++- .../extension/_test/testdata/either1/script.js | 0 .../_test/testdata/eithersub2/either2/script.js | 0 .../_test/testdata/plgfoo5/plugin.info.txt | 7 + .../_test/testdata/plgsub3/plugin3/syntax.php | 0 .../_test/testdata/plgsub4/plugin4/plugin.info.txt | 7 + .../_test/testdata/plgsub6/plgfoo6/plugin.info.txt | 7 + .../extension/_test/testdata/plugin1/syntax.php | 0 .../_test/testdata/plugin2/plugin.info.txt | 7 + .../extension/_test/testdata/template1/main.php | 0 .../extension/_test/testdata/template1/style.ini | 0 .../_test/testdata/template2/template.info.txt | 7 + .../_test/testdata/tplfoo5/template.info.txt | 7 + .../_test/testdata/tplsub3/template3/main.php | 0 .../_test/testdata/tplsub3/template3/style.ini | 0 .../testdata/tplsub4/template4/template.info.txt | 7 + .../testdata/tplsub6/tplfoo6/template.info.txt | 7 + lib/plugins/extension/admin.php | 10 +- lib/plugins/extension/helper/extension.php | 190 ++++++++--------- 19 files changed, 382 insertions(+), 108 deletions(-) create mode 100644 lib/plugins/extension/_test/testdata/either1/script.js create mode 100644 lib/plugins/extension/_test/testdata/eithersub2/either2/script.js create mode 100644 lib/plugins/extension/_test/testdata/plgfoo5/plugin.info.txt create mode 100644 lib/plugins/extension/_test/testdata/plgsub3/plugin3/syntax.php create mode 100644 lib/plugins/extension/_test/testdata/plgsub4/plugin4/plugin.info.txt create mode 100644 lib/plugins/extension/_test/testdata/plgsub6/plgfoo6/plugin.info.txt create mode 100644 lib/plugins/extension/_test/testdata/plugin1/syntax.php create mode 100644 lib/plugins/extension/_test/testdata/plugin2/plugin.info.txt create mode 100644 lib/plugins/extension/_test/testdata/template1/main.php create mode 100644 lib/plugins/extension/_test/testdata/template1/style.ini create mode 100644 lib/plugins/extension/_test/testdata/template2/template.info.txt create mode 100644 lib/plugins/extension/_test/testdata/tplfoo5/template.info.txt create mode 100644 lib/plugins/extension/_test/testdata/tplsub3/template3/main.php create mode 100644 lib/plugins/extension/_test/testdata/tplsub3/template3/style.ini create mode 100644 lib/plugins/extension/_test/testdata/tplsub4/template4/template.info.txt create mode 100644 lib/plugins/extension/_test/testdata/tplsub6/tplfoo6/template.info.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/_test/extension.test.php b/lib/plugins/extension/_test/extension.test.php index 6dfa49a46..97726d212 100644 --- a/lib/plugins/extension/_test/extension.test.php +++ b/lib/plugins/extension/_test/extension.test.php @@ -1,10 +1,23 @@ setExtension('extension'); @@ -56,7 +68,225 @@ class helper_plugin_extension_extension_test extends DokuWikiTest { $this->assertTrue($extension->isEnabled()); $this->assertTrue($extension->isInstalled()); $this->assertTrue($extension->isBundled()); + } + + public function testFindFoldersPlugins() { + $extension = new mock_helper_plugin_extension_extension(); + $tdir = dirname(__FILE__).'/testdata'; + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/plugin1", 'plugin'); + $this->assertTrue($ok); + $this->assertEquals(0, count($result['new'])); + $this->assertEquals(1, count($result['old'])); + $this->assertEquals('plugin', $result['old'][0]['type']); + $this->assertEquals('plugin1', $this->extdir($result['old'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/plugin2", 'plugin'); + $this->assertTrue($ok); + $this->assertEquals(1, count($result['new'])); + $this->assertEquals('plugin', $result['new'][0]['type']); + $this->assertEquals('plugin2', $result['new'][0]['base']); + $this->assertEquals('plugin2', $this->extdir($result['new'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/plgsub3", 'plugin'); + $this->assertTrue($ok); + $this->assertEquals(0, count($result['new'])); + $this->assertEquals(1, count($result['old'])); + $this->assertEquals('plugin', $result['old'][0]['type']); + $this->assertEquals('plgsub3/plugin3', $this->extdir($result['old'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/plgsub4", 'plugin'); + $this->assertTrue($ok); + $this->assertEquals(1, count($result['new'])); + $this->assertEquals('plugin', $result['new'][0]['type']); + $this->assertEquals('plugin4', $result['new'][0]['base']); + $this->assertEquals('plgsub4/plugin4', $this->extdir($result['new'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/plgfoo5", 'plugin'); + $this->assertTrue($ok); + $this->assertEquals(1, count($result['new'])); + $this->assertEquals('plugin', $result['new'][0]['type']); + $this->assertEquals('plugin5', $result['new'][0]['base']); + $this->assertEquals('plgfoo5', $this->extdir($result['new'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/plgsub6/plgfoo6", 'plugin'); + $this->assertTrue($ok); + $this->assertEquals(1, count($result['new'])); + $this->assertEquals('plugin', $result['new'][0]['type']); + $this->assertEquals('plugin6', $result['new'][0]['base']); + $this->assertEquals('plgsub6/plgfoo6', $this->extdir($result['new'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/either1", 'plugin'); + $this->assertTrue($ok); + $this->assertEquals(0, count($result['new'])); + $this->assertEquals(1, count($result['old'])); + $this->assertEquals('plugin', $result['old'][0]['type']); + $this->assertEquals('either1', $this->extdir($result['old'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/eithersub2/either2", 'plugin'); + $this->assertTrue($ok); + $this->assertEquals(0, count($result['new'])); + $this->assertEquals(1, count($result['old'])); + $this->assertEquals('plugin', $result['old'][0]['type']); + $this->assertEquals('eithersub2/either2', $this->extdir($result['old'][0]['tmp'])); + } + + public function testFindFoldersTemplates() { + $extension = new mock_helper_plugin_extension_extension(); + $tdir = dirname(__FILE__).'/testdata'; + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/template1", 'template'); + $this->assertTrue($ok); + $this->assertEquals(0, count($result['new'])); + $this->assertEquals(1, count($result['old'])); + $this->assertEquals('template', $result['old'][0]['type']); + $this->assertEquals('template1', $this->extdir($result['old'][0]['tmp'])); + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/template2", 'template'); + $this->assertTrue($ok); + $this->assertEquals(1, count($result['new'])); + $this->assertEquals('template', $result['new'][0]['type']); + $this->assertEquals('template2', $result['new'][0]['base']); + $this->assertEquals('template2', $this->extdir($result['new'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/tplsub3", 'template'); + $this->assertTrue($ok); + $this->assertEquals(0, count($result['new'])); + $this->assertEquals(1, count($result['old'])); + $this->assertEquals('template', $result['old'][0]['type']); + $this->assertEquals('tplsub3/template3', $this->extdir($result['old'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/tplsub4", 'template'); + $this->assertTrue($ok); + $this->assertEquals(1, count($result['new'])); + $this->assertEquals('template', $result['new'][0]['type']); + $this->assertEquals('template4', $result['new'][0]['base']); + $this->assertEquals('tplsub4/template4', $this->extdir($result['new'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/tplfoo5", 'template'); + $this->assertTrue($ok); + $this->assertEquals(1, count($result['new'])); + $this->assertEquals('template', $result['new'][0]['type']); + $this->assertEquals('template5', $result['new'][0]['base']); + $this->assertEquals('tplfoo5', $this->extdir($result['new'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/tplsub6/tplfoo6", 'template'); + $this->assertTrue($ok); + $this->assertEquals(1, count($result['new'])); + $this->assertEquals('template', $result['new'][0]['type']); + $this->assertEquals('template6', $result['new'][0]['base']); + $this->assertEquals('tplsub6/tplfoo6', $this->extdir($result['new'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/either1", 'template'); + $this->assertTrue($ok); + $this->assertEquals(0, count($result['new'])); + $this->assertEquals(1, count($result['old'])); + $this->assertEquals('template', $result['old'][0]['type']); + $this->assertEquals('either1', $this->extdir($result['old'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/eithersub2/either2", 'template'); + $this->assertTrue($ok); + $this->assertEquals(0, count($result['new'])); + $this->assertEquals(1, count($result['old'])); + $this->assertEquals('template', $result['old'][0]['type']); + $this->assertEquals('eithersub2/either2', $this->extdir($result['old'][0]['tmp'])); + } + + public function testFindFoldersTemplatesAutodetect() { + $extension = new mock_helper_plugin_extension_extension(); + $tdir = dirname(__FILE__).'/testdata'; + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/template1"); + $this->assertTrue($ok); + $this->assertEquals(0, count($result['new'])); + $this->assertEquals(1, count($result['old'])); + $this->assertEquals('template', $result['old'][0]['type']); + $this->assertEquals('template1', $this->extdir($result['old'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/template2"); + $this->assertTrue($ok); + $this->assertEquals(1, count($result['new'])); + $this->assertEquals('template', $result['new'][0]['type']); + $this->assertEquals('template2', $result['new'][0]['base']); + $this->assertEquals('template2', $this->extdir($result['new'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/tplsub3"); + $this->assertTrue($ok); + $this->assertEquals(0, count($result['new'])); + $this->assertEquals(1, count($result['old'])); + $this->assertEquals('template', $result['old'][0]['type']); + $this->assertEquals('tplsub3/template3', $this->extdir($result['old'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/tplsub4"); + $this->assertTrue($ok); + $this->assertEquals(1, count($result['new'])); + $this->assertEquals('template', $result['new'][0]['type']); + $this->assertEquals('template4', $result['new'][0]['base']); + $this->assertEquals('tplsub4/template4', $this->extdir($result['new'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/tplfoo5"); + $this->assertTrue($ok); + $this->assertEquals(1, count($result['new'])); + $this->assertEquals('template', $result['new'][0]['type']); + $this->assertEquals('template5', $result['new'][0]['base']); + $this->assertEquals('tplfoo5', $this->extdir($result['new'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/tplsub6/tplfoo6"); + $this->assertTrue($ok); + $this->assertEquals(1, count($result['new'])); + $this->assertEquals('template', $result['new'][0]['type']); + $this->assertEquals('template6', $result['new'][0]['base']); + $this->assertEquals('tplsub6/tplfoo6', $this->extdir($result['new'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/either1"); + $this->assertTrue($ok); + $this->assertEquals(0, count($result['new'])); + $this->assertEquals(1, count($result['old'])); + $this->assertEquals('plugin', $result['old'][0]['type']); + $this->assertEquals('either1', $this->extdir($result['old'][0]['tmp'])); + + $result = array('old' => array(), 'new' => array()); + $ok = $extension->find_folders($result, "$tdir/eithersub2/either2"); + $this->assertTrue($ok); + $this->assertEquals(0, count($result['new'])); + $this->assertEquals(1, count($result['old'])); + $this->assertEquals('plugin', $result['old'][0]['type']); + $this->assertEquals('eithersub2/either2', $this->extdir($result['old'][0]['tmp'])); } + /** + * remove the test data directory from a dir name for cross install comparison + * + * @param string $dir + * @return string + */ + protected function extdir($dir) { + $tdir = dirname(__FILE__).'/testdata'; + $len = strlen($tdir); + $dir = trim(substr($dir, $len), '/'); + return $dir; + } } \ No newline at end of file diff --git a/lib/plugins/extension/_test/testdata/either1/script.js b/lib/plugins/extension/_test/testdata/either1/script.js new file mode 100644 index 000000000..e69de29bb diff --git a/lib/plugins/extension/_test/testdata/eithersub2/either2/script.js b/lib/plugins/extension/_test/testdata/eithersub2/either2/script.js new file mode 100644 index 000000000..e69de29bb diff --git a/lib/plugins/extension/_test/testdata/plgfoo5/plugin.info.txt b/lib/plugins/extension/_test/testdata/plgfoo5/plugin.info.txt new file mode 100644 index 000000000..cc4532d29 --- /dev/null +++ b/lib/plugins/extension/_test/testdata/plgfoo5/plugin.info.txt @@ -0,0 +1,7 @@ +base plugin5 +author Andreas Gohr +email andi@splitbrain.org +date 2013-05-02 +name Dummy Plugin +desc Dummy plugin data +url http://example.com/plugin:plugin5 diff --git a/lib/plugins/extension/_test/testdata/plgsub3/plugin3/syntax.php b/lib/plugins/extension/_test/testdata/plgsub3/plugin3/syntax.php new file mode 100644 index 000000000..e69de29bb diff --git a/lib/plugins/extension/_test/testdata/plgsub4/plugin4/plugin.info.txt b/lib/plugins/extension/_test/testdata/plgsub4/plugin4/plugin.info.txt new file mode 100644 index 000000000..374b6bf24 --- /dev/null +++ b/lib/plugins/extension/_test/testdata/plgsub4/plugin4/plugin.info.txt @@ -0,0 +1,7 @@ +base plugin4 +author Andreas Gohr +email andi@splitbrain.org +date 2013-05-02 +name Dummy Plugin +desc Dummy plugin data +url http://example.com/plugin:plugin4 diff --git a/lib/plugins/extension/_test/testdata/plgsub6/plgfoo6/plugin.info.txt b/lib/plugins/extension/_test/testdata/plgsub6/plgfoo6/plugin.info.txt new file mode 100644 index 000000000..461ff8735 --- /dev/null +++ b/lib/plugins/extension/_test/testdata/plgsub6/plgfoo6/plugin.info.txt @@ -0,0 +1,7 @@ +base plugin6 +author Andreas Gohr +email andi@splitbrain.org +date 2013-05-02 +name Dummy Plugin +desc Dummy plugin data +url http://example.com/plugin:plugin6 diff --git a/lib/plugins/extension/_test/testdata/plugin1/syntax.php b/lib/plugins/extension/_test/testdata/plugin1/syntax.php new file mode 100644 index 000000000..e69de29bb diff --git a/lib/plugins/extension/_test/testdata/plugin2/plugin.info.txt b/lib/plugins/extension/_test/testdata/plugin2/plugin.info.txt new file mode 100644 index 000000000..d56758fe9 --- /dev/null +++ b/lib/plugins/extension/_test/testdata/plugin2/plugin.info.txt @@ -0,0 +1,7 @@ +base plugin2 +author Andreas Gohr +email andi@splitbrain.org +date 2013-05-02 +name Dummy Plugin +desc Dummy Plugin data +url http://example.com/plugin:plugin2 diff --git a/lib/plugins/extension/_test/testdata/template1/main.php b/lib/plugins/extension/_test/testdata/template1/main.php new file mode 100644 index 000000000..e69de29bb diff --git a/lib/plugins/extension/_test/testdata/template1/style.ini b/lib/plugins/extension/_test/testdata/template1/style.ini new file mode 100644 index 000000000..e69de29bb diff --git a/lib/plugins/extension/_test/testdata/template2/template.info.txt b/lib/plugins/extension/_test/testdata/template2/template.info.txt new file mode 100644 index 000000000..882a7b914 --- /dev/null +++ b/lib/plugins/extension/_test/testdata/template2/template.info.txt @@ -0,0 +1,7 @@ +base template2 +author Andreas Gohr +email andi@splitbrain.org +date 2013-05-02 +name Dummy Template +desc Dummy template data +url http://example.com/template:template2 diff --git a/lib/plugins/extension/_test/testdata/tplfoo5/template.info.txt b/lib/plugins/extension/_test/testdata/tplfoo5/template.info.txt new file mode 100644 index 000000000..4d7ecb8ef --- /dev/null +++ b/lib/plugins/extension/_test/testdata/tplfoo5/template.info.txt @@ -0,0 +1,7 @@ +base template5 +author Andreas Gohr +email andi@splitbrain.org +date 2013-05-02 +name Dummy Template +desc Dummy template data +url http://example.com/template:template5 diff --git a/lib/plugins/extension/_test/testdata/tplsub3/template3/main.php b/lib/plugins/extension/_test/testdata/tplsub3/template3/main.php new file mode 100644 index 000000000..e69de29bb diff --git a/lib/plugins/extension/_test/testdata/tplsub3/template3/style.ini b/lib/plugins/extension/_test/testdata/tplsub3/template3/style.ini new file mode 100644 index 000000000..e69de29bb diff --git a/lib/plugins/extension/_test/testdata/tplsub4/template4/template.info.txt b/lib/plugins/extension/_test/testdata/tplsub4/template4/template.info.txt new file mode 100644 index 000000000..f050555e5 --- /dev/null +++ b/lib/plugins/extension/_test/testdata/tplsub4/template4/template.info.txt @@ -0,0 +1,7 @@ +base template4 +author Andreas Gohr +email andi@splitbrain.org +date 2013-05-02 +name Dummy Template +desc Dummy template data +url http://example.com/template:template4 diff --git a/lib/plugins/extension/_test/testdata/tplsub6/tplfoo6/template.info.txt b/lib/plugins/extension/_test/testdata/tplsub6/tplfoo6/template.info.txt new file mode 100644 index 000000000..ea4dc230d --- /dev/null +++ b/lib/plugins/extension/_test/testdata/tplsub6/tplfoo6/template.info.txt @@ -0,0 +1,7 @@ +base template6 +author Andreas Gohr +email andi@splitbrain.org +date 2013-05-02 +name Dummy Template +desc Dummy template data +url http://example.com/template:template6 diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index cf4eb79d7..e28fd612c 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -67,11 +67,9 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { $this->infoFor = $extname; break; case 'install': - msg('Not implemented'); - break; case 'reinstall': case 'update': - $extension->setExtension($extname, false); + $extension->setExtension($extname); $status = $extension->installOrUpdate(); if ($status !== true) { msg($status, -1); @@ -80,7 +78,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { } break; case 'uninstall': - $extension->setExtension($extname, false); + $extension->setExtension($extname); $status = $extension->uninstall(); if ($status !== true) { msg($status, -1); @@ -89,7 +87,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { } break; case 'enable'; - $extension->setExtension($extname, false); + $extension->setExtension($extname); $status = $extension->enable(); if ($status !== true) { msg($status, -1); @@ -98,7 +96,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { } break; case 'disable'; - $extension->setExtension($extname, false); + $extension->setExtension($extname); $status = $extension->disable(); if ($status !== true) { msg($status, -1); diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 244ec9b9a..62f950cac 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -127,6 +127,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return bool If an update is available */ public function updateAvailable() { + if(!$this->isInstalled()) return false; $lastupdate = $this->getLastUpdate(); if ($lastupdate === false) return false; $installed = $this->getInstalledVersion(); @@ -518,21 +519,24 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { /** * Install or update the extension * - * @return bool|string True or an error message + * @throws \Exception when something goes wrong + * @return array The list of installed extensions */ public function installOrUpdate() { - if (($status = $this->download($this->getDownloadURL(), $path)) === true) { - if (($status = $this->installArchive($path, $installed_extensions, $this->isInstalled(), $this->getBase())) == true) { - // refresh extension information - if (!isset($installed_extensions[$this->getBase()])) { - $status = 'Error, the requested extension hasn\'t been installed or updated'; - } - $this->setExtension($this->getID()); - $this->purgeCache(); + try { + $path = $this->download($this->getDownloadURL()); + $installed = $this->installArchive($path, $this->isInstalled(), $this->getBase()); + + // refresh extension information + if (!isset($installed[$this->getBase()])) { + throw new Exception('Error, the requested extension hasn\'t been installed or updated'); } - $this->dir_delete(dirname($path)); + $this->setExtension($this->getID()); + $this->purgeCache(); + }catch (Exception $e){ + throw $e; } - return $status; + return $installed; } /** @@ -695,112 +699,108 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { /** * Download an archive to a protected path + * * @param string $url The url to get the archive from - * @param string $path The path where the archive was saved (output parameter) - * @return bool|string True on success, an error message on failure + * @throws Exception when something goes wrong + * @return string The path where the archive was saved */ - public function download($url, &$path) { + public function download($url) { // check the url $matches = array(); if(!preg_match('/[^\/]*$/', $url, $matches) || !$matches[0]) { - return $this->getLang('baddownloadurl'); + throw new Exception($this->getLang('baddownloadurl')); } $file = $matches[0]; // create tmp directory for download if(!($tmp = io_mktmpdir())) { - return $this->getLang('error_dircreate'); + throw new Exception($this->getLang('error_dircreate')); } // download - if(!$file = io_download($url, $tmp.'/', true, $file)) { + if(!$file = io_download($url, $tmp.'/', true, $file, 0)) { $this->dir_delete($tmp); - return sprintf($this->getLang('error_download'), $url); + throw new Exception(sprintf($this->getLang('error_download'), hsc($url))); } - $path = $tmp.'/'.$file; - - return true; + return $tmp.'/'.$file; } /** * @param string $file The path to the archive that shall be installed * @param bool $overwrite If an already installed plugin should be overwritten - * @param array $installed_extensions Array of all installed extensions in the form $base => ('type' => $type, 'action' => 'update'|'install') * @param string $base The basename of the plugin if it's known + * @throws Exception when something went wrong * @return bool|string True on success, an error message on failure */ - public function installArchive($file, &$installed_extensions, $overwrite=false, $base = '') { + public function installArchive($file, $overwrite=false, $base = '') { $error = false; // create tmp directory for decompression if(!($tmp = io_mktmpdir())) { - return $this->getLang('error_dircreate'); + throw new Exception($this->getLang('error_dircreate')); } // add default base folder if specified to handle case where zip doesn't contain this if($base && !@mkdir($tmp.'/'.$base)) { - $error = $this->getLang('error_dircreate'); + throw new Exception($this->getLang('error_dircreate')); } - if(!$error && !$this->decompress("$tmp/$file", "$tmp/".$base)) { - $error = sprintf($this->getLang('error_decompress'), $file); + // decompress + if(!$this->decompress("$tmp/$file", "$tmp/".$base)) { + throw new Exception(sprintf($this->getLang('error_decompress'), $file)); } // search $tmp/$base for the folder(s) that has been created // move the folder(s) to lib/.. - if(!$error) { - $result = array('old'=>array(), 'new'=>array()); - - if(!$this->find_folders($result, $tmp.'/'.$base, ($this->isTemplate() ? 'template' : 'plugin'))) { - $error = $this->getLang('error_findfolder'); + $result = array('old'=>array(), 'new'=>array()); + if(!$this->find_folders($result, $tmp.'/'.$base, ($this->isTemplate() ? 'template' : 'plugin'))) { + throw new Exception($this->getLang('error_findfolder')); + } - } else { - // choose correct result array - if(count($result['new'])) { - $install = $result['new']; - }else{ - $install = $result['old']; - } + // choose correct result array + if(count($result['new'])) { + $install = $result['new']; + }else{ + $install = $result['old']; + } - // now install all found items - foreach($install as $item) { - // where to install? - if($item['type'] == 'template') { - $target_base_dir = DOKU_TPLLIB; - }else{ - $target_base_dir = DOKU_PLUGIN; - } + // now install all found items + foreach($install as $item) { + // where to install? + if($item['type'] == 'template') { + $target_base_dir = DOKU_TPLLIB; + }else{ + $target_base_dir = DOKU_PLUGIN; + } - if(!empty($item['base'])) { - // use base set in info.txt - } elseif($base && count($install) == 1) { - $item['base'] = $base; - } else { - // default - use directory as found in zip - // plugins from github/master without *.info.txt will install in wrong folder - // but using $info->id will make 'code3' fail (which should install in lib/code/..) - $item['base'] = basename($item['tmp']); - } + if(!empty($item['base'])) { + // use base set in info.txt + } elseif($base && count($install) == 1) { + $item['base'] = $base; + } else { + // default - use directory as found in zip + // plugins from github/master without *.info.txt will install in wrong folder + // but using $info->id will make 'code3' fail (which should install in lib/code/..) + $item['base'] = basename($item['tmp']); + } - // check to make sure we aren't overwriting anything - $target = $target_base_dir.$item['base']; - if(!$overwrite && @file_exists($target)) { - // TODO remember our settings, ask the user to confirm overwrite - continue; - } + // check to make sure we aren't overwriting anything + $target = $target_base_dir.$item['base']; + if(!$overwrite && @file_exists($target)) { + // TODO remember our settings, ask the user to confirm overwrite + continue; + } - $action = @file_exists($target) ? 'update' : 'install'; + $action = @file_exists($target) ? 'update' : 'install'; - // copy action - if($this->dircopy($item['tmp'], $target)) { - // TODO: write manager.dat! - $installed_extensions[$item['base']] = array('type' => $item['type'], 'action' => $action); - } else { - $error = sprintf($this->getLang('error_copy').DOKU_LF, $item['base']); - break; - } - } + // copy action + if($this->dircopy($item['tmp'], $target)) { + // TODO: write manager.dat! + $installed_extensions[$item['base']] = array('type' => $item['type'], 'action' => $action); + } else { + $error = sprintf($this->getLang('error_copy').DOKU_LF, $item['base']); + break; } } @@ -830,25 +830,24 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * * @author Andreas Gohr * @param array $result - results are stored here - * @param string $base - the temp directory where the package was unpacked to + * @param string $directory - the temp directory where the package was unpacked to * @param string $default_type - type used if no info.txt available - * @param string $dir - a subdirectory. do not set. used by recursion + * @param string $subdir - a subdirectory. do not set. used by recursion * @return bool - false on error */ - private function find_folders(&$result, $base, $default_type, $dir='') { - $this_dir = "$base$dir"; + protected function find_folders(&$result, $directory, $default_type='plugin', $subdir='') { + $this_dir = "$directory$subdir"; $dh = @opendir($this_dir); if(!$dh) return false; $found_dirs = array(); $found_files = 0; $found_template_parts = 0; - $found_info_txt = false; while (false !== ($f = readdir($dh))) { if($f == '.' || $f == '..') continue; if(is_dir("$this_dir/$f")) { - $found_dirs[] = "$dir/$f"; + $found_dirs[] = "$subdir/$f"; } else { // it's a file -> check for config @@ -856,7 +855,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { switch ($f) { case 'plugin.info.txt': case 'template.info.txt': - $found_info_txt = true; + // we have found a clear marker, save and return $info = array(); $type = explode('.', $f, 2); $info['type'] = $type[0]; @@ -864,7 +863,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { $conf = confToHash("$this_dir/$f"); $info['base'] = basename($conf['base']); $result['new'][] = $info; - break; + return true; case 'main.php': case 'details.php': @@ -877,33 +876,24 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { } closedir($dh); - // URL downloads default to 'plugin', try extra hard to indentify templates - if(!$default_type && $found_template_parts > 2 && !$found_info_txt) { + // files where found but no info.txt - use old method + if($found_files){ $info = array(); - $info['type'] = 'template'; $info['tmp'] = $this_dir; - $result['new'][] = $info; - } + // does this look like a template or should we use the default type? + if($found_template_parts >= 2) { + $info['type'] = 'template'; + } else { + $info['type'] = $default_type; + } - // files in top level but no info.txt, assume this is zip missing a base directory - // works for all downloads unless direct URL where $base will be the tmp directory ($info->id was empty) - if(!$dir && $found_files > 0 && !$found_info_txt && $default_type) { - $info = array(); - $info['type'] = $default_type; - $info['tmp'] = $base; $result['old'][] = $info; return true; } + // we have no files yet -> recurse foreach ($found_dirs as $found_dir) { - // if top level add to dir list for old method, then recurse - if(!$dir) { - $info = array(); - $info['type'] = ($default_type ? $default_type : 'plugin'); - $info['tmp'] = "$base$found_dir"; - $result['old'][] = $info; - } - $this->find_folders($result, $base, $default_type, "$found_dir"); + $this->find_folders($result, $directory, $default_type, "$found_dir"); } return true; } -- cgit v1.2.3 From 5c0b30bf48d7f8e5f3d5764cfab94d0d09c0a8b1 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 21:26:20 +0200 Subject: installation now works --- lib/plugins/extension/admin.php | 14 +++++++------ lib/plugins/extension/helper/extension.php | 33 ++++++++++++++++++------------ lib/plugins/extension/lang/en/lang.php | 9 +++++++- 3 files changed, 36 insertions(+), 20 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index e28fd612c..f1ed83591 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -69,12 +69,14 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { case 'install': case 'reinstall': case 'update': - $extension->setExtension($extname); - $status = $extension->installOrUpdate(); - if ($status !== true) { - msg($status, -1); - } else { - msg(sprintf($this->getLang('msg_update_success'), hsc($extension->getDisplayName())), 1); + try { + $extension->setExtension($extname); + $installed = $extension->installOrUpdate(); + foreach($installed as $extension => $info){ + msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); + } + }catch (Exception $e){ + msg($e->getMessage(), -1); } break; case 'uninstall': diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 62f950cac..8438253f9 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -528,7 +528,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { $installed = $this->installArchive($path, $this->isInstalled(), $this->getBase()); // refresh extension information - if (!isset($installed[$this->getBase()])) { + if (!isset($installed[$this->getID()])) { throw new Exception('Error, the requested extension hasn\'t been installed or updated'); } $this->setExtension($this->getID()); @@ -734,7 +734,6 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return bool|string True on success, an error message on failure */ public function installArchive($file, $overwrite=false, $base = '') { - $error = false; // create tmp directory for decompression if(!($tmp = io_mktmpdir())) { @@ -747,14 +746,21 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { } // decompress - if(!$this->decompress("$tmp/$file", "$tmp/".$base)) { + if(!$this->decompress($file, "$tmp/".$base)) { throw new Exception(sprintf($this->getLang('error_decompress'), $file)); } // search $tmp/$base for the folder(s) that has been created // move the folder(s) to lib/.. $result = array('old'=>array(), 'new'=>array()); - if(!$this->find_folders($result, $tmp.'/'.$base, ($this->isTemplate() ? 'template' : 'plugin'))) { + if($base){ + // when a base was set it came from the current extension setup #fixme this is a bit hacky + $default = ($this->isTemplate() ? 'template' : 'plugin'); + }else{ + // assume a default of plugin, find_folders will autodetect templates + $default = 'plugin'; + } + if(!$this->find_folders($result, $tmp.'/'.$base, $default)) { throw new Exception($this->getLang('error_findfolder')); } @@ -796,22 +802,23 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { // copy action if($this->dircopy($item['tmp'], $target)) { - // TODO: write manager.dat! - $installed_extensions[$item['base']] = array('type' => $item['type'], 'action' => $action); + // return info + $id = $item['base']; + if($item['type'] == 'template') $id = 'template:'.$id; + $installed_extensions[$id] = array( + 'base' => $item['base'], + 'type' => $item['type'], + 'action' => $action + ); } else { - $error = sprintf($this->getLang('error_copy').DOKU_LF, $item['base']); - break; + throw new Exception(sprintf($this->getLang('error_copy').DOKU_LF, $item['base'])); } } // cleanup if($tmp) $this->dir_delete($tmp); - if($error) { - return $error; - } - - return true; + return $installed_extensions; } /** diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 24cabe1fa..1a5c90923 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -73,11 +73,18 @@ $lang['msg_notenabled'] = 'Plugin %s could not be enabled, check file pe $lang['msg_disabled'] = 'Plugin %s disabled'; $lang['msg_notdisabled'] = 'Plugin %s could not be disabled, check file permissions'; + +$lang['msg_template_install_success'] = 'Template %s installed successfully'; +$lang['msg_template_update_success'] = 'Template %s updated successfully'; +$lang['msg_plugin_install_success'] = 'Plugin %s installed successfully'; +$lang['msg_plugin_update_success'] = 'Plugin %s updated successfully'; + + $lang['msg_url_failed'] = 'URL [%s] could not be downloaded.
      %s'; $lang['msg_download_failed'] = 'Plugin %s could not be downloaded.
      %s'; $lang['msg_download_success'] = 'Plugin %s installed successfully'; $lang['msg_tpl_download_failed'] = 'Template %s could not be downloaded.
      %s'; -$lang['msg_tpl_download_success'] = 'Template %s installed successfully'; + $lang['msg_download_pkg_success'] = '%s extension package successfully installed (%s)'; $lang['msg_tpl_download_pkg_success'] = '%s extension package successfully installed (%s)'; -- cgit v1.2.3 From 045d57189c1fb4e8775603cd39927557e3eddfd9 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 21:34:51 +0200 Subject: make sure temporary folders are cleaned up --- lib/plugins/extension/helper/extension.php | 32 ++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 8438253f9..dc570aa0d 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -23,6 +23,20 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { /** @var helper_plugin_extension_repository $repository */ private $repository = null; + /** @var array list of temporary directories */ + private $temporary = array(); + + /** + * Destructor + * + * deletes any dangling temporary directories + */ + public function __destruct() { + foreach($this->temporary as $dir){ + $this->dir_delete($dir); + } + } + /** * @return bool false, this component is not a singleton */ @@ -697,6 +711,20 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { } } + /** + * Returns a temporary directory + * + * The directory is registered for cleanup when the class is destroyed + * + * @return bool|string + */ + protected function mkTmpDir(){ + $dir = io_mktmpdir(); + if(!$dir) return false; + $this->temporary[] = $dir; + return $dir; + } + /** * Download an archive to a protected path * @@ -713,7 +741,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { $file = $matches[0]; // create tmp directory for download - if(!($tmp = io_mktmpdir())) { + if(!($tmp = $this->mkTmpDir())) { throw new Exception($this->getLang('error_dircreate')); } @@ -736,7 +764,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { public function installArchive($file, $overwrite=false, $base = '') { // create tmp directory for decompression - if(!($tmp = io_mktmpdir())) { + if(!($tmp = $this->mkTmpDir())) { throw new Exception($this->getLang('error_dircreate')); } -- cgit v1.2.3 From 341cc636324f216ddc217fc03f02004b8423b9f0 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 21:38:31 +0200 Subject: sort plugins --- lib/plugins/extension/helper/gui.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index 09cea7fcb..57dfefab3 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -29,6 +29,7 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { echo $this->locale_xhtml('intro_plugins'); $pluginlist = $plugin_controller->getList('', true); + sort($pluginlist); /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); /* @var helper_plugin_extension_list $list */ @@ -51,6 +52,7 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { // FIXME do we have a real way? $tpllist = glob(DOKU_INC.'lib/tpl/*', GLOB_ONLYDIR); $tpllist = array_map('basename', $tpllist); + sort($tpllist); /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); -- cgit v1.2.3 From 8251e9612a372ea2e25e0d896fb0c3b8e4c3af73 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 21:54:37 +0200 Subject: some style changes --- lib/plugins/extension/helper/list.php | 8 +++++--- lib/plugins/extension/images/tag.png | Bin 0 -> 753 bytes lib/plugins/extension/style.less | 30 +++++++++--------------------- 3 files changed, 14 insertions(+), 24 deletions(-) create mode 100644 lib/plugins/extension/images/tag.png (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 62031a69b..79728b5ca 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -244,7 +244,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { } if($extension->getTags()){ $first = true; - echo ''; + $return .= ''; foreach ($extension->getTags() as $tag) { if(!$first){ $return .= ', '; @@ -254,7 +254,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $url = $this->gui->tabURL('search', array('q' => 'tag:'.$tag)); $return .= ''.hsc($tag).''; } - echo ''; + $return .= ''; } $return .= ''; return $return; @@ -451,7 +451,9 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { } if (!$extension->isProtected()) { if ($extension->isEnabled()) { - $return .= $this->make_action('disable', $extension); + if(!$extension->isTemplate()){ // templates can't be disabled, only anothe can be enabled + $return .= $this->make_action('disable', $extension); + } } else { $return .= $this->make_action('enable', $extension); } diff --git a/lib/plugins/extension/images/tag.png b/lib/plugins/extension/images/tag.png new file mode 100644 index 000000000..155dbb3dd Binary files /dev/null and b/lib/plugins/extension/images/tag.png differ diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less index cd9eeaa74..53c260f8d 100644 --- a/lib/plugins/extension/style.less +++ b/lib/plugins/extension/style.less @@ -20,6 +20,7 @@ background: url(images/overlay.png) repeat; text-align: center; cursor: pointer; + z-index: 9999; p { text-align: right; @@ -44,16 +45,6 @@ margin-left: 0; } -#extension__manager a.taglink { - padding: 1px 4px; - background-color: @ini_background_neu; - border-radius: 3px; -} -[dir=rtl] #extension__manager a.taglink { - display: inline-block; - line-height: 1.2; -} - #extension__manager .panelHeader div.error { margin-top: 0; float: left; @@ -173,6 +164,10 @@ background: transparent url(images/disabled.png) no-repeat 2px 2px; } +#extension__manager .disabled .legend { + opacity: 0.7; +} + #extension__manager div.screenshot img { width: 120px; height: 70px; @@ -227,19 +222,12 @@ font-size: 85%; } -#extension__manager .legend span.linkbar a.urlextern + a.taglink, -#extension__manager .legend span.linkbar a.interwiki + a.taglink { - margin-left: 0.4em; -} -[dir=rtl] #extension__manager .legend span.linkbar a.urlextern + a.taglink, -[dir=rtl] #extension__manager .legend span.linkbar a.interwiki + a.taglink { - margin-left: 0; -} -[dir=rtl] #extension__manager .legend span.linkbar a.urlextern, -[dir=rtl] #extension__manager .legend span.linkbar a.interwiki { - margin-left: .4em; +#extension__manager .legend span.linkbar span.tags { + padding-left: 18px; + background: transparent url(images/tag.png) no-repeat 0 0; } + #extension__manager .legend input.button { background: transparent url(images/up.png) no-repeat 0 0; box-shadow: none; -- cgit v1.2.3 From 1e0eea17dc60dc6f5ec81ffcca313db353c88c44 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 22:11:52 +0200 Subject: fixed popularity display --- lib/plugins/extension/helper/extension.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index dc570aa0d..b3bce082f 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -349,7 +349,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return float|bool The popularity information or false if it isn't available */ public function getPopularity() { - if (!empty($this->remoteInfo['popularity'])) return $this->remoteInfo['popularity']/200.0; + if (!empty($this->remoteInfo['popularity'])) return $this->remoteInfo['popularity']; return false; } -- cgit v1.2.3 From 75e063084d865a011e074c29c5edb8569fe2cfe1 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 22:58:01 +0200 Subject: made info mechanism work again --- lib/plugins/extension/admin.php | 3 -- lib/plugins/extension/helper/gui.php | 21 +++++++++++--- lib/plugins/extension/helper/list.php | 43 ++++++++++++++--------------- lib/plugins/extension/helper/repository.php | 12 ++++++-- lib/plugins/extension/style.less | 11 ++++---- 5 files changed, 54 insertions(+), 36 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index f1ed83591..3237a26e5 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -63,9 +63,6 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { foreach ($actions as $action => $extensions) { foreach ($extensions as $extname => $label) { switch ($action) { - case 'info': - $this->infoFor = $extname; - break; case 'install': case 'reinstall': case 'update': diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index 57dfefab3..6a0cdb22e 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -17,7 +17,18 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { protected $tabs = array('plugins', 'templates', 'search', 'install'); /** @var string the extension that should have an open info window FIXME currently broken*/ - protected $infofor = ''; + protected $infoFor = ''; + + /** + * Constructor + * + * initializes requested info window + */ + public function __construct(){ + global $INPUT; + $this->infoFor = $INPUT->str('info'); + } + /** * display the plugin tab @@ -37,7 +48,7 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { $list->start_form(); foreach($pluginlist as $name) { $extension->setExtension($name); - $list->add_row($extension, $name == $this->infoFor); + $list->add_row($extension, $extension->getID() == $this->infoFor); } $list->end_form(); $list->render(); @@ -61,7 +72,7 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { $list->start_form(); foreach($tpllist as $name) { $extension->setExtension("template:$name"); - $list->add_row($extension, $name == $this->infoFor); + $list->add_row($extension, $extension->getID() == $this->infoFor); } $list->end_form(); $list->render(); @@ -93,7 +104,7 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { $list->start_form(); foreach($result as $name) { $extension->setExtension($name); - $list->add_row($extension, $name == $this->infoFor); + $list->add_row($extension, $extension->getID() == $this->infoFor); } $list->end_form(); $list->render(); @@ -149,12 +160,14 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { */ public function tabURL($tab = '', $params = array(), $sep = '&') { global $ID; + global $INPUT; if(!$tab) $tab = $this->currentTab(); $defaults = array( 'do' => 'admin', 'page' => 'extension', 'tab' => $tab, + 'q' => $INPUT->str('q') ); return wl($ID, array_merge($defaults, $params), false, $sep); } diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 79728b5ca..767a8ed40 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -101,7 +101,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { * @param helper_plugin_extension_extension $extension The extension */ private function start_row(helper_plugin_extension_extension $extension) { - $this->form .= '
    • '; + $this->form .= '
    • '; } /** @@ -221,7 +221,15 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= '

      '; $return .= $this->make_linkbar($extension); - $return .= $this->make_action('info', $extension, $showinfo); + + if($showinfo){ + $url = $this->gui->tabURL(''); + $return .= ''.$this->getLang('btn_info').''; + }else{ + $url = $this->gui->tabURL('', array('info' => $extension->getID())); + $return .= ''.$this->getLang('btn_info').''; + } + if ($showinfo) { $return .= $this->make_info($extension); } @@ -415,15 +423,14 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { /** * Generate a list of links for extensions - * @param array $links The links + * + * @param array $ext The extensions * @return string The HTML code */ - function make_linklist($links) { + function make_linklist($ext) { $return = ''; - foreach ($links as $link) { - $dokulink = hsc($link); - if (strpos($link, 'template:') !== 0) $dokulink = 'plugin:'.$dokulink; - $return .= ''.$link.' '; + foreach ($ext as $link) { + $return .= ''.hsc($link).' '; } return $return; } @@ -438,7 +445,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return = ''; if (!$extension->isInstalled() && $extension->canModify() === true) { $return .= $this->make_action('install', $extension); - } elseif ($extension->canModify()) { + } elseif ($extension->canModify() === true) { if (!$extension->isBundled()) { $return .= $this->make_action('uninstall', $extension); if ($extension->getDownloadURL()) { @@ -451,7 +458,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { } if (!$extension->isProtected()) { if ($extension->isEnabled()) { - if(!$extension->isTemplate()){ // templates can't be disabled, only anothe can be enabled + if(!$extension->isTemplate()){ // templates can't be disabled, only another can be enabled $return .= $this->make_action('disable', $extension); } } else { @@ -473,28 +480,20 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { * * @param string $action The action * @param helper_plugin_extension_extension $extension The extension - * @param bool $showinfo If the info block is shown * @return string The HTML code */ - function make_action($action, $extension, $showinfo = false) { - $title = $revertAction = $extraClass = ''; + function make_action($action, $extension) { + $title = ''; switch ($action) { - case 'info': - $title = 'title="'.$this->getLang('btn_info').'"'; - if ($showinfo) { - $revertAction = '-'; - $extraClass = 'close'; - } - break; case 'install': case 'reinstall': $title = 'title="'.$extension->getDownloadURL().'"'; break; } - $classes = 'button '.$action.' '.$extraClass; - $name = 'fn['.$action.']['.$revertAction.hsc($extension->getInstallName()).']'; + $classes = 'button '.$action; + $name = 'fn['.$action.']['.hsc($extension->getID()).']'; return ''; } diff --git a/lib/plugins/extension/helper/repository.php b/lib/plugins/extension/helper/repository.php index 38e07786e..1f603a866 100644 --- a/lib/plugins/extension/helper/repository.php +++ b/lib/plugins/extension/helper/repository.php @@ -146,9 +146,10 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { */ protected function parse_query($q){ $parameters = array( - 'tag' => array(), + 'tag' => array(), 'mail' => array(), - 'type' => array() + 'type' => array(), + 'ext' => array() ); // extract tags @@ -165,6 +166,13 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { $parameters['mail'][] = $m[3]; } } + // extract extensions + if(preg_match_all('/(^|\s)(ext:([\S]+))/', $q, $matches, PREG_SET_ORDER)){ + foreach($matches as $m){ + $q = str_replace($m[2], '', $q); + $parameters['ext'][] = $m[3]; + } + } // extract types if(preg_match_all('/(^|\s)(type:([\S]+))/', $q, $matches, PREG_SET_ORDER)){ foreach($matches as $m){ diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less index 53c260f8d..fc5613044 100644 --- a/lib/plugins/extension/style.less +++ b/lib/plugins/extension/style.less @@ -228,21 +228,22 @@ } -#extension__manager .legend input.button { +#extension__manager .legend a.info { background: transparent url(images/up.png) no-repeat 0 0; - box-shadow: none; border-width: 0; - height: 14px; + height: 13px; + width: 13px; text-indent: -99999px; float: right; margin: .5em 0 0; + overflow: hidden; } -[dir=rtl] #extension__manager .legend input.button { +[dir=rtl] #extension__manager .legend a.info { float: left; margin: .5em 0 0; } -#extension__manager .legend input.button.close { +#extension__manager .legend a.info.close { background: transparent url(images/down.png) no-repeat 0 0; } -- cgit v1.2.3 From 72dda0b4378651b271f5fb516fb8e21a80ac3ebf Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 9 Aug 2013 23:55:39 +0200 Subject: added AJAX detail infos --- lib/plugins/extension/action.php | 51 +++++++++++++++++++++++++++++++++++ lib/plugins/extension/helper/list.php | 5 ++-- lib/plugins/extension/script.js | 29 +++++++++++++++++++- 3 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 lib/plugins/extension/action.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/action.php b/lib/plugins/extension/action.php new file mode 100644 index 000000000..b35c1cb13 --- /dev/null +++ b/lib/plugins/extension/action.php @@ -0,0 +1,51 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +class action_plugin_extension extends DokuWiki_Action_Plugin { + + /** + * Registers a callback function for a given event + * + * @param Doku_Event_Handler $controller DokuWiki's event controller object + * @return void + */ + public function register(Doku_Event_Handler &$controller) { + + $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'info'); + + } + + public function info(Doku_Event &$event, $param){ + global $INPUT; + if($event->data != 'plugin_extension') return; + $event->preventDefault(); + $event->stopPropagation(); + + header('Content-Type: text/html; charset=utf-8'); + + $ext = $INPUT->str('ext'); + if(!$ext) { + echo 'no extension given'; + return; + } + + /** @var helper_plugin_extension_extension $extension */ + $extension = plugin_load('helper', 'extension_extension'); + $extension->setExtension($ext); + + /** @var helper_plugin_extension_list $list */ + $list = plugin_load('helper', 'extension_list'); + + + echo $list->make_info($extension); + } + +} + diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 767a8ed40..6b1d41f78 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -224,11 +224,12 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { if($showinfo){ $url = $this->gui->tabURL(''); - $return .= ''.$this->getLang('btn_info').''; + $class = 'close'; }else{ $url = $this->gui->tabURL('', array('info' => $extension->getID())); - $return .= ''.$this->getLang('btn_info').''; + $class = ''; } + $return .= ''.$this->getLang('btn_info').''; if ($showinfo) { $return .= $this->make_info($extension); diff --git a/lib/plugins/extension/script.js b/lib/plugins/extension/script.js index f2a6aae50..7480801ac 100644 --- a/lib/plugins/extension/script.js +++ b/lib/plugins/extension/script.js @@ -5,7 +5,7 @@ jQuery(function(){ * very simple lightbox * @link http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/super-simple-lightbox-with-css-and-jquery/ */ - jQuery('a.extension_screenshot').click(function(e) { + jQuery('#extension__manager a.extension_screenshot').click(function(e) { e.preventDefault(); //Get clicked link href @@ -31,4 +31,31 @@ jQuery(function(){ return false; }); + /** + * AJAX detail infos + */ + jQuery('#extension__manager a.info').click(function(e){ + e.preventDefault(); + + var $link = jQuery(this); + var $details = $link.parent().find('dl.details'); + if($details.length){ + $link.toggleClass('close'); + $details.toggle(); + return; + } + + $link.addClass('close'); + jQuery.get( + DOKU_BASE + 'lib/exe/ajax.php', + { + call: 'plugin_extension', + ext: $link.data('extid') + }, + function(data){ + $link.parent().append(data); + } + ); + }); + }); \ No newline at end of file -- cgit v1.2.3 From fee60c9e19860de9edb1dd146ec7063bb9eda392 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 10 Aug 2013 10:23:04 +0200 Subject: manual install tab now works --- lib/plugins/extension/admin.php | 46 +++++++++----- lib/plugins/extension/helper/extension.php | 98 +++++++++++++++++++++++++----- lib/plugins/extension/helper/gui.php | 14 +++-- lib/plugins/extension/lang/en/lang.php | 4 +- 4 files changed, 127 insertions(+), 35 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 3237a26e5..62d94e899 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -22,7 +22,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { * * loads additional helpers */ - public function __construct(){ + public function __construct() { $this->gui = plugin_load('helper', 'extension_gui'); } @@ -49,37 +49,36 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { /* @var helper_plugin_extension_repository $repository */ $repository = $this->loadHelper('extension_repository'); - - if(!$repository->hasAccess()){ - $url = $this->gui->tabURL('', array('purge'=>1)); + if(!$repository->hasAccess()) { + $url = $this->gui->tabURL('', array('purge' => 1)); msg($this->getLang('repo_error').' ['.$this->getLang('repo_retry').']', -1); } /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); - if ($INPUT->post->has('fn')) { + if($INPUT->post->has('fn') && checkSecurityToken()) { $actions = $INPUT->post->arr('fn'); - foreach ($actions as $action => $extensions) { - foreach ($extensions as $extname => $label) { - switch ($action) { + foreach($actions as $action => $extensions) { + foreach($extensions as $extname => $label) { + switch($action) { case 'install': case 'reinstall': case 'update': try { $extension->setExtension($extname); $installed = $extension->installOrUpdate(); - foreach($installed as $extension => $info){ + foreach($installed as $ext => $info) { msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); } - }catch (Exception $e){ + } catch(Exception $e) { msg($e->getMessage(), -1); } break; case 'uninstall': $extension->setExtension($extname); $status = $extension->uninstall(); - if ($status !== true) { + if($status !== true) { msg($status, -1); } else { msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getDisplayName())), 1); @@ -88,7 +87,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { case 'enable'; $extension->setExtension($extname); $status = $extension->enable(); - if ($status !== true) { + if($status !== true) { msg($status, -1); } else { msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getDisplayName())), 1); @@ -97,7 +96,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { case 'disable'; $extension->setExtension($extname); $status = $extension->disable(); - if ($status !== true) { + if($status !== true) { msg($status, -1); } else { msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getDisplayName())), 1); @@ -106,6 +105,24 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { } } } + } elseif($INPUT->post->str('installurl') && checkSecurityToken()) { + try { + $installed = $extension->installFromURL($INPUT->post->str('installurl')); + foreach($installed as $ext => $info) { + msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); + } + } catch(Exception $e) { + msg($e->getMessage(), -1); + } + } elseif(isset($_FILES['installfile']) && checkSecurityToken()) { + try { + $installed = $extension->installFromUpload('installfile'); + foreach($installed as $ext => $info) { + msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); + } + } catch(Exception $e) { + msg($e->getMessage(), -1); + } } } @@ -118,7 +135,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { $this->gui->tabNavigation(); - switch($this->gui->currentTab()){ + switch($this->gui->currentTab()) { case 'search': $this->gui->tabSearch(); break; @@ -133,7 +150,6 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { $this->gui->tabPlugins(); } - ptln('
    '); } } diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index b3bce082f..550fc33fb 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -530,6 +530,67 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { return true; } + /** + * Install an extension from a user upload + * + * @param string $field name of the upload file + * @throws Exception when something goes wrong + * @return array The list of installed extensions + */ + public function installFromUpload($field){ + if($_FILES[$field]['error']){ + throw new Exception($this->getLang('msg_upload_failed').' ('.$_FILES[$field]['error'].')'); + } + + $tmp = $this->mkTmpDir(); + if(!$tmp) throw new Exception($this->getLang('error_dircreate')); + + // filename may contain the plugin name for old style plugins... + $basename = basename($_FILES[$field]['name']); + $basename = preg_replace('/\.(tar\.gz|tar\.bz|tar\.bz2|tar|tgz|tbz|zip)$/', '', $basename); + $basename = preg_replace('/[\W]+/', '', $basename); + + if(!move_uploaded_file($_FILES[$field]['tmp_name'], "$tmp/upload.archive")){ + throw new Exception($this->getLang('msg_upload_failed')); + } + + try { + $installed = $this->installArchive("$tmp/upload.archive", true, $basename); + + // purge caches + foreach($installed as $ext => $info){ + $this->setExtension($ext); + $this->purgeCache(); + } + }catch (Exception $e){ + throw $e; + } + return $installed; + } + + /** + * Install an extension from a remote URL + * + * @param string $url + * @throws Exception when something goes wrong + * @return array The list of installed extensions + */ + public function installFromURL($url){ + try { + $path = $this->download($url); + $installed = $this->installArchive($path, true); + + // purge caches + foreach($installed as $ext => $info){ + $this->setExtension($ext); + $this->purgeCache(); + } + }catch (Exception $e){ + throw $e; + } + return $installed; + } + /** * Install or update the extension * @@ -759,9 +820,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @param bool $overwrite If an already installed plugin should be overwritten * @param string $base The basename of the plugin if it's known * @throws Exception when something went wrong - * @return bool|string True on success, an error message on failure + * @return array list of installed extensions */ public function installArchive($file, $overwrite=false, $base = '') { + $installed_extensions = array(); // create tmp directory for decompression if(!($tmp = $this->mkTmpDir())) { @@ -774,20 +836,16 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { } // decompress - if(!$this->decompress($file, "$tmp/".$base)) { - throw new Exception(sprintf($this->getLang('error_decompress'), $file)); + try{ + $this->decompress($file, "$tmp/".$base); + } catch (Exception $e) { + throw $e; } // search $tmp/$base for the folder(s) that has been created // move the folder(s) to lib/.. $result = array('old'=>array(), 'new'=>array()); - if($base){ - // when a base was set it came from the current extension setup #fixme this is a bit hacky - $default = ($this->isTemplate() ? 'template' : 'plugin'); - }else{ - // assume a default of plugin, find_folders will autodetect templates - $default = 'plugin'; - } + $default = ($this->isTemplate() ? 'template' : 'plugin'); if(!$this->find_folders($result, $tmp.'/'.$base, $default)) { throw new Exception($this->getLang('error_findfolder')); } @@ -799,6 +857,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { $install = $result['old']; } + if(!count($install)){ + throw new Exception($this->getLang('error_findfolder')); + } + // now install all found items foreach($install as $item) { // where to install? @@ -933,11 +995,15 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { return true; } - /** * Decompress a given file to the given target directory * * Determines the compression type from the file extension + * + * @param string $file archive to extract + * @param string $target directory to extract to + * @throws Exception + * @return bool */ private function decompress($file, $target) { // decompression library doesn't like target folders ending in "/" @@ -961,7 +1027,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { $tar->open($file, $compress_type); $tar->extract($target); } catch (Exception $e) { - return $e->getMessage(); + throw new Exception($this->getLang('error_decompress').' '.$e->getMessage()); } return true; @@ -970,11 +1036,15 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { $zip = new ZipLib(); $ok = $zip->Extract($file, $target); - return ($ok==-1 ? 'Error extracting the zip archive' : true); + if($ok == -1){ + throw new Exception($this->getLang('error_decompress').' Error extracting the zip archive'); + } + + return true; } // the only case when we don't get one of the recognized archive types is when the archive file can't be read - return 'Couldn\'t read archive file'; + throw new Exception($this->getLang('error_decompress').' Couldn\'t read archive file'); } /** diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index 6a0cdb22e..8577a1696 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -16,7 +16,7 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { protected $tabs = array('plugins', 'templates', 'search', 'install'); - /** @var string the extension that should have an open info window FIXME currently broken*/ + /** @var string the extension that should have an open info window FIXME currently broken */ protected $infoFor = ''; /** @@ -24,12 +24,11 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { * * initializes requested info window */ - public function __construct(){ + public function __construct() { global $INPUT; $this->infoFor = $INPUT->str('info'); } - /** * display the plugin tab */ @@ -92,10 +91,9 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { if(!$INPUT->bool('q')) return; - /* @var helper_plugin_extension_repository $repository FIXME should we use some gloabl instance? */ $repository = $this->loadHelper('extension_repository'); - $result = $repository->search($INPUT->str('q')); + $result = $repository->search($INPUT->str('q')); /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); @@ -116,6 +114,12 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { */ public function tabInstall() { echo $this->locale_xhtml('intro_install'); + + $form = new Doku_Form(array('action' => $this->tabURL('', array(), '&'), 'enctype' => 'multipart/form-data')); + $form->addElement(form_makeTextField('installurl', '', 'Install from URL:', '', 'block')); + $form->addElement(form_makeFileField('installfile', 'Upload Extension:', '', 'block')); + $form->addElement(form_makeButton('submit', '', 'Install')); + $form->printForm(); } /** diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 1a5c90923..0c4582124 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -79,6 +79,8 @@ $lang['msg_template_update_success'] = 'Template %s updated successfully'; $lang['msg_plugin_install_success'] = 'Plugin %s installed successfully'; $lang['msg_plugin_update_success'] = 'Plugin %s updated successfully'; +$lang['msg_upload_failed'] = 'Uploading the file failed'; + $lang['msg_url_failed'] = 'URL [%s] could not be downloaded.
    %s'; $lang['msg_download_failed'] = 'Plugin %s could not be downloaded.
    %s'; @@ -130,7 +132,7 @@ $lang['no_manager'] = 'Could not find manager.dat file'; $lang['error_badurl'] = 'URL ends with slash - unable to determine file name from the url'; $lang['error_dircreate'] = 'Unable to create temporary folder to receive download'; $lang['error_download'] = 'Unable to download the file: %s'; -$lang['error_decompress'] = 'Unable to decompress the downloaded file. This maybe as a result of a bad download, in which case you should try again; or the compression format may be unknown, in which case you will need to download and install manually'; +$lang['error_decompress'] = 'Unable to decompress the downloaded file. This maybe as a result of a bad download, in which case you should try again; or the compression format may be unknown, in which case you will need to download and install manually.'; $lang['error_findfolder'] = 'Unable to identify extension directory, you need to download and install manually'; $lang['error_copy'] = 'There was a file copy error while attempting to install files for directory %s: the disk could be full or file access permissions may be incorrect. This may have resulted in a partially installed plugin and leave your wiki installation unstable'; //Setup VIM: ex: et ts=4 : -- cgit v1.2.3 From df7751c6c456e0107b11d547c159266b470470d9 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 10 Aug 2013 10:45:29 +0200 Subject: nicer tabs --- lib/plugins/extension/helper/gui.php | 8 ++++++++ lib/plugins/extension/lang/en/intro_install.txt | 2 +- lib/plugins/extension/lang/en/intro_plugins.txt | 2 +- lib/plugins/extension/lang/en/intro_search.txt | 2 +- lib/plugins/extension/lang/en/intro_templates.txt | 2 +- lib/plugins/extension/style.less | 20 ++++++++++++++++++++ 6 files changed, 32 insertions(+), 4 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index 8577a1696..7ad238af4 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -36,7 +36,9 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { /* @var Doku_Plugin_Controller $plugin_controller */ global $plugin_controller; + echo '
    '; echo $this->locale_xhtml('intro_plugins'); + echo '
    '; $pluginlist = $plugin_controller->getList('', true); sort($pluginlist); @@ -57,7 +59,9 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { * Display the template tab */ public function tabTemplates() { + echo '
    '; echo $this->locale_xhtml('intro_templates'); + echo '
    '; // FIXME do we have a real way? $tpllist = glob(DOKU_INC.'lib/tpl/*', GLOB_ONLYDIR); @@ -82,7 +86,9 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { */ public function tabSearch() { global $INPUT; + echo '
    '; echo $this->locale_xhtml('intro_search'); + echo '
    '; $form = new Doku_Form(array('action' => $this->tabURL('', array(), '&'))); $form->addElement(form_makeTextField('q', $INPUT->str('q'), 'Search')); @@ -113,7 +119,9 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { * Display the template tab */ public function tabInstall() { + echo '
    '; echo $this->locale_xhtml('intro_install'); + echo '
    '; $form = new Doku_Form(array('action' => $this->tabURL('', array(), '&'), 'enctype' => 'multipart/form-data')); $form->addElement(form_makeTextField('installurl', '', 'Install from URL:', '', 'block')); diff --git a/lib/plugins/extension/lang/en/intro_install.txt b/lib/plugins/extension/lang/en/intro_install.txt index f68d2d909..0556c8048 100644 --- a/lib/plugins/extension/lang/en/intro_install.txt +++ b/lib/plugins/extension/lang/en/intro_install.txt @@ -1 +1 @@ -Here you can manual install plugins and templates by either uploading them or providing a direct download URL. \ No newline at end of file +Here you can manually install plugins and templates by either uploading them or providing a direct download URL. \ No newline at end of file diff --git a/lib/plugins/extension/lang/en/intro_plugins.txt b/lib/plugins/extension/lang/en/intro_plugins.txt index ef180135e..4e42efee1 100644 --- a/lib/plugins/extension/lang/en/intro_plugins.txt +++ b/lib/plugins/extension/lang/en/intro_plugins.txt @@ -1 +1 @@ -Here you can view, enable and disable installed plugins. \ No newline at end of file +These are the plugins currently installed in your DokuWiki. You can enable or disable or even completely uninstall them here. Plugin updates are shown here as well, be sure to read the plugin's documentation before updating. \ No newline at end of file diff --git a/lib/plugins/extension/lang/en/intro_search.txt b/lib/plugins/extension/lang/en/intro_search.txt index 003c99c61..244cd6812 100644 --- a/lib/plugins/extension/lang/en/intro_search.txt +++ b/lib/plugins/extension/lang/en/intro_search.txt @@ -1 +1 @@ -Here you can search for available plugins and templates for DokuWiki. Be sure to read more about Plugin Security before installing FIXME add link \ No newline at end of file +This tab gives you access to all available 3rd party plugins and templates for DokuWiki. Please be aware that installing 3rd party code may pose a **security risk**, you may want to read about [[doku>security#plugin_security|plugin security]] first. \ No newline at end of file diff --git a/lib/plugins/extension/lang/en/intro_templates.txt b/lib/plugins/extension/lang/en/intro_templates.txt index 2b3af727b..d42180cc4 100644 --- a/lib/plugins/extension/lang/en/intro_templates.txt +++ b/lib/plugins/extension/lang/en/intro_templates.txt @@ -1 +1 @@ -Here you can view, enable and disable installed templates. Note that only one template can be activated at a time. \ No newline at end of file +These are the templates currently installed in your DokuWiki. Note that only one template can be activated at a time. diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less index fc5613044..8c85bec46 100644 --- a/lib/plugins/extension/style.less +++ b/lib/plugins/extension/style.less @@ -38,6 +38,26 @@ } } +#extension__manager { + /* tab layout - most of it is in the main template */ + ul.tabs li.active a { + background-color: @ini_background_alt; + border-bottom: solid 1px @ini_background_alt; + z-index: 2; + } + .panelHeader { + background-color: @ini_background_alt; + margin: 0 0 10px 0; + padding: 10px 10px 8px; + text-align: left; + overflow: hidden; + } +} + +/* ------- FIXME everything below needs to be checked for usage ---------- */ + + + /* * general layout */ -- cgit v1.2.3 From 32fdfac2cd446733436dc1b344d7f73b78655cb1 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 10 Aug 2013 11:11:14 +0200 Subject: changed exception handling, redirect after post actions --- lib/plugins/extension/admin.php | 98 +++++++++++++++++----------------- lib/plugins/extension/helper/gui.php | 5 +- lib/plugins/extension/lang/en/lang.php | 2 + 3 files changed, 53 insertions(+), 52 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 62d94e899..99c74848b 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -57,73 +57,71 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); - if($INPUT->post->has('fn') && checkSecurityToken()) { - $actions = $INPUT->post->arr('fn'); - foreach($actions as $action => $extensions) { - foreach($extensions as $extname => $label) { - switch($action) { - case 'install': - case 'reinstall': - case 'update': - try { + try { + if($INPUT->post->has('fn') && checkSecurityToken()) { + $actions = $INPUT->post->arr('fn'); + foreach($actions as $action => $extensions) { + foreach($extensions as $extname => $label) { + switch($action) { + case 'install': + case 'reinstall': + case 'update': $extension->setExtension($extname); $installed = $extension->installOrUpdate(); foreach($installed as $ext => $info) { msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); } - } catch(Exception $e) { - msg($e->getMessage(), -1); - } - break; - case 'uninstall': - $extension->setExtension($extname); - $status = $extension->uninstall(); - if($status !== true) { - msg($status, -1); - } else { - msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getDisplayName())), 1); - } - break; - case 'enable'; - $extension->setExtension($extname); - $status = $extension->enable(); - if($status !== true) { - msg($status, -1); - } else { - msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getDisplayName())), 1); - } - break; - case 'disable'; - $extension->setExtension($extname); - $status = $extension->disable(); - if($status !== true) { - msg($status, -1); - } else { - msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getDisplayName())), 1); - } - break; + break; + case 'uninstall': + $extension->setExtension($extname); + $status = $extension->uninstall(); + if($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getDisplayName())), 1); + } + break; + case 'enable'; + $extension->setExtension($extname); + $status = $extension->enable(); + if($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getDisplayName())), 1); + } + break; + case 'disable'; + $extension->setExtension($extname); + $status = $extension->disable(); + if($status !== true) { + msg($status, -1); + } else { + msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getDisplayName())), 1); + } + break; + } } } - } - } elseif($INPUT->post->str('installurl') && checkSecurityToken()) { - try { + send_redirect($this->gui->tabURL('', array(), '&', true)); + } elseif($INPUT->post->str('installurl') && checkSecurityToken()) { $installed = $extension->installFromURL($INPUT->post->str('installurl')); foreach($installed as $ext => $info) { msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); } - } catch(Exception $e) { - msg($e->getMessage(), -1); - } - } elseif(isset($_FILES['installfile']) && checkSecurityToken()) { - try { + send_redirect($this->gui->tabURL('', array(), '&', true)); + } elseif(isset($_FILES['installfile']) && checkSecurityToken()) { $installed = $extension->installFromUpload('installfile'); foreach($installed as $ext => $info) { msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1); } - } catch(Exception $e) { - msg($e->getMessage(), -1); + send_redirect($this->gui->tabURL('', array(), '&', true)); } + + } catch(Exception $e) { + msg($e->getMessage(), -1); + send_redirect($this->gui->tabURL('', array(), '&', true)); } + } /** diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index 7ad238af4..2c2a19bf8 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -168,9 +168,10 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { * @param string $tab tab to load, empty for current tab * @param array $params associative array of parameter to set * @param string $sep seperator to build the URL + * @param bool $absolute create absolute URLs? * @return string */ - public function tabURL($tab = '', $params = array(), $sep = '&') { + public function tabURL($tab = '', $params = array(), $sep = '&', $absolute=false) { global $ID; global $INPUT; @@ -181,7 +182,7 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { 'tab' => $tab, 'q' => $INPUT->str('q') ); - return wl($ID, array_merge($defaults, $params), false, $sep); + return wl($ID, array_merge($defaults, $params), $absolute, $sep); } } diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 0c4582124..8aaa0d8d2 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -74,6 +74,8 @@ $lang['msg_disabled'] = 'Plugin %s disabled'; $lang['msg_notdisabled'] = 'Plugin %s could not be disabled, check file permissions'; +$lang['msg_delete_success'] = 'Extension uninstalled'; + $lang['msg_template_install_success'] = 'Template %s installed successfully'; $lang['msg_template_update_success'] = 'Template %s updated successfully'; $lang['msg_plugin_install_success'] = 'Plugin %s installed successfully'; -- cgit v1.2.3 From 8d295da079a559bf0f254f0db383e0b3188f9985 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 10 Aug 2013 11:46:09 +0200 Subject: language cleanup removed all unused strings --- lib/plugins/extension/helper/extension.php | 2 +- lib/plugins/extension/lang/en/lang.php | 195 ++++++++++------------------- lib/plugins/extension/style.less | 6 +- 3 files changed, 70 insertions(+), 133 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 550fc33fb..d912a44c0 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -797,7 +797,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { // check the url $matches = array(); if(!preg_match('/[^\/]*$/', $url, $matches) || !$matches[0]) { - throw new Exception($this->getLang('baddownloadurl')); + throw new Exception($this->getLang('error_badurl')); } $file = $matches[0]; diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 8aaa0d8d2..db1449ae0 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -6,135 +6,68 @@ * @author Christopher Smith */ -// menu entry for admin plugins -$lang['menu'] = 'Extension Manager'; - -$lang['tab_plugins'] = 'Installed Plugins'; -$lang['tab_templates'] = 'Installed Templates'; -$lang['tab_search'] = 'Search and Install'; -$lang['tab_install'] = 'Manual Install'; - -// custom language strings for the plugin -$lang['notimplemented'] = 'This feature hasn\'t been implemented yet'; -$lang['alreadyenabled'] = 'This extension has already been enabled'; -$lang['alreadydisabled'] = 'This extension has already been disabled'; -$lang['pluginlistsaveerror'] = 'There was an error saving the plugin list'; -$lang['unknownauthor'] = 'Unknown author'; -$lang['unknownversion'] = 'Unknown version'; - -// extension list -$lang['btn_info'] = 'Show more info'; -$lang['btn_update'] = 'Update'; -$lang['btn_uninstall'] = 'Uninstall'; -$lang['btn_enable'] = 'Enable'; -$lang['btn_disable'] = 'Disable'; -//$lang['btn_disable_all'] = 'Disable all'; -//$lang['btn_settings'] = 'Settings'; -$lang['btn_install'] = 'Install'; -$lang['btn_reinstall'] = 'Re-install'; -//$lang['btn_disdown'] = 'Download as Disabled'; -//$lang['btn_dependown'] = 'Download with dependencies'; - -$lang['extensionby'] = '%s by %s'; -$lang['popularity'] = 'Popularity: %s'; -$lang['homepage_link'] = 'Docs'; -$lang['bugs_features'] = 'Bugs'; -$lang['author_hint'] = 'Search extensions by this author'; -$lang['tag_hint'] = 'Search extensions with this tag'; -$lang['installed'] = 'Installed:'; -$lang['lastupdate'] = 'Last updated:'; -$lang['downloadurl'] = 'Download URL:'; -$lang['repository'] = 'Repository:'; -$lang['unknown'] = 'unknown'; -$lang['installed_version'] = 'Installed version:'; -$lang['install_date'] = 'Your last update:'; -$lang['available_version'] = 'Version:'; -$lang['compatible'] = 'Compatible with:'; -$lang['depends'] = 'Depends on:'; -$lang['similar'] = 'Similar to:'; -$lang['conflicts'] = 'Conflicts with:'; -$lang['donate'] = 'Donate'; -$lang['bundled'] = 'bundled'; -$lang['manual_install'] = 'manual install'; - -$lang['repo_error'] = 'The DokuWiki extension repository can not be reached currently. Online Features are not available.'; -$lang['repo_retry'] = 'Retry'; - -$lang['msg_tpl_uninstalled'] = 'Template %s uninstalled'; -$lang['msg_tpl_uninstalled'] = 'Template %s could not be uninstalled'; -$lang['msg_uninstalled'] = 'Plugin %s uninstalled'; -$lang['msg_uninstalled'] = 'Plugin %s could not be uninstalled'; - -$lang['msg_tpl_enabled'] = 'Template %s enabled'; -$lang['msg_tpl_notenabled'] = 'Template %s could not be enabled, check file permissions'; -$lang['msg_enabled'] = 'Plugin %s enabled'; -$lang['msg_notenabled'] = 'Plugin %s could not be enabled, check file permissions'; - -$lang['msg_disabled'] = 'Plugin %s disabled'; -$lang['msg_notdisabled'] = 'Plugin %s could not be disabled, check file permissions'; - - -$lang['msg_delete_success'] = 'Extension uninstalled'; - +$lang['menu'] = 'Extension Manager'; + +$lang['tab_plugins'] = 'Installed Plugins'; +$lang['tab_templates'] = 'Installed Templates'; +$lang['tab_search'] = 'Search and Install'; +$lang['tab_install'] = 'Manual Install'; + +$lang['notimplemented'] = 'This feature hasn\'t been implemented yet'; +$lang['notinstalled'] = 'This extension is not installed'; +$lang['alreadyenabled'] = 'This extension has already been enabled'; +$lang['alreadydisabled'] = 'This extension has already been disabled'; +$lang['pluginlistsaveerror'] = 'There was an error saving the plugin list'; +$lang['unknownauthor'] = 'Unknown author'; +$lang['unknownversion'] = 'Unknown version'; + +$lang['btn_info'] = 'Show more info'; +$lang['btn_update'] = 'Update'; +$lang['btn_uninstall'] = 'Uninstall'; +$lang['btn_enable'] = 'Enable'; +$lang['btn_disable'] = 'Disable'; +$lang['btn_install'] = 'Install'; +$lang['btn_reinstall'] = 'Re-install'; + +$lang['extensionby'] = '%s by %s'; +$lang['popularity'] = 'Popularity: %s'; +$lang['homepage_link'] = 'Docs'; +$lang['bugs_features'] = 'Bugs'; +$lang['author_hint'] = 'Search extensions by this author'; +$lang['installed'] = 'Installed:'; +$lang['downloadurl'] = 'Download URL:'; +$lang['repository'] = 'Repository:'; +$lang['unknown'] = 'unknown'; +$lang['installed_version'] = 'Installed version:'; +$lang['install_date'] = 'Your last update:'; +$lang['available_version'] = 'Version:'; +$lang['compatible'] = 'Compatible with:'; +$lang['depends'] = 'Depends on:'; +$lang['similar'] = 'Similar to:'; +$lang['conflicts'] = 'Conflicts with:'; +$lang['donate'] = 'Donate'; +$lang['repo_retry'] = 'Retry'; + +$lang['msg_enabled'] = 'Plugin %s enabled'; +$lang['msg_disabled'] = 'Plugin %s disabled'; +$lang['msg_delete_success'] = 'Extension uninstalled'; $lang['msg_template_install_success'] = 'Template %s installed successfully'; -$lang['msg_template_update_success'] = 'Template %s updated successfully'; -$lang['msg_plugin_install_success'] = 'Plugin %s installed successfully'; -$lang['msg_plugin_update_success'] = 'Plugin %s updated successfully'; - -$lang['msg_upload_failed'] = 'Uploading the file failed'; - - -$lang['msg_url_failed'] = 'URL [%s] could not be downloaded.
    %s'; -$lang['msg_download_failed'] = 'Plugin %s could not be downloaded.
    %s'; -$lang['msg_download_success'] = 'Plugin %s installed successfully'; -$lang['msg_tpl_download_failed'] = 'Template %s could not be downloaded.
    %s'; - -$lang['msg_download_pkg_success'] = '%s extension package successfully installed (%s)'; -$lang['msg_tpl_download_pkg_success'] = '%s extension package successfully installed (%s)'; - -$lang['msg_update_success'] = 'Plugin %s successfully updated'; -$lang['msg_update_failed'] = 'Update of plugin %s failed.
    %s'; -$lang['msg_tpl_update_success'] = 'Template %s successfully updated'; -$lang['msg_tpl_update_failed'] = 'Update of template %s failed.
    %s'; -$lang['msg_update_pkg_success'] = '%s extension package successfully updated (%s)'; -$lang['msg_tpl_update_pkg_success'] = '%s extension package successfully updated (%s)'; - -$lang['msg_reinstall_success'] = 'Plugin %s re-installed successfully'; -$lang['msg_reinstall_failed'] = 'Failed to re-install plugin %s.
    %s'; -$lang['msg_tpl_reinstall_success'] = 'Template %s re-installed successfully'; -$lang['msg_tpl_reinstall_failed'] = 'Failed to re-install template %s.
    %s'; -$lang['msg_reinstall_pkg_success'] = '%s extension package successfully reinstalled (%s)'; -$lang['msg_tpl_reinstall_pkg_success'] = '%s extension package successfully reinstalled (%s)'; - -// info titles -$lang['plugin'] = 'Plugin'; -$lang['provides'] = 'Provides:'; -$lang['noinfo'] = 'This plugin returned no information, it may be invalid.'; -$lang['name'] = 'Name:'; -$lang['date'] = 'Date:'; -$lang['type'] = 'Type:'; -$lang['desc'] = 'Description:'; -$lang['author'] = 'Author:'; -$lang['www'] = 'Web:'; - -// error messages -$lang['needed_by'] = 'Needed by:'; -$lang['not_writable'] = 'DokuWiki can not write to the folder'; -$lang['missing_dependency'] = 'Missing or disabled dependency: %s'; -$lang['security_issue'] = 'Security Issue: %s'; -$lang['security_warning'] = 'Security Warning: %s'; -$lang['update_available'] = 'Update: New version %s is available.'; -$lang['wrong_folder'] = 'Plugin installed incorrectly: Rename plugin directory "%s" to "%s".'; -$lang['url_change'] = 'URL changed: Download URL has changed since last download. Check if the new URL is valid before updating the extension.
    New: %s
    Old: %s'; -$lang['gitmanaged'] = 'Extension installed with git'; -$lang['bundled_source'] = 'Bundled with DokuWiki source'; -$lang['no_url'] = 'No download URL'; -$lang['no_manager'] = 'Could not find manager.dat file'; - -$lang['error_badurl'] = 'URL ends with slash - unable to determine file name from the url'; -$lang['error_dircreate'] = 'Unable to create temporary folder to receive download'; -$lang['error_download'] = 'Unable to download the file: %s'; -$lang['error_decompress'] = 'Unable to decompress the downloaded file. This maybe as a result of a bad download, in which case you should try again; or the compression format may be unknown, in which case you will need to download and install manually.'; -$lang['error_findfolder'] = 'Unable to identify extension directory, you need to download and install manually'; -$lang['error_copy'] = 'There was a file copy error while attempting to install files for directory %s: the disk could be full or file access permissions may be incorrect. This may have resulted in a partially installed plugin and leave your wiki installation unstable'; -//Setup VIM: ex: et ts=4 : +$lang['msg_template_update_success'] = 'Template %s updated successfully'; +$lang['msg_plugin_install_success'] = 'Plugin %s installed successfully'; +$lang['msg_plugin_update_success'] = 'Plugin %s updated successfully'; +$lang['msg_upload_failed'] = 'Uploading the file failed'; + +$lang['provides'] = 'Provides:'; +$lang['missing_dependency'] = 'Missing or disabled dependency: %s'; +$lang['security_issue'] = 'Security Issue: %s'; +$lang['security_warning'] = 'Security Warning: %s'; +$lang['update_available'] = 'Update: New version %s is available.'; +$lang['wrong_folder'] = 'Plugin installed incorrectly: Rename plugin directory "%s" to "%s".'; +$lang['url_change'] = 'URL changed: Download URL has changed since last download. Check if the new URL is valid before updating the extension.
    New: %s
    Old: %s'; + +$lang['error_badurl'] = 'URL ends with slash - unable to determine file name from the url'; +$lang['error_dircreate'] = 'Unable to create temporary folder to receive download'; +$lang['error_download'] = 'Unable to download the file: %s'; +$lang['error_decompress'] = 'Unable to decompress the downloaded file. This maybe as a result of a bad download, in which case you should try again; or the compression format may be unknown, in which case you will need to download and install manually.'; +$lang['error_findfolder'] = 'Unable to identify extension directory, you need to download and install manually'; +$lang['error_copy'] = 'There was a file copy error while attempting to install files for directory %s: the disk could be full or file access permissions may be incorrect. This may have resulted in a partially installed plugin and leave your wiki installation unstable'; diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less index 8c85bec46..4a036f067 100644 --- a/lib/plugins/extension/style.less +++ b/lib/plugins/extension/style.less @@ -191,6 +191,8 @@ #extension__manager div.screenshot img { width: 120px; height: 70px; + border-radius: 12px; + box-shadow: 2px 2px 2px #ccc; } #extension__manager .legend div.screenshot { @@ -198,6 +200,7 @@ margin-left: -132px; max-width: 120px; float: left; + position: relative; } [dir=rtl] #extension__manager .legend div.screenshot { margin-left: 0; @@ -209,7 +212,8 @@ min-height: 24px; min-width: 24px; position: absolute; - left: 0; + left: 0px; + top: 0px; } [dir=rtl] #extension__manager .legend div.screenshot span { left: auto; -- cgit v1.2.3 From f910b299e4bbc59cfbe4e68af5d34ea2e5815574 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 10 Aug 2013 14:29:40 +0200 Subject: updated styles RTL styles need to be readded --- lib/plugins/extension/helper/gui.php | 16 +- lib/plugins/extension/images/icons.xcf | Bin 43016 -> 67195 bytes lib/plugins/extension/images/plugin.png | Bin 6259 -> 6824 bytes lib/plugins/extension/images/template.png | Bin 6802 -> 7547 bytes lib/plugins/extension/lang/en/lang.php | 3 + lib/plugins/extension/style.less | 477 ++++++++++++------------------ 6 files changed, 199 insertions(+), 297 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index 2c2a19bf8..139a1a16a 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -90,9 +90,9 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { echo $this->locale_xhtml('intro_search'); echo '
    '; - $form = new Doku_Form(array('action' => $this->tabURL('', array(), '&'))); - $form->addElement(form_makeTextField('q', $INPUT->str('q'), 'Search')); - $form->addElement(form_makeButton('submit', '', 'Search')); + $form = new Doku_Form(array('action' => $this->tabURL('', array(), '&'), 'class' => 'search')); + $form->addElement(form_makeTextField('q', $INPUT->str('q'), $this->getLang('search_for'))); + $form->addElement(form_makeButton('submit', '', $this->getLang('search'))); $form->printForm(); if(!$INPUT->bool('q')) return; @@ -123,7 +123,7 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { echo $this->locale_xhtml('intro_install'); echo ''; - $form = new Doku_Form(array('action' => $this->tabURL('', array(), '&'), 'enctype' => 'multipart/form-data')); + $form = new Doku_Form(array('action' => $this->tabURL('', array(), '&'), 'enctype' => 'multipart/form-data', 'class' => 'install')); $form->addElement(form_makeTextField('installurl', '', 'Install from URL:', '', 'block')); $form->addElement(form_makeFileField('installfile', 'Upload Extension:', '', 'block')); $form->addElement(form_makeButton('submit', '', 'Install')); @@ -165,13 +165,13 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { /** * Create an URL inside the extension manager * - * @param string $tab tab to load, empty for current tab - * @param array $params associative array of parameter to set - * @param string $sep seperator to build the URL + * @param string $tab tab to load, empty for current tab + * @param array $params associative array of parameter to set + * @param string $sep seperator to build the URL * @param bool $absolute create absolute URLs? * @return string */ - public function tabURL($tab = '', $params = array(), $sep = '&', $absolute=false) { + public function tabURL($tab = '', $params = array(), $sep = '&', $absolute = false) { global $ID; global $INPUT; diff --git a/lib/plugins/extension/images/icons.xcf b/lib/plugins/extension/images/icons.xcf index a99747d81..ab69b3099 100644 Binary files a/lib/plugins/extension/images/icons.xcf and b/lib/plugins/extension/images/icons.xcf differ diff --git a/lib/plugins/extension/images/plugin.png b/lib/plugins/extension/images/plugin.png index b9133681f..e4a2d3be6 100644 Binary files a/lib/plugins/extension/images/plugin.png and b/lib/plugins/extension/images/plugin.png differ diff --git a/lib/plugins/extension/images/template.png b/lib/plugins/extension/images/template.png index 383c4d0a3..ee74bc1d5 100644 Binary files a/lib/plugins/extension/images/template.png and b/lib/plugins/extension/images/template.png differ diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index db1449ae0..11c5caa2b 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -29,6 +29,9 @@ $lang['btn_disable'] = 'Disable'; $lang['btn_install'] = 'Install'; $lang['btn_reinstall'] = 'Re-install'; +$lang['search_for'] = 'Search Extension:'; +$lang['search'] = 'Search'; + $lang['extensionby'] = '%s by %s'; $lang['popularity'] = 'Popularity: %s'; $lang['homepage_link'] = 'Docs'; diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less index 4a036f067..e1a7a1d7b 100644 --- a/lib/plugins/extension/style.less +++ b/lib/plugins/extension/style.less @@ -38,8 +38,11 @@ } } +/** + * general styles + */ #extension__manager { - /* tab layout - most of it is in the main template */ + // tab layout - most of it is in the main template ul.tabs li.active a { background-color: @ini_background_alt; border-bottom: solid 1px @ini_background_alt; @@ -52,336 +55,232 @@ text-align: left; overflow: hidden; } -} - -/* ------- FIXME everything below needs to be checked for usage ---------- */ - - - -/* - * general layout - */ -#extension__manager h2 { - margin-left: 0; -} -#extension__manager .panelHeader div.error { - margin-top: 0; - float: left; -} -[dir=rtl] #extension__manager .panelHeader div.error { - float: right; + // message spacing + div.msg { + margin: 0.4em 0 0 0; + } } /* - * search & url download forms + * extensions table */ -#extension__manager form.search, -#extension__manager form.btn_reload { - float: right; -} -[dir=rtl] #extension__manager form.search, -[dir=rtl] #extension__manager form.btn_reload { - float: left; -} - -#extension__manager div.search form.search { - float: none; -} - -#extension__manager .tagcloud { - width: 55%; - float: left; - margin: 0 0.5em 1em 0; -} -[dir=rtl] #extension__manager .tagcloud { - float: right; - margin: 0 0 1em .5em; -} - -#extension__manager .tagcloud a.taglink { - background-color: inherit; -} - -#extension__manager div.search { - width: 44%; - float: left; -} -[dir=rtl] #extension__manager div.search { - float: right; -} - -#extension__manager fieldset { - margin-top: 0.5em; - width: auto; -} - -#extension__manager fieldset p { - margin: 0.5em; - text-align: justify; - font-size: 85%; -} - -/* tag cloud */ -#extension__manager a.cl0 { font-size: 0.7em; } -#extension__manager a.cl1 { font-size: 0.9em; } -#extension__manager a.cl2 { font-size: 1em; } -#extension__manager a.cl3 { font-size: 1.3em; } -#extension__manager a.cl4 { font-size: 1.6em; } -#extension__manager a.cl5 { font-size: 1.9em; } +#extension__list { + ul.extensionList { + margin-left: 0; + margin-right: 0; + padding: 0; + list-style: none; + } + ul.extensionList li { + margin: 0 0 .5em; + padding: 0 0 .5em; + color: @ini_text; + border-bottom: 1px solid @ini_border; + overflow: hidden; + } -#extension__manager .extensionList input.button { - margin: 0 .3em .3em 0; -} -[dir=rtl] #extension__manager .extensionList input.button { - margin: 0 0 .3em .3em; + input.button { + margin: 0 .3em .3em 0; + } } -/* - * extensions table +/** + * extension table left column */ -#extension__manager .extensionList { - margin-left: 0; - margin-right: 0; - padding: 0; - list-style: none; -} - -#extension__manager .extensionList li { - margin: 0 0 .5em; - padding: 0 0 .5em; - color: @ini_text; - border-bottom: 1px solid @ini_border; - overflow: hidden; -} - -#extension__manager .legend { +#extension__list .legend { position: relative; width: 75%; float: left; -} -[dir=rtl] #extension__manager .legend { - float: right; -} -#extension__manager .legend > div { - padding: 0 .5em 0 132px; - border-right: 1px solid @ini_background_alt; - overflow: hidden; -} -[dir=rtl] #extension__manager .legend > div { - padding: 0 132px 0 .5em; - border-left: 1px solid @ini_background_alt; - border-right-width: 0; -} - -#extension__manager .enabled div.screenshot span { - background: transparent url(images/enabled.png) no-repeat 2px 2px; -} - -#extension__manager .disabled div.screenshot span { - background: transparent url(images/disabled.png) no-repeat 2px 2px; -} - -#extension__manager .disabled .legend { - opacity: 0.7; -} - -#extension__manager div.screenshot img { - width: 120px; - height: 70px; - border-radius: 12px; - box-shadow: 2px 2px 2px #ccc; -} - -#extension__manager .legend div.screenshot { - margin-top: 4px; - margin-left: -132px; - max-width: 120px; - float: left; - position: relative; -} -[dir=rtl] #extension__manager .legend div.screenshot { - margin-left: 0; - margin-right: -132px; - float: right; -} + // padding + > div { + padding: 0 .5em 0 132px; + border-right: 1px solid @ini_background_alt; + overflow: hidden; + } -#extension__manager .legend div.screenshot span { - min-height: 24px; - min-width: 24px; - position: absolute; - left: 0px; - top: 0px; -} -[dir=rtl] #extension__manager .legend div.screenshot span { - left: auto; - right: 0; -} + // screenshot + div.screenshot { + margin-top: 4px; + margin-left: -132px; + max-width: 120px; + float: left; + position: relative; + + img { + width: 120px; + height: 70px; + border-radius: 5px; + box-shadow: 2px 2px 2px #666; + } + + span { + min-height: 24px; + min-width: 24px; + position: absolute; + left: 0px; + top: 0px; + } + } -#extension__manager .legend h2 { - width: 100%; - float: right; - margin: 0.2em 0 0.5em; - font-size: 100%; - font-weight: normal; - border: none; -} -[dir=rtl] #extension__manager .legend h2 { - float: left; -} + // plugin headline + h2 { + width: 100%; + float: right; + margin: 0.2em 0 0.5em; + font-size: 100%; + font-weight: normal; + border: none; + + strong { + font-size: 120%; + font-weight: bold; + vertical-align: baseline; + } + } -#extension__manager .legend h2 strong { - font-size: 120%; - font-weight: bold; - vertical-align: baseline; -} + // description + p { + margin: 0 0 0.6em 0; + } -#extension__manager .legend p { - margin: 0 0 0.6em 0; -} + // popularity bar + div.popularity { + background-color: @ini_background; + border: 1px solid silver; + height: .4em; + margin: 0 auto; + padding: 1px; + width: 5.5em; + position: absolute; + right: .5em; + top: 0.2em; + + div { + background-color: @ini_border; + height: 100%; + + span { + display: none;// @todo: hide accessibly + } + } + } -#extension__manager .legend span.linkbar { - font-size: 85%; -} + // Docs, Bugs, Tags + span.linkbar { + font-size: 85%; -#extension__manager .legend span.linkbar span.tags { - padding-left: 18px; - background: transparent url(images/tag.png) no-repeat 0 0; -} + span.tags { + padding-left: 18px; + background: transparent url(images/tag.png) no-repeat 0 0; + } + } + // more info button + a.info { + background: transparent url(images/up.png) no-repeat 0 0; + border-width: 0; + height: 13px; + width: 13px; + text-indent: -9999px; + float: right; + margin: .5em 0 0; + overflow: hidden; -#extension__manager .legend a.info { - background: transparent url(images/up.png) no-repeat 0 0; - border-width: 0; - height: 13px; - width: 13px; - text-indent: -99999px; - float: right; - margin: .5em 0 0; - overflow: hidden; -} -[dir=rtl] #extension__manager .legend a.info { - float: left; - margin: .5em 0 0; -} + &.close { + background: transparent url(images/down.png) no-repeat 0 0; + } + } -#extension__manager .legend a.info.close { - background: transparent url(images/down.png) no-repeat 0 0; + // detailed info box + dl.details { + margin: 0.4em 0 0 0; + font-size: 85%; + border-top: 1px solid @ini_background_alt; + clear: both; + + dt { + clear: left; + float: left; + width: 25%; + margin: 0; + text-align: right; + font-weight: normal; + padding: 0.2em 5px 0 0; + } + + dd { + margin-left: 25%; + font-weight: bold; + padding: 0.2em 0 0 5px; + + a { + font-weight: normal; + } + } + } } -#extension__manager .legend div.popularity { - background-color: @ini_background; - border: 1px solid silver; - height: .4em; - margin: 0 auto; - padding: 1px; - width: 5.5em; - position: absolute; - right: .5em; - top: 0.2em; -} -[dir=rtl] #extension__manager .legend div.popularity { - right: auto; - left: .5em; -} +/* + * Enabled/Disabled overrides + */ +#extension__list { + .enabled div.screenshot span { + background: transparent url(images/enabled.png) no-repeat 2px 2px; + } -#extension__manager .legend div.popularity div { - background-color: @ini_border; - height: 100%; -} + .disabled div.screenshot span { + background: transparent url(images/disabled.png) no-repeat 2px 2px; + } -#extension__manager .legend div.popularity div span { - display: none;/* @todo: hide accessibly */ + .disabled .legend { + opacity: 0.7; + } } +/** + * extension table right column + */ #extension__manager .actions { padding: 0; font-size: 95%; width: 25%; float: right; text-align: right; -} -[dir=rtl] #extension__manager .actions { - float: left; - text-align: left; -} -#extension__manager .actions .version { - display: block; -} + .version { + display: block; + } -#extension__manager .actions p { - margin: 0.2em 0; - text-align: center; + p { + margin: 0.2em 0; + text-align: center; + } } -/* - * extensions table, detailed info box +/** + * Search form */ -#extension__manager dl.details { - margin: 0.4em 0 0 0; - font-size: 85%; - border-top: 1px solid @ini_background_alt; - clear: both; -} - -#extension__manager dl.details dt { - clear: left; - float: left; - width: 25%; - margin: 0; - text-align: right; - font-weight: normal; - padding: 0.2em 5px 0 0; -} -[dir=rtl] #extension__manager dl.details dt { - clear: right; - float: right; - text-align: left; - padding: 0.2em 0 0 5px; -} - -#extension__manager dl.details dd { - margin-left: 25%; - font-weight: bold; - padding: 0.2em 0 0 5px; -} -[dir=rtl] #extension__manager dl.details dd { - margin-left: 0; - margin-right: 25%; - padding: 0.2em 5px 0 0 ; -} - -#extension__manager dl.details dd a { - font-weight: normal; -} +#extension__manager form.search { + display: block; + margin-bottom: 2em; -#extension__manager #info__popup { - z-index: 20; - overflow: hidden; - opacity: 0.9; - border: 1px solid @ini_border; - background-color: @ini_border; /*background_other__;*/ - text-align: left; - padding: 0.2em; -} -[dir=rtl] #extension__manager #info__popup { - text-align: right; -} + span { + font-weight: bold; + } -#extension__manager div.msg { - margin: 0.4em 0 0 0; + input.edit { + width: 25em; + } } -#extension__manager ul.tabs div.msg { - display: inline; - margin-left: 0.4em; -} -[dir=rtl] #extension__manager ul.tabs div.msg { - margin-left: 0; - margin-right: 0.4em; +/** + * Install form + */ +#extension__manager form.install { + text-align: center; + display: block; + width: 60%; } - -/* end admin plugin styles */ -- cgit v1.2.3 From 347e1146ca6a08dc90247a3f7da31cbc3a409aa0 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 10 Aug 2013 14:43:12 +0200 Subject: fixed screenshots --- lib/plugins/extension/helper/list.php | 4 ++-- lib/plugins/extension/lang/en/intro_install.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 6b1d41f78..16ef71569 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -181,8 +181,8 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { */ function make_screenshot(helper_plugin_extension_extension $extension) { if($extension->getScreenshotURL()) { - $img = ''. - ''.hsc($extension->getDisplayName()).''. + $img = ''. + ''.hsc($extension->getDisplayName()).''. ''; } elseif($extension->isTemplate()) { $img = 'template'; diff --git a/lib/plugins/extension/lang/en/intro_install.txt b/lib/plugins/extension/lang/en/intro_install.txt index 0556c8048..a5d5ab008 100644 --- a/lib/plugins/extension/lang/en/intro_install.txt +++ b/lib/plugins/extension/lang/en/intro_install.txt @@ -1 +1 @@ -Here you can manually install plugins and templates by either uploading them or providing a direct download URL. \ No newline at end of file +Here you can manually install plugins and templates by either uploading them or providing a direct download URL. -- cgit v1.2.3 From e445eeb3b675b350b4cebeeea610d4f7cd2e8f19 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 11 Aug 2013 11:19:34 +0200 Subject: fixed button logic --- lib/plugins/extension/helper/extension.php | 19 ++++++++++--------- lib/plugins/extension/helper/list.php | 26 ++++++++++++++++++++------ lib/plugins/extension/images/warning.png | Bin 0 -> 613 bytes lib/plugins/extension/lang/en/lang.php | 4 ++++ lib/plugins/extension/style.less | 9 +++++++++ 5 files changed, 43 insertions(+), 15 deletions(-) create mode 100644 lib/plugins/extension/images/warning.png (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index d912a44c0..6136c3c9a 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -107,7 +107,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return bool if the extension is protected */ public function isProtected() { - return in_array($this->base, array('acl', 'config', 'info', 'plugin', 'revert', 'usermanager')); + return in_array($this->id, array('acl', 'config', 'info', 'plugin', 'revert', 'usermanager', 'template:dokuwiki')); } /** @@ -513,20 +513,21 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { /** * If the extension can probably be installed/updated or uninstalled * - * @return bool|string True or one of "nourl", "noparentperms" (template/plugin install path not writable), "noperms" (extension itself not writable) + * @return bool|string True or error string */ public function canModify() { - if ($this->isInstalled()) { - if (!is_writable($this->getInstallDir())) { + if($this->isInstalled()) { + if(!is_writable($this->getInstallDir())) { return 'noperms'; } } - $parent_path = ($this->isTemplate() ? DOKU_TPLLIB : DOKU_PLUGIN); - if (!is_writable($parent_path)) { - return 'noparentperms'; - } - if (!$this->getDownloadURL()) return 'nourl'; + if($this->isTemplate() && !is_writable(DOKU_TPLLIB)) { + return 'notplperms'; + + } elseif(!is_writable(DOKU_PLUGIN)) { + return 'nopluginperms'; + } return true; } diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 16ef71569..7ecd5b267 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -444,11 +444,13 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { */ function make_actions(helper_plugin_extension_extension $extension) { $return = ''; - if (!$extension->isInstalled() && $extension->canModify() === true) { - $return .= $this->make_action('install', $extension); - } elseif ($extension->canModify() === true) { - if (!$extension->isBundled()) { - $return .= $this->make_action('uninstall', $extension); + $errors = ''; + + if ($extension->isInstalled()) { + if (($canmod = $extension->canModify()) === true) { + if (!$extension->isProtected()) { + $return .= $this->make_action('uninstall', $extension); + } if ($extension->getDownloadURL()) { if ($extension->updateAvailable()) { $return .= $this->make_action('update', $extension); @@ -456,7 +458,10 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= $this->make_action('reinstall', $extension); } } + }else{ + $errors .= '

    '.$this->getLang($canmod).'

    '; } + if (!$extension->isProtected()) { if ($extension->isEnabled()) { if(!$extension->isTemplate()){ // templates can't be disabled, only another can be enabled @@ -466,6 +471,15 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= $this->make_action('enable', $extension); } } + + }else{ + if (($canmod = $extension->canModify()) === true) { + if ($extension->getDownloadURL()) { + $return .= $this->make_action('install', $extension); + } + }else{ + $errors .= '
    '.$this->getLang($canmod).'
    '; + } } if (!$extension->isInstalled()) { @@ -473,7 +487,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= ($extension->getLastUpdate() ? hsc($extension->getLastUpdate()) : $this->getLang('unknown')).''; } - return $return; + return $return.' '.$errors; } /** diff --git a/lib/plugins/extension/images/warning.png b/lib/plugins/extension/images/warning.png new file mode 100644 index 000000000..c5e482f84 Binary files /dev/null and b/lib/plugins/extension/images/warning.png differ diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 11c5caa2b..53ce597dd 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -74,3 +74,7 @@ $lang['error_download'] = 'Unable to download the file: %s'; $lang['error_decompress'] = 'Unable to decompress the downloaded file. This maybe as a result of a bad download, in which case you should try again; or the compression format may be unknown, in which case you will need to download and install manually.'; $lang['error_findfolder'] = 'Unable to identify extension directory, you need to download and install manually'; $lang['error_copy'] = 'There was a file copy error while attempting to install files for directory %s: the disk could be full or file access permissions may be incorrect. This may have resulted in a partially installed plugin and leave your wiki installation unstable'; + +$lang['noperms'] = 'Extension directory is not writable'; +$lang['notplperms'] = 'Template directory is not writable'; +$lang['nopluginperms'] = 'Plugin directory is not writable'; \ No newline at end of file diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less index e1a7a1d7b..762968611 100644 --- a/lib/plugins/extension/style.less +++ b/lib/plugins/extension/style.less @@ -258,6 +258,15 @@ margin: 0.2em 0; text-align: center; } + + p.permerror { + margin-left: 0.4em; + text-align: left; + padding-left: 19px; + background: transparent url(images/warning.png) center left no-repeat; + line-height: 18px; + font-size: 12px; + } } /** -- cgit v1.2.3 From 7ca0915cf61dd8ff297bf1d3ebd6aafcab88a618 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 11 Aug 2013 11:52:47 +0200 Subject: fixed donation link --- lib/plugins/extension/helper/list.php | 18 ++++++++++++------ lib/plugins/extension/images/donate.png | Bin 1293 -> 724 bytes lib/plugins/extension/lang/en/lang.php | 3 ++- lib/plugins/extension/style.less | 7 ++++--- 4 files changed, 18 insertions(+), 10 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 7ecd5b267..ef589dedd 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -343,6 +343,14 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $default = $this->getLang('unknown'); $return = '
    '; + if ($extension->getDonationURL()) { + $return .= '
    '.$this->getLang('donate').'
    '; + $return .= '
    '; + $return .= ''; + $return .= '
    '; + } + + if (!$extension->isBundled()) { $return .= '
    '.$this->getLang('downloadurl').'
    '; $return .= '
    '; @@ -393,6 +401,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { foreach ($extension->getCompatibleVersions() as $date => $version) { $return .= $version['label'].' ('.$date.'), '; } + $return = rtrim($return, ', '); $return .= '
    '; } if($extension->getDependencies()) { @@ -415,9 +424,6 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= $this->make_linklist($extension->getConflicts()); $return .= ''; } - if ($extension->getDonationURL()) { - $return .= ''; - } $return .= '
    '; return $return; } @@ -431,9 +437,9 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { function make_linklist($ext) { $return = ''; foreach ($ext as $link) { - $return .= ''.hsc($link).' '; + $return .= ''.hsc($link).', '; } - return $return; + return rtrim($return, ', '); } /** @@ -482,7 +488,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { } } - if (!$extension->isInstalled()) { + if (!$extension->isInstalled() && $extension->getDownloadURL()) { $return .= ' '.$this->getLang('available_version').' '; $return .= ($extension->getLastUpdate() ? hsc($extension->getLastUpdate()) : $this->getLang('unknown')).''; } diff --git a/lib/plugins/extension/images/donate.png b/lib/plugins/extension/images/donate.png index b26ceb66e..9e234da1c 100644 Binary files a/lib/plugins/extension/images/donate.png and b/lib/plugins/extension/images/donate.png differ diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 53ce597dd..684ff2bad 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -48,7 +48,8 @@ $lang['compatible'] = 'Compatible with:'; $lang['depends'] = 'Depends on:'; $lang['similar'] = 'Similar to:'; $lang['conflicts'] = 'Conflicts with:'; -$lang['donate'] = 'Donate'; +$lang['donate'] = 'Like this?'; +$lang['donate_action'] = 'Buy the author a coffee!'; $lang['repo_retry'] = 'Retry'; $lang['msg_enabled'] = 'Plugin %s enabled'; diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less index 762968611..0d86f5419 100644 --- a/lib/plugins/extension/style.less +++ b/lib/plugins/extension/style.less @@ -209,15 +209,16 @@ text-align: right; font-weight: normal; padding: 0.2em 5px 0 0; + font-weight: bold; } dd { margin-left: 25%; - font-weight: bold; padding: 0.2em 0 0 5px; - a { - font-weight: normal; + a.donate { + padding-left: 18px; + background: transparent url(images/donate.png) left center no-repeat; } } } -- cgit v1.2.3 From 9597c3b83b2dbf2787bf9046c911f0cc17d29481 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 11 Aug 2013 12:05:09 +0200 Subject: just not handle enable/disable for templates for now --- lib/plugins/extension/helper/extension.php | 5 +++-- lib/plugins/extension/helper/list.php | 6 ++---- lib/plugins/extension/lang/en/intro_templates.txt | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 6136c3c9a..6ad8f5185 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -632,10 +632,11 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { */ public function enable() { if ($this->isTemplate()) return $this->getLang('notimplemented'); - /* @var Doku_Plugin_Controller $plugin_controller */ - global $plugin_controller; if (!$this->isInstalled()) return $this->getLang('notinstalled'); if ($this->isEnabled()) return $this->getLang('alreadyenabled'); + + /* @var Doku_Plugin_Controller $plugin_controller */ + global $plugin_controller; if ($plugin_controller->enable($this->base)) { $this->purgeCache(); return true; diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index ef589dedd..e33dbfa04 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -468,11 +468,9 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $errors .= '

    '.$this->getLang($canmod).'

    '; } - if (!$extension->isProtected()) { + if (!$extension->isProtected() && !$extension->isTemplate()) { // no enable/disable for templates if ($extension->isEnabled()) { - if(!$extension->isTemplate()){ // templates can't be disabled, only another can be enabled - $return .= $this->make_action('disable', $extension); - } + $return .= $this->make_action('disable', $extension); } else { $return .= $this->make_action('enable', $extension); } diff --git a/lib/plugins/extension/lang/en/intro_templates.txt b/lib/plugins/extension/lang/en/intro_templates.txt index d42180cc4..8bc04631d 100644 --- a/lib/plugins/extension/lang/en/intro_templates.txt +++ b/lib/plugins/extension/lang/en/intro_templates.txt @@ -1 +1 @@ -These are the templates currently installed in your DokuWiki. Note that only one template can be activated at a time. +These are the templates currently installed in your DokuWiki. You can select template to be used in the [[?do=admin&page=config|Configuration Manager]]. -- cgit v1.2.3 From 8ecc39810428baa07bb322c5f515f56bac533746 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 11 Aug 2013 12:14:17 +0200 Subject: confirm uninstalling of extensions --- lib/plugins/extension/lang/en/lang.php | 2 ++ lib/plugins/extension/script.js | 10 ++++++++++ 2 files changed, 12 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 684ff2bad..3b2d2f38d 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -29,6 +29,8 @@ $lang['btn_disable'] = 'Disable'; $lang['btn_install'] = 'Install'; $lang['btn_reinstall'] = 'Re-install'; +$lang['js']['reallydel'] = 'Really uninstall this extension?'; + $lang['search_for'] = 'Search Extension:'; $lang['search'] = 'Search'; diff --git a/lib/plugins/extension/script.js b/lib/plugins/extension/script.js index 7480801ac..bd3c97758 100644 --- a/lib/plugins/extension/script.js +++ b/lib/plugins/extension/script.js @@ -1,5 +1,15 @@ jQuery(function(){ + /** + * Confirm uninstalling + */ + jQuery('#extension__manager input.uninstall').click(function(e){ + if(!window.confirm(LANG.plugins.extension.reallydel)){ + e.preventDefault(); + return false; + } + return true; + }); /** * very simple lightbox -- cgit v1.2.3 From 2e308c3608bea50e07aacf51b232eaedbda6eb20 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 11 Aug 2013 12:14:44 +0200 Subject: only carry the q to search tab --- lib/plugins/extension/helper/gui.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index 139a1a16a..76651515c 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -180,8 +180,9 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { 'do' => 'admin', 'page' => 'extension', 'tab' => $tab, - 'q' => $INPUT->str('q') ); + if($tab == 'search') $defaults['q'] = $INPUT->str('q'); + return wl($ID, array_merge($defaults, $params), $absolute, $sep); } -- cgit v1.2.3 From 6fdd11e032b654dd27de346f7e54231ee043d7ef Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 15 Dec 2013 20:41:23 +0100 Subject: removed superflous README for bundled plugin --- lib/plugins/extension/README | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 lib/plugins/extension/README (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/README b/lib/plugins/extension/README deleted file mode 100644 index 5eefe924d..000000000 --- a/lib/plugins/extension/README +++ /dev/null @@ -1,27 +0,0 @@ -extension Plugin for DokuWiki - -Extension manager - -All documentation for this plugin can be found at -https://www.dokuwiki.org/plugin:extension - -If you install this plugin manually, make sure it is installed in -lib/plugins/extension/ - if the folder is called different it -will not work! - -Please refer to http://www.dokuwiki.org/plugins for additional info -on how to install plugins in DokuWiki. - ----- -Copyright (C) Michael Hamann - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; version 2 of the License - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -See the COPYING file in your DokuWiki folder for details -- cgit v1.2.3 From 9a2e74c192a89e048b53aca9260e70759e8dfdc6 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 5 Jan 2014 19:55:36 +0100 Subject: the plugin is called testing not test --- lib/plugins/extension/helper/extension.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 6ad8f5185..04eb24a66 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -94,7 +94,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { public function isBundled() { if (!empty($this->remoteInfo['bundled'])) return $this->remoteInfo['bundled']; return in_array($this->base, - array('acl', 'info', 'extension', 'test', 'revert', 'popularity', + array('acl', 'info', 'extension', 'testing', 'revert', 'popularity', 'config', 'plugin', 'safefnrecode', 'authplain', 'testing', 'template:dokuwiki', 'template:default' ) -- cgit v1.2.3 From 947a0472355a8591b0ef449ad9add9c0b782ddcf Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 5 Jan 2014 19:57:07 +0100 Subject: template:default is no longer bundled --- lib/plugins/extension/helper/extension.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 04eb24a66..2d0e91301 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -96,7 +96,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { return in_array($this->base, array('acl', 'info', 'extension', 'testing', 'revert', 'popularity', 'config', 'plugin', 'safefnrecode', 'authplain', 'testing', - 'template:dokuwiki', 'template:default' + 'template:dokuwiki' ) ); } -- cgit v1.2.3 From 220ab8d2dfa86c96112098922b40017448d3500a Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 5 Jan 2014 20:01:45 +0100 Subject: even more fixes for the bundled extension list --- lib/plugins/extension/helper/extension.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 2d0e91301..4eedb2a25 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -94,10 +94,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { public function isBundled() { if (!empty($this->remoteInfo['bundled'])) return $this->remoteInfo['bundled']; return in_array($this->base, - array('acl', 'info', 'extension', 'testing', 'revert', 'popularity', - 'config', 'plugin', 'safefnrecode', 'authplain', 'testing', - 'template:dokuwiki' - ) + array( + 'authad', 'authldap', 'authmysql', 'authpgsql', 'authplain', 'acl', 'info', 'extension', + 'revert', 'popularity', 'config', 'plugin', 'safefnrecode', 'testing', 'template:dokuwiki' + ) ); } -- cgit v1.2.3 From 16660d32b7c1e36a9940ee0ee9b692bf0dd1c313 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 5 Jan 2014 20:29:14 +0100 Subject: use config for firguring out if an extension is protected --- lib/plugins/extension/helper/extension.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 4eedb2a25..e3cb8a410 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -107,7 +107,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return bool if the extension is protected */ public function isProtected() { - return in_array($this->id, array('acl', 'config', 'info', 'plugin', 'revert', 'usermanager', 'template:dokuwiki')); + /** @var Doku_Plugin_Controller $plugin_controller */ + global $plugin_controller; + $cascade = $plugin_controller->getCascade(); + return (isset($cascade['protected'][$this->id]) && $cascade['protected'][$this->id]); } /** -- cgit v1.2.3 From bcdcd3d147fd8bcc680f24de88120c23d9533b50 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 5 Jan 2014 20:39:25 +0100 Subject: do not show updates for bundled plugins --- lib/plugins/extension/helper/extension.php | 1 + lib/plugins/extension/lang/en/lang.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index e3cb8a410..be29f95d8 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -145,6 +145,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { */ public function updateAvailable() { if(!$this->isInstalled()) return false; + if($this->isBundled()) return false; $lastupdate = $this->getLastUpdate(); if ($lastupdate === false) return false; $installed = $this->getInstalledVersion(); diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 3b2d2f38d..593794ef2 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -45,7 +45,7 @@ $lang['repository'] = 'Repository:'; $lang['unknown'] = 'unknown'; $lang['installed_version'] = 'Installed version:'; $lang['install_date'] = 'Your last update:'; -$lang['available_version'] = 'Version:'; +$lang['available_version'] = 'Available version:'; $lang['compatible'] = 'Compatible with:'; $lang['depends'] = 'Depends on:'; $lang['similar'] = 'Similar to:'; -- cgit v1.2.3 From 5284857cb2f94bc347eb56c694d894283fc41703 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 5 Jan 2014 20:45:32 +0100 Subject: protect authplain and current auth plugin --- lib/plugins/extension/helper/extension.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index be29f95d8..2a7119189 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -102,11 +102,15 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { } /** - * If the extension is protected + * If the extension is protected against any modification (disable/uninstall) * * @return bool if the extension is protected */ public function isProtected() { + // never allow deinstalling the current auth plugin: + global $conf; + if ($this->id == $conf['authtype']) return true; + /** @var Doku_Plugin_Controller $plugin_controller */ global $plugin_controller; $cascade = $plugin_controller->getCascade(); -- cgit v1.2.3 From 13ae5e00de640e20e25bff36eb1b2585acf153d3 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 5 Jan 2014 20:45:52 +0100 Subject: typo fix --- lib/plugins/extension/lang/en/intro_templates.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/en/intro_templates.txt b/lib/plugins/extension/lang/en/intro_templates.txt index 8bc04631d..012a74995 100644 --- a/lib/plugins/extension/lang/en/intro_templates.txt +++ b/lib/plugins/extension/lang/en/intro_templates.txt @@ -1 +1 @@ -These are the templates currently installed in your DokuWiki. You can select template to be used in the [[?do=admin&page=config|Configuration Manager]]. +These are the templates currently installed in your DokuWiki. You can select the template to be used in the [[?do=admin&page=config|Configuration Manager]]. -- cgit v1.2.3 From 9672d9f3bf51a5b383078874035796c6ac776eb1 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 5 Jan 2014 20:58:48 +0100 Subject: removed the old plugin manager --- lib/plugins/extension/helper/extension.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 2a7119189..9cf4848ad 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -96,7 +96,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { return in_array($this->base, array( 'authad', 'authldap', 'authmysql', 'authpgsql', 'authplain', 'acl', 'info', 'extension', - 'revert', 'popularity', 'config', 'plugin', 'safefnrecode', 'testing', 'template:dokuwiki' + 'revert', 'popularity', 'config', 'safefnrecode', 'testing', 'template:dokuwiki' ) ); } -- cgit v1.2.3 From 4c005e3f9adeb9180a879cc38518d1cff63e9261 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 5 Jan 2014 21:02:00 +0100 Subject: fixed strict standard error and added some docblock --- lib/plugins/extension/action.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/action.php b/lib/plugins/extension/action.php index b35c1cb13..0d6e7d996 100644 --- a/lib/plugins/extension/action.php +++ b/lib/plugins/extension/action.php @@ -16,12 +16,18 @@ class action_plugin_extension extends DokuWiki_Action_Plugin { * @param Doku_Event_Handler $controller DokuWiki's event controller object * @return void */ - public function register(Doku_Event_Handler &$controller) { + public function register(Doku_Event_Handler $controller) { $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'info'); } + /** + * Create the detail info for a single plugin + * + * @param Doku_Event $event + * @param $param + */ public function info(Doku_Event &$event, $param){ global $INPUT; if($event->data != 'plugin_extension') return; -- cgit v1.2.3 From a4667104ff9b4131c1aceaea022e65d0976a15d6 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 5 Jan 2014 21:22:31 +0100 Subject: added git warning --- lib/plugins/extension/helper/extension.php | 10 ++++++++++ lib/plugins/extension/helper/list.php | 4 ++++ lib/plugins/extension/lang/en/lang.php | 4 +++- 3 files changed, 17 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 9cf4848ad..d200d5ab0 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -86,6 +86,16 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { return is_dir($this->getInstallDir()); } + /** + * If the extension is under git control + * + * @return bool + */ + public function isGitControlled() { + if(!$this->isInstalled()) return false; + return is_dir($this->getInstallDir().'/.git'); + } + /** * If the extension is bundled * diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index e33dbfa04..901a4e8fa 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -476,6 +476,10 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { } } + if ($extension->isGitControlled()){ + $errors .= '

    '.$this->getLang('git').'

    '; + } + }else{ if (($canmod = $extension->canModify()) === true) { if ($extension->getDownloadURL()) { diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 593794ef2..c1e73d023 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -80,4 +80,6 @@ $lang['error_copy'] = 'There was a file copy error while attem $lang['noperms'] = 'Extension directory is not writable'; $lang['notplperms'] = 'Template directory is not writable'; -$lang['nopluginperms'] = 'Plugin directory is not writable'; \ No newline at end of file +$lang['nopluginperms'] = 'Plugin directory is not writable'; + +$lang['git'] = 'This extension was installed via git, you may not want to update it here.'; \ No newline at end of file -- cgit v1.2.3 From 47559c79fedce97add92eb193fb379b8795fc612 Mon Sep 17 00:00:00 2001 From: Anika Henke Date: Sun, 5 Jan 2014 20:22:40 +0000 Subject: fixed and improved some HTML in extension manager --- lib/plugins/extension/helper/list.php | 47 +++++++++++++++++----------------- lib/plugins/extension/lang/en/lang.php | 3 ++- lib/plugins/extension/style.less | 10 +++----- 3 files changed, 29 insertions(+), 31 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 901a4e8fa..f387a6de6 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -56,7 +56,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { * @param int $level The level of the header */ function add_header($id, $header, $level = 2) { - $this->form .=''.hsc($header).''; + $this->form .=''.hsc($header).''.DOKU_LF; } /** @@ -65,7 +65,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { * @param string $data The content */ function add_p($data) { - $this->form .= '

    '.hsc($data).'

    '; + $this->form .= '

    '.hsc($data).'

    '.DOKU_LF; } /** @@ -77,7 +77,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { foreach ($array as $key => $value) { $this->form .= ''; } - $this->form .= ''; + $this->form .= ''.DOKU_LF; } /** @@ -85,7 +85,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { */ function end_form() { $this->form .= ''; - $this->form .= ''; + $this->form .= ''.DOKU_LF; } /** @@ -110,7 +110,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { * @param string $html The content */ private function populate_column($class, $html) { - $this->form .= '
    '.$html.'
    '; + $this->form .= '
    '.$html.'
    '.DOKU_LF; } /** @@ -164,13 +164,13 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $mailid = $extension->getEmailID(); if($mailid){ $url = $this->gui->tabURL('search', array('q' => 'authorid:'.$mailid)); - return ' '.hsc($extension->getAuthor()).''; + return ' '.hsc($extension->getAuthor()).''; }else{ return ''.hsc($extension->getAuthor()).''; } } - return "".$this->getLang('unknown_author').""; + return "".$this->getLang('unknown_author')."".DOKU_LF; } /** @@ -181,16 +181,17 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { */ function make_screenshot(helper_plugin_extension_extension $extension) { if($extension->getScreenshotURL()) { - $img = ''. - ''.hsc($extension->getDisplayName()).''. + $title = sprintf($this->getLang('screenshot'), hsc($extension->getDisplayName())); + $img = ''. + ''.$title.''. ''; } elseif($extension->isTemplate()) { - $img = 'template'; + $img = ''; } else { - $img = 'plugin'; + $img = ''; } - return '
    '.$img.'
    '; + return '
    '.$img.'
    '.DOKU_LF; } /** @@ -204,21 +205,21 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return = '
    '; $return .= '

    '; $return .= sprintf($this->getLang('extensionby'), hsc($extension->getDisplayName()), $this->make_author($extension)); - $return .= '

    '; + $return .= ''.DOKU_LF; $return .= $this->make_screenshot($extension); $popularity = $extension->getPopularity(); if ($popularity !== false && !$extension->isBundled()) { - $popularityText = sprintf($this->getLang('popularity'), $popularity); - $return .= '
    '; + $popularityText = sprintf($this->getLang('popularity'), round($popularity*100, 2)); + $return .= '
    '.$popularityText.'
    '.DOKU_LF; } $return .= '

    '; if($extension->getDescription()) { $return .= hsc($extension->getDescription()).' '; } - $return .= '

    '; + $return .= '

    '.DOKU_LF; $return .= $this->make_linkbar($extension); @@ -229,13 +230,13 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $url = $this->gui->tabURL('', array('info' => $extension->getID())); $class = ''; } - $return .= ''.$this->getLang('btn_info').''; + $return .= ' '.$this->getLang('btn_info').''; if ($showinfo) { $return .= $this->make_info($extension); } $return .= $this->make_noticearea($extension); - $return .= '
    '; + $return .= ''.DOKU_LF; return $return; } @@ -246,7 +247,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { * @return string The HTML code */ function make_linkbar(helper_plugin_extension_extension $extension) { - $return = ''; + $return = ''.DOKU_LF; return $return; } @@ -308,7 +309,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { sprintf($this->getLang('url_change'), hsc($extension->getDownloadURL()), hsc($extension->getLastDownloadURL())). ''; } - return $return; + return $return.DOKU_LF; } /** @@ -424,7 +425,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= $this->make_linklist($extension->getConflicts()); $return .= ''; } - $return .= ''; + $return .= ''.DOKU_LF; return $return; } @@ -495,7 +496,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= ($extension->getLastUpdate() ? hsc($extension->getLastUpdate()) : $this->getLang('unknown')).''; } - return $return.' '.$errors; + return $return.' '.$errors.DOKU_LF; } /** diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index c1e73d023..fd00b5007 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -35,7 +35,8 @@ $lang['search_for'] = 'Search Extension:'; $lang['search'] = 'Search'; $lang['extensionby'] = '%s by %s'; -$lang['popularity'] = 'Popularity: %s'; +$lang['screenshot'] = 'Screenshot of %s'; +$lang['popularity'] = 'Popularity: %s%%'; $lang['homepage_link'] = 'Docs'; $lang['bugs_features'] = 'Bugs'; $lang['author_hint'] = 'Search extensions by this author'; diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less index 0d86f5419..a60aac8bf 100644 --- a/lib/plugins/extension/style.less +++ b/lib/plugins/extension/style.less @@ -161,15 +161,11 @@ div { background-color: @ini_border; height: 100%; - - span { - display: none;// @todo: hide accessibly - } } } // Docs, Bugs, Tags - span.linkbar { + div.linkbar { font-size: 85%; span.tags { @@ -180,7 +176,7 @@ // more info button a.info { - background: transparent url(images/up.png) no-repeat 0 0; + background: transparent url(images/down.png) no-repeat 0 0; border-width: 0; height: 13px; width: 13px; @@ -190,7 +186,7 @@ overflow: hidden; &.close { - background: transparent url(images/down.png) no-repeat 0 0; + background: transparent url(images/up.png) no-repeat 0 0; } } -- cgit v1.2.3 From 480a4d375c62fce58c46db400a5ec9617941c3bf Mon Sep 17 00:00:00 2001 From: Anika Henke Date: Sun, 5 Jan 2014 20:45:03 +0000 Subject: added basic mobile styles to extension manager (not great, but makes things at least readable) --- lib/plugins/extension/all.less | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 lib/plugins/extension/all.less (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/all.less b/lib/plugins/extension/all.less new file mode 100644 index 000000000..8b2533e2e --- /dev/null +++ b/lib/plugins/extension/all.less @@ -0,0 +1,23 @@ + +@media only screen and (max-width: 600px) { + +#extension__list .legend { + > div { + padding-left: 0; + } + + div.screenshot { + margin: 0 .5em .5em 0; + } + + h2 { + width: auto; + float: none; + } + + div.linkbar { + clear: left; + } +} + +} /* /@media */ -- cgit v1.2.3 From 77da6d6ca677e783f5e104226a179b5f09ab121d Mon Sep 17 00:00:00 2001 From: Anika Henke Date: Sun, 5 Jan 2014 22:25:41 +0000 Subject: added css and html changes for RTL scripts to extension manager --- lib/plugins/extension/all.less | 14 ++++++ lib/plugins/extension/helper/extension.php | 4 +- lib/plugins/extension/helper/list.php | 39 +++++++-------- lib/plugins/extension/lang/en/lang.php | 1 + lib/plugins/extension/style.less | 77 ++++++++++++++++++++++++++++-- 5 files changed, 111 insertions(+), 24 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/all.less b/lib/plugins/extension/all.less index 8b2533e2e..3d9688e14 100644 --- a/lib/plugins/extension/all.less +++ b/lib/plugins/extension/all.less @@ -20,4 +20,18 @@ } } +[dir=rtl] #extension__list .legend { + > div { + padding-right: 0; + } + + div.screenshot { + margin: 0 0 .5em .5em; + } + + div.linkbar { + clear: right; + } +} + } /* /@media */ diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index d200d5ab0..02c2cc8ad 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -829,7 +829,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { // download if(!$file = io_download($url, $tmp.'/', true, $file, 0)) { $this->dir_delete($tmp); - throw new Exception(sprintf($this->getLang('error_download'), hsc($url))); + throw new Exception(sprintf($this->getLang('error_download'), ''.hsc($url).'')); } return $tmp.'/'.$file; @@ -921,7 +921,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { 'action' => $action ); } else { - throw new Exception(sprintf($this->getLang('error_copy').DOKU_LF, $item['base'])); + throw new Exception(sprintf($this->getLang('error_copy').DOKU_LF, ''.$item['base'].'')); } } diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index f387a6de6..7a08655b7 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -164,10 +164,10 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $mailid = $extension->getEmailID(); if($mailid){ $url = $this->gui->tabURL('search', array('q' => 'authorid:'.$mailid)); - return ' '.hsc($extension->getAuthor()).''; + return ' '.hsc($extension->getAuthor()).''; }else{ - return ''.hsc($extension->getAuthor()).''; + return ''.hsc($extension->getAuthor()).''; } } return "".$this->getLang('unknown_author')."".DOKU_LF; @@ -204,7 +204,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { function make_legend(helper_plugin_extension_extension $extension, $showinfo = false) { $return = '
    '; $return .= '

    '; - $return .= sprintf($this->getLang('extensionby'), hsc($extension->getDisplayName()), $this->make_author($extension)); + $return .= sprintf($this->getLang('extensionby'), ''.hsc($extension->getDisplayName()).'', $this->make_author($extension)); $return .= '

    '.DOKU_LF; $return .= $this->make_screenshot($extension); @@ -215,11 +215,11 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= '
    '.$popularityText.'
    '.DOKU_LF; } - $return .= '

    '; if($extension->getDescription()) { + $return .= '

    '; $return .= hsc($extension->getDescription()).' '; + $return .= '

    '.DOKU_LF; } - $return .= '

    '.DOKU_LF; $return .= $this->make_linkbar($extension); @@ -255,6 +255,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { if($extension->getTags()){ $first = true; $return .= ''; + $return .= ''.$this->getLang('tags').' '; foreach ($extension->getTags() as $tag) { if(!$first){ $return .= ', '; @@ -262,7 +263,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $first = false; } $url = $this->gui->tabURL('search', array('q' => 'tag:'.$tag)); - $return .= ''.hsc($tag).''; + $return .= ''.hsc($tag).''; } $return .= ''; } @@ -281,22 +282,22 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $missing_dependencies = $extension->getMissingDependencies(); if(!empty($missing_dependencies)) { $return .= '
    '. - sprintf($this->getLang('missing_dependency'), implode(', ', /*array_map(array($this->helper, 'make_extensionsearchlink'),*/ $missing_dependencies)). + sprintf($this->getLang('missing_dependency'), ''.implode(', ', /*array_map(array($this->helper, 'make_extensionsearchlink'),*/ $missing_dependencies).''). '
    '; } if($extension->isInWrongFolder()) { $return .= '
    '. - sprintf($this->getLang('wrong_folder'), hsc($extension->getInstallName()), hsc($extension->getBase())). + sprintf($this->getLang('wrong_folder'), ''.hsc($extension->getInstallName()).'', ''.hsc($extension->getBase()).''). '
    '; } if(($securityissue = $extension->getSecurityIssue()) !== false) { $return .= '
    '. - sprintf($this->getLang('security_issue'), hsc($securityissue )). + sprintf($this->getLang('security_issue'), ''.hsc($securityissue).''). '
    '; } if(($securitywarning = $extension->getSecurityWarning()) !== false) { $return .= '
    '. - sprintf($this->getLang('security_warning'), hsc($securitywarning)). + sprintf($this->getLang('security_warning'), ''.hsc($securitywarning).''). '
    '; } if($extension->updateAvailable()) { @@ -306,7 +307,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { } if($extension->hasDownloadURLChanged()) { $return .= '
    '. - sprintf($this->getLang('url_change'), hsc($extension->getDownloadURL()), hsc($extension->getLastDownloadURL())). + sprintf($this->getLang('url_change'), ''.hsc($extension->getDownloadURL()).'', ''.hsc($extension->getLastDownloadURL()).''). '
    '; } return $return.DOKU_LF; @@ -354,14 +355,14 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { if (!$extension->isBundled()) { $return .= '
    '.$this->getLang('downloadurl').'
    '; - $return .= '
    '; + $return .= '
    '; $return .= ($extension->getDownloadURL() ? $this->shortlink($extension->getDownloadURL()) : $default); - $return .= '
    '; + $return .= ''; $return .= '
    '.$this->getLang('repository').'
    '; - $return .= '
    '; + $return .= '
    '; $return .= ($extension->getSourcerepoURL() ? $this->shortlink($extension->getSourcerepoURL()) : $default); - $return .= '
    '; + $return .= ''; } if ($extension->isInstalled()) { @@ -392,15 +393,15 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { } $return .= '
    '.$this->getLang('provides').'
    '; - $return .= '
    '; + $return .= '
    '; $return .= ($extension->getTypes() ? hsc(implode(', ', $extension->getTypes())) : $default); - $return .= '
    '; + $return .= ''; if($extension->getCompatibleVersions()) { $return .= '
    '.$this->getLang('compatible').'
    '; $return .= '
    '; foreach ($extension->getCompatibleVersions() as $date => $version) { - $return .= $version['label'].' ('.$date.'), '; + $return .= ''.$version['label'].' ('.$date.'), '; } $return = rtrim($return, ', '); $return .= '
    '; @@ -438,7 +439,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { function make_linklist($ext) { $return = ''; foreach ($ext as $link) { - $return .= ''.hsc($link).', '; + $return .= ''.hsc($link).', '; } return rtrim($return, ', '); } diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index fd00b5007..83ff19f00 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -39,6 +39,7 @@ $lang['screenshot'] = 'Screenshot of %s'; $lang['popularity'] = 'Popularity: %s%%'; $lang['homepage_link'] = 'Docs'; $lang['bugs_features'] = 'Bugs'; +$lang['tags'] = 'Tags:'; $lang['author_hint'] = 'Search extensions by this author'; $lang['installed'] = 'Installed:'; $lang['downloadurl'] = 'Download URL:'; diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less index a60aac8bf..d20689099 100644 --- a/lib/plugins/extension/style.less +++ b/lib/plugins/extension/style.less @@ -52,7 +52,6 @@ background-color: @ini_background_alt; margin: 0 0 10px 0; padding: 10px 10px 8px; - text-align: left; overflow: hidden; } @@ -120,8 +119,8 @@ min-height: 24px; min-width: 24px; position: absolute; - left: 0px; - top: 0px; + left: 0; + top: 0; } } @@ -220,6 +219,64 @@ } } +[dir=rtl] #extension__list .legend { + float: right; + + > div { + padding: 0 132px 0 .5em; + border-left: 1px solid @ini_background_alt; + border-right-width: 0; + } + + div.screenshot { + margin-left: 0; + margin-right: -132px; + float: right; + + span { + left: auto; + right: 0; + } + } + + h2 { + float: left; + } + + div.popularity { + right: auto; + left: .5em; + } + + div.linkbar span.tags, + dl.details dd a.donate { + padding-left: 0; + padding-right: 18px; + background-position: top right; + } + + a.info { + float: left; + } + + dl.details { + dt { + clear: right; + float: right; + text-align: left; + padding-left: 5px; + padding-right: 0; + } + + dd { + margin-left: 0; + margin-right: 25%; + padding-left: 0; + padding-right: 5px; + } + } +} + /* * Enabled/Disabled overrides */ @@ -266,6 +323,20 @@ } } +[dir=rtl] #extension__manager .actions { + float: left; + text-align: left; + + p.permerror { + margin-left: 0; + margin-right: 0.4em; + text-align: right; + padding-left: 0; + padding-right: 19px; + background-position: center right; + } +} + /** * Search form */ -- cgit v1.2.3 From 06d8000aa9e10b65a946d58d1cffe41aff987d2b Mon Sep 17 00:00:00 2001 From: Anika Henke Date: Sun, 5 Jan 2014 23:11:23 +0000 Subject: added status to info list of extension plugin --- lib/plugins/extension/helper/list.php | 39 ++++++++++++++++++++++++++++------ lib/plugins/extension/lang/en/lang.php | 13 ++++++++++-- 2 files changed, 43 insertions(+), 9 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 7a08655b7..ba3681ce4 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -252,14 +252,13 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { if ($extension->getBugtrackerURL()) { $return .= ' '.$this->getLang('bugs_features').' '; } - if($extension->getTags()){ + if ($extension->getTags()){ $first = true; - $return .= ''; - $return .= ''.$this->getLang('tags').' '; + $return .= ''.$this->getLang('tags').' '; foreach ($extension->getTags() as $tag) { - if(!$first){ + if (!$first){ $return .= ', '; - }else{ + } else { $first = false; } $url = $this->gui->tabURL('search', array('q' => 'tag:'.$tag)); @@ -345,6 +344,9 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $default = $this->getLang('unknown'); $return = '
    '; + $return .= '
    '.$this->getLang('status').'
    '; + $return .= '
    '.$this->make_status($extension).'
    '; + if ($extension->getDonationURL()) { $return .= '
    '.$this->getLang('donate').'
    '; $return .= '
    '; @@ -352,7 +354,6 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= '
    '; } - if (!$extension->isBundled()) { $return .= '
    '.$this->getLang('downloadurl').'
    '; $return .= '
    '; @@ -513,7 +514,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { switch ($action) { case 'install': case 'reinstall': - $title = 'title="'.$extension->getDownloadURL().'"'; + $title = 'title="'.hsc($extension->getDownloadURL()).'"'; break; } @@ -522,4 +523,28 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { return ''; } + + /** + * Plugin/template status + * + * @param helper_plugin_extension_extension $extension The extension + * @return string The description of all relevant statusses + */ + function make_status(helper_plugin_extension_extension $extension) { + $return = ''; + if ($extension->isInstalled()) { + $return .= $this->getLang('status_installed').' '; + if ($extension->isProtected()) { + $return .= $this->getLang('status_protected').' '; + } else { + $return .= $extension->isEnabled() ? $this->getLang('status_enabled').' ' : $this->getLang('status_disabled').' '; + } + } else { + $return .= $this->getLang('status_not_installed').' '; + } + $return .= !$extension->canModify() ? $this->getLang('status_unmodifiable').' ' : ''; + $return .= $extension->isTemplate() ? $this->getLang('status_template') : $this->getLang('status_plugin'); + return $return; + } + } diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 83ff19f00..06c83a708 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -55,6 +55,16 @@ $lang['conflicts'] = 'Conflicts with:'; $lang['donate'] = 'Like this?'; $lang['donate_action'] = 'Buy the author a coffee!'; $lang['repo_retry'] = 'Retry'; +$lang['provides'] = 'Provides:'; +$lang['status'] = 'Status:'; +$lang['status_installed'] = 'installed'; +$lang['status_not_installed'] = 'not installed'; +$lang['status_protected'] = 'protected'; +$lang['status_enabled'] = 'enabled'; +$lang['status_disabled'] = 'disabled'; +$lang['status_unmodifiable'] = 'unmodifiable'; +$lang['status_plugin'] = 'plugin'; +$lang['status_template'] = 'template'; $lang['msg_enabled'] = 'Plugin %s enabled'; $lang['msg_disabled'] = 'Plugin %s disabled'; @@ -65,7 +75,6 @@ $lang['msg_plugin_install_success'] = 'Plugin %s installed successfully'; $lang['msg_plugin_update_success'] = 'Plugin %s updated successfully'; $lang['msg_upload_failed'] = 'Uploading the file failed'; -$lang['provides'] = 'Provides:'; $lang['missing_dependency'] = 'Missing or disabled dependency: %s'; $lang['security_issue'] = 'Security Issue: %s'; $lang['security_warning'] = 'Security Warning: %s'; @@ -84,4 +93,4 @@ $lang['noperms'] = 'Extension directory is not writable'; $lang['notplperms'] = 'Template directory is not writable'; $lang['nopluginperms'] = 'Plugin directory is not writable'; -$lang['git'] = 'This extension was installed via git, you may not want to update it here.'; \ No newline at end of file +$lang['git'] = 'This extension was installed via git, you may not want to update it here.'; -- cgit v1.2.3 From 0826f6cbd906e92fd040dfd3377f1b2a9db13873 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Mon, 6 Jan 2014 21:06:09 +0100 Subject: now use new core funtion to recursively delete --- lib/plugins/extension/helper/extension.php | 32 ++++-------------------------- 1 file changed, 4 insertions(+), 28 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 02c2cc8ad..f91d237f7 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -33,7 +33,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { */ public function __destruct() { foreach($this->temporary as $dir){ - $this->dir_delete($dir); + io_rmdir($dir, true); } } @@ -640,7 +640,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { */ public function uninstall() { $this->purgeCache(); - return $this->dir_delete($this->getInstallDir()); + return io_rmdir($this->getInstallDir(), true); } /** @@ -768,30 +768,6 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { io_saveFile($managerpath, $data); } - /** - * delete, with recursive sub-directory support - * - * @param string $path The path that shall be deleted - * @return bool If the directory has been successfully deleted - */ - protected function dir_delete($path) { - if(!is_string($path) || $path == "") return false; - - if(is_dir($path) && !is_link($path)) { - if(!$dh = @opendir($path)) return false; - - while ($f = readdir($dh)) { - if($f == '..' || $f == '.') continue; - $this->dir_delete("$path/$f"); - } - - closedir($dh); - return @rmdir($path); - } else { - return @unlink($path); - } - } - /** * Returns a temporary directory * @@ -828,7 +804,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { // download if(!$file = io_download($url, $tmp.'/', true, $file, 0)) { - $this->dir_delete($tmp); + io_rmdir($tmp, true); throw new Exception(sprintf($this->getLang('error_download'), ''.hsc($url).'')); } @@ -926,7 +902,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { } // cleanup - if($tmp) $this->dir_delete($tmp); + if($tmp) io_rmdir($tmp, true); return $installed_extensions; } -- cgit v1.2.3 From da5f0eee25838368de375eb14d345b70ae3cbc7a Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Mon, 6 Jan 2014 21:25:59 +0100 Subject: check for admin in AJAX backend --- lib/plugins/extension/action.php | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/action.php b/lib/plugins/extension/action.php index 0d6e7d996..9dd1648ff 100644 --- a/lib/plugins/extension/action.php +++ b/lib/plugins/extension/action.php @@ -29,7 +29,15 @@ class action_plugin_extension extends DokuWiki_Action_Plugin { * @param $param */ public function info(Doku_Event &$event, $param){ + global $USERINFO; global $INPUT; + + if(empty($_SERVER['REMOTE_USER']) || !auth_isadmin($_SERVER['REMOTE_USER'], $USERINFO['grps'])){ + http_status(403); + echo 'Forbidden'; + exit; + } + if($event->data != 'plugin_extension') return; $event->preventDefault(); $event->stopPropagation(); -- cgit v1.2.3 From 189c9cabe204e2493f7d44f66361ad167f7e1c02 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Mon, 6 Jan 2014 21:29:52 +0100 Subject: purge cache only once on install this is not a extension specific cache but a global one. no need to purge for each installed extension --- lib/plugins/extension/helper/extension.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index f91d237f7..3f4906463 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -575,12 +575,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { try { $installed = $this->installArchive("$tmp/upload.archive", true, $basename); - - // purge caches - foreach($installed as $ext => $info){ - $this->setExtension($ext); - $this->purgeCache(); - } + // purge cache + $this->purgeCache(); }catch (Exception $e){ throw $e; } -- cgit v1.2.3 From cf37525f0abe7425193f3ec2bf426cf834a949a3 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Mon, 6 Jan 2014 21:31:14 +0100 Subject: typo fix --- lib/plugins/extension/helper/extension.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 3f4906463..1676e3962 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -632,7 +632,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { /** * Uninstall the extension * - * @return bool If the plugin was sucessfully installed + * @return bool If the plugin was sucessfully uninstalled */ public function uninstall() { $this->purgeCache(); -- cgit v1.2.3 From ec8911d4970372f2a513cf4f1fe78c46c29ed67c Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Wed, 8 Jan 2014 20:18:04 +0100 Subject: remove unneeded try/catch blocks they were just catching and rethrowing --- lib/plugins/extension/helper/extension.php | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 1676e3962..3ff2ebcd8 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -613,19 +613,15 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return array The list of installed extensions */ public function installOrUpdate() { - try { - $path = $this->download($this->getDownloadURL()); - $installed = $this->installArchive($path, $this->isInstalled(), $this->getBase()); + $path = $this->download($this->getDownloadURL()); + $installed = $this->installArchive($path, $this->isInstalled(), $this->getBase()); - // refresh extension information - if (!isset($installed[$this->getID()])) { - throw new Exception('Error, the requested extension hasn\'t been installed or updated'); - } - $this->setExtension($this->getID()); - $this->purgeCache(); - }catch (Exception $e){ - throw $e; + // refresh extension information + if (!isset($installed[$this->getID()])) { + throw new Exception('Error, the requested extension hasn\'t been installed or updated'); } + $this->setExtension($this->getID()); + $this->purgeCache(); return $installed; } @@ -828,11 +824,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { } // decompress - try{ - $this->decompress($file, "$tmp/".$base); - } catch (Exception $e) { - throw $e; - } + $this->decompress($file, "$tmp/".$base); // search $tmp/$base for the folder(s) that has been created // move the folder(s) to lib/.. -- cgit v1.2.3 From 4bad83d828217dc64292223b268c6a3674984070 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Wed, 8 Jan 2014 20:18:55 +0100 Subject: use DOKU_LF PHP_EOL is platform dependent, so you get in trouble while migrating between platforms. --- lib/plugins/extension/helper/extension.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 3ff2ebcd8..c13aa983d 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -737,7 +737,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { $file = @file($managerpath); if(!empty($file)) { foreach($file as $line) { - list($key, $value) = explode('=', trim($line, PHP_EOL), 2); + list($key, $value) = explode('=', trim($line, DOKU_LF), 2); $key = trim($key); $value = trim($value); // backwards compatible with old plugin manager -- cgit v1.2.3 From bc1b7a8a0fdd1812e352cab5e2362bd5770d5b3b Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Wed, 8 Jan 2014 20:28:17 +0100 Subject: better filename parsing The filename found in the URL will be used for old plugins missing a base entry in their plugin.info.txt and lacking a subdirectory inside the archive as well. This patch makes sure possible query strings aren't included in the filename. Note: io_download() will also try to get a filename from any content-disposition header. If no filename can be found we simply use an md5 sum of the URL and hope the plugin will contain it's own hint for naming. --- lib/plugins/extension/helper/extension.php | 12 +++++++++--- lib/plugins/extension/lang/en/lang.php | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index c13aa983d..7958cd2da 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -783,11 +783,17 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { */ public function download($url) { // check the url - $matches = array(); - if(!preg_match('/[^\/]*$/', $url, $matches) || !$matches[0]) { + if(!preg_match('/https?:\/\//i', $url)){ throw new Exception($this->getLang('error_badurl')); } - $file = $matches[0]; + + // try to get the file from the path (used as plugin name fallback) + $file = parse_url($url, PHP_URL_PATH); + if(is_null($file)){ + $file = md5($url); + }else{ + $file = utf8_basename($file); + } // create tmp directory for download if(!($tmp = $this->mkTmpDir())) { diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 06c83a708..b11490c0c 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -82,7 +82,7 @@ $lang['update_available'] = 'Update: New version %s $lang['wrong_folder'] = 'Plugin installed incorrectly: Rename plugin directory "%s" to "%s".'; $lang['url_change'] = 'URL changed: Download URL has changed since last download. Check if the new URL is valid before updating the extension.
    New: %s
    Old: %s'; -$lang['error_badurl'] = 'URL ends with slash - unable to determine file name from the url'; +$lang['error_badurl'] = 'URLs should start with http or https'; $lang['error_dircreate'] = 'Unable to create temporary folder to receive download'; $lang['error_download'] = 'Unable to download the file: %s'; $lang['error_decompress'] = 'Unable to decompress the downloaded file. This maybe as a result of a bad download, in which case you should try again; or the compression format may be unknown, in which case you will need to download and install manually.'; -- cgit v1.2.3 From c837868af892ada4c25333bec46583a0d42a240d Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Wed, 8 Jan 2014 20:29:17 +0100 Subject: added missing localization --- lib/plugins/extension/helper/gui.php | 6 +++--- lib/plugins/extension/lang/en/lang.php | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index 76651515c..953d50fa6 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -124,9 +124,9 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { echo '
    '; $form = new Doku_Form(array('action' => $this->tabURL('', array(), '&'), 'enctype' => 'multipart/form-data', 'class' => 'install')); - $form->addElement(form_makeTextField('installurl', '', 'Install from URL:', '', 'block')); - $form->addElement(form_makeFileField('installfile', 'Upload Extension:', '', 'block')); - $form->addElement(form_makeButton('submit', '', 'Install')); + $form->addElement(form_makeTextField('installurl', '', $this->getLang('install_url'), '', 'block')); + $form->addElement(form_makeFileField('installfile', $this->getLang('install_upload'), '', 'block')); + $form->addElement(form_makeButton('submit', '', $this->getLang('btn_install'))); $form->printForm(); } diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index b11490c0c..c0550c951 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -92,5 +92,7 @@ $lang['error_copy'] = 'There was a file copy error while attem $lang['noperms'] = 'Extension directory is not writable'; $lang['notplperms'] = 'Template directory is not writable'; $lang['nopluginperms'] = 'Plugin directory is not writable'; - $lang['git'] = 'This extension was installed via git, you may not want to update it here.'; + +$lang['install_url'] = 'Install from URL:'; +$lang['install_upload'] = 'Upload Extension:'; \ No newline at end of file -- cgit v1.2.3 From b1e758012b3d801d5ab266e53e830fb7091508a2 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Wed, 8 Jan 2014 20:38:23 +0100 Subject: show a message when search returns no results --- lib/plugins/extension/helper/gui.php | 10 +++++++--- lib/plugins/extension/helper/list.php | 8 ++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php index 953d50fa6..3a0f0c589 100644 --- a/lib/plugins/extension/helper/gui.php +++ b/lib/plugins/extension/helper/gui.php @@ -106,9 +106,13 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin { /* @var helper_plugin_extension_list $list */ $list = $this->loadHelper('extension_list'); $list->start_form(); - foreach($result as $name) { - $extension->setExtension($name); - $list->add_row($extension, $extension->getID() == $this->infoFor); + if($result){ + foreach($result as $name) { + $extension->setExtension($name); + $list->add_row($extension, $extension->getID() == $this->infoFor); + } + } else { + $list->nothing_found(); } $list->end_form(); $list->render(); diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index ba3681ce4..8cc303fbe 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -88,6 +88,14 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $this->form .= ''.DOKU_LF; } + /** + * Show message when no results are found + */ + function nothing_found() { + global $lang; + $this->form .= '
  • '.$lang['nothingfound'].'
  • '; + } + /** * Print the form */ -- cgit v1.2.3 From 30b90257784ae25a5e30c968b4c9391bb47ff1a1 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Tue, 14 Jan 2014 08:21:22 +0100 Subject: added plugins group to test --- lib/plugins/extension/_test/extension.test.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/_test/extension.test.php b/lib/plugins/extension/_test/extension.test.php index 97726d212..453b95e79 100644 --- a/lib/plugins/extension/_test/extension.test.php +++ b/lib/plugins/extension/_test/extension.test.php @@ -14,6 +14,7 @@ class mock_helper_plugin_extension_extension extends helper_plugin_extension_ext /** * @group plugin_extension + * @group plugins */ class helper_plugin_extension_extension_test extends DokuWikiTest { -- cgit v1.2.3 From b15cd32d2f75fbf943eda38a7b90f05d2806dae5 Mon Sep 17 00:00:00 2001 From: jgpcx Date: Tue, 28 Jan 2014 17:02:25 +0100 Subject: Update action.php fix bug that only allows admins any AJAX calls --- lib/plugins/extension/action.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/action.php b/lib/plugins/extension/action.php index 9dd1648ff..3f2ccaace 100644 --- a/lib/plugins/extension/action.php +++ b/lib/plugins/extension/action.php @@ -32,16 +32,17 @@ class action_plugin_extension extends DokuWiki_Action_Plugin { global $USERINFO; global $INPUT; + + if($event->data != 'plugin_extension') return; + $event->preventDefault(); + $event->stopPropagation(); + if(empty($_SERVER['REMOTE_USER']) || !auth_isadmin($_SERVER['REMOTE_USER'], $USERINFO['grps'])){ http_status(403); echo 'Forbidden'; exit; } - if($event->data != 'plugin_extension') return; - $event->preventDefault(); - $event->stopPropagation(); - header('Content-Type: text/html; charset=utf-8'); $ext = $INPUT->str('ext'); -- cgit v1.2.3 From 73d93f2bf6cd03cd82558c91faf42dddbdef1d32 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Thu, 30 Jan 2014 23:58:43 +0100 Subject: extension manager: some minor tweaks in the info screen --- lib/plugins/extension/helper/list.php | 21 ++++++++++++--------- lib/plugins/extension/lang/en/lang.php | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 8cc303fbe..01a5c516a 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -406,7 +406,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= ($extension->getTypes() ? hsc(implode(', ', $extension->getTypes())) : $default); $return .= ''; - if($extension->getCompatibleVersions()) { + if(!$extension->isBundled() && $extension->getCompatibleVersions()) { $return .= '
    '.$this->getLang('compatible').'
    '; $return .= '
    '; foreach ($extension->getCompatibleVersions() as $date => $version) { @@ -539,20 +539,23 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { * @return string The description of all relevant statusses */ function make_status(helper_plugin_extension_extension $extension) { - $return = ''; + $status = array(); + + if ($extension->isInstalled()) { - $return .= $this->getLang('status_installed').' '; + $status[] = $this->getLang('status_installed'); if ($extension->isProtected()) { - $return .= $this->getLang('status_protected').' '; + $status[] = $this->getLang('status_protected'); } else { - $return .= $extension->isEnabled() ? $this->getLang('status_enabled').' ' : $this->getLang('status_disabled').' '; + $status[] = $extension->isEnabled() ? $this->getLang('status_enabled') : $this->getLang('status_disabled'); } } else { - $return .= $this->getLang('status_not_installed').' '; + $status[] = $this->getLang('status_not_installed'); } - $return .= !$extension->canModify() ? $this->getLang('status_unmodifiable').' ' : ''; - $return .= $extension->isTemplate() ? $this->getLang('status_template') : $this->getLang('status_plugin'); - return $return; + if(!$extension->canModify()) $status[] = $this->getLang('status_unmodifiable'); + if($extension->isBundled()) $status[] = $this->getLang('status_bundled'); + $status[] = $extension->isTemplate() ? $this->getLang('status_template') : $this->getLang('status_plugin'); + return join(', ', $status); } } diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index c0550c951..5224f694a 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -65,6 +65,7 @@ $lang['status_disabled'] = 'disabled'; $lang['status_unmodifiable'] = 'unmodifiable'; $lang['status_plugin'] = 'plugin'; $lang['status_template'] = 'template'; +$lang['status_bundled'] = 'bundled'; $lang['msg_enabled'] = 'Plugin %s enabled'; $lang['msg_disabled'] = 'Plugin %s disabled'; -- cgit v1.2.3 From fd51614b39b1320c5723e8195f0bf69c25baaeb7 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 15 Feb 2014 10:10:38 +0100 Subject: enable/disable extensions via AJAX FS#2927 --- lib/plugins/extension/action.php | 39 +++++++++++++++++++++++-------- lib/plugins/extension/script.js | 50 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 75 insertions(+), 14 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/action.php b/lib/plugins/extension/action.php index 3f2ccaace..9e48f134b 100644 --- a/lib/plugins/extension/action.php +++ b/lib/plugins/extension/action.php @@ -28,25 +28,23 @@ class action_plugin_extension extends DokuWiki_Action_Plugin { * @param Doku_Event $event * @param $param */ - public function info(Doku_Event &$event, $param){ + public function info(Doku_Event &$event, $param) { global $USERINFO; global $INPUT; - if($event->data != 'plugin_extension') return; $event->preventDefault(); $event->stopPropagation(); - if(empty($_SERVER['REMOTE_USER']) || !auth_isadmin($_SERVER['REMOTE_USER'], $USERINFO['grps'])){ + if(empty($_SERVER['REMOTE_USER']) || !auth_isadmin($_SERVER['REMOTE_USER'], $USERINFO['grps'])) { http_status(403); echo 'Forbidden'; exit; } - header('Content-Type: text/html; charset=utf-8'); - $ext = $INPUT->str('ext'); if(!$ext) { + http_status(400); echo 'no extension given'; return; } @@ -55,11 +53,32 @@ class action_plugin_extension extends DokuWiki_Action_Plugin { $extension = plugin_load('helper', 'extension_extension'); $extension->setExtension($ext); - /** @var helper_plugin_extension_list $list */ - $list = plugin_load('helper', 'extension_list'); - - - echo $list->make_info($extension); + $act = $INPUT->str('act'); + switch($act) { + case 'enable': + case 'disable': + $json = new JSON(); + $extension->$act(); //enables/disables + + $reverse = ($act == 'disable') ? 'enable' : 'disable'; + + $return = array( + 'state' => $act.'d', // isn't English wonderful? :-) + 'reverse' => $reverse, + 'label' => $extension->getLang('btn_'.$reverse) + ); + + header('Content-Type: application/json'); + echo $json->encode($return); + break; + + case 'info': + default: + /** @var helper_plugin_extension_list $list */ + $list = plugin_load('helper', 'extension_list'); + header('Content-Type: text/html; charset=utf-8'); + echo $list->make_info($extension); + } } } diff --git a/lib/plugins/extension/script.js b/lib/plugins/extension/script.js index bd3c97758..fab88162d 100644 --- a/lib/plugins/extension/script.js +++ b/lib/plugins/extension/script.js @@ -1,9 +1,11 @@ jQuery(function(){ + var $extmgr = jQuery('#extension__manager'); + /** * Confirm uninstalling */ - jQuery('#extension__manager input.uninstall').click(function(e){ + $extmgr.find('input.uninstall').click(function(e){ if(!window.confirm(LANG.plugins.extension.reallydel)){ e.preventDefault(); return false; @@ -15,7 +17,7 @@ jQuery(function(){ * very simple lightbox * @link http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/super-simple-lightbox-with-css-and-jquery/ */ - jQuery('#extension__manager a.extension_screenshot').click(function(e) { + $extmgr.find('a.extension_screenshot').click(function(e) { e.preventDefault(); //Get clicked link href @@ -41,10 +43,49 @@ jQuery(function(){ return false; }); + /** + * Enable/Disable extension via AJAX + */ + $extmgr.find('input.disable, input.enable').click(function (e) { + e.preventDefault(); + var $btn = jQuery(this); + + // get current state + var extension = $btn.attr('name').split('[')[2]; + extension = extension.substr(0, extension.length - 1); + var act = ($btn.hasClass('disable')) ? 'disable' : 'enable'; + + // disable while we wait + $btn.attr('disabled', 'disabled'); + $btn.css('cursor', 'wait'); + + // execute + jQuery.get( + DOKU_BASE + 'lib/exe/ajax.php', + { + call: 'plugin_extension', + ext: extension, + act: act + }, + function (data) { + $btn.css('cursor', '') + .removeAttr('disabled') + .removeClass('disable') + .removeClass('enable') + .val(data.label) + .addClass(data.reverse) + .parents('li') + .removeClass('disabled') + .removeClass('enabled') + .addClass(data.state); + } + ); + }); + /** * AJAX detail infos */ - jQuery('#extension__manager a.info').click(function(e){ + $extmgr.find('a.info').click(function(e){ e.preventDefault(); var $link = jQuery(this); @@ -60,7 +101,8 @@ jQuery(function(){ DOKU_BASE + 'lib/exe/ajax.php', { call: 'plugin_extension', - ext: $link.data('extid') + ext: $link.data('extid'), + act: 'info' }, function(data){ $link.parent().append(data); -- cgit v1.2.3 From 0ebbba20d4c1f73eda768945dad1697d44d1a354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Schplurtz=20le=20D=C3=A9boulonn=C3=A9?= Date: Sat, 22 Feb 2014 12:53:39 +0100 Subject: translation update --- lib/plugins/extension/lang/fr/intro_install.txt | 1 + lib/plugins/extension/lang/fr/intro_plugins.txt | 1 + lib/plugins/extension/lang/fr/intro_search.txt | 1 + lib/plugins/extension/lang/fr/intro_templates.txt | 1 + lib/plugins/extension/lang/fr/lang.php | 87 +++++++++++++++++++++++ 5 files changed, 91 insertions(+) create mode 100644 lib/plugins/extension/lang/fr/intro_install.txt create mode 100644 lib/plugins/extension/lang/fr/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/fr/intro_search.txt create mode 100644 lib/plugins/extension/lang/fr/intro_templates.txt create mode 100644 lib/plugins/extension/lang/fr/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/fr/intro_install.txt b/lib/plugins/extension/lang/fr/intro_install.txt new file mode 100644 index 000000000..6f68a2606 --- /dev/null +++ b/lib/plugins/extension/lang/fr/intro_install.txt @@ -0,0 +1 @@ +Ici, vous pouvez installer des extensions, greffons et modèles. Soit en les téléversant, soit en indiquant un URL de téléchargement. \ No newline at end of file diff --git a/lib/plugins/extension/lang/fr/intro_plugins.txt b/lib/plugins/extension/lang/fr/intro_plugins.txt new file mode 100644 index 000000000..a40b863d2 --- /dev/null +++ b/lib/plugins/extension/lang/fr/intro_plugins.txt @@ -0,0 +1 @@ +Voilà la liste des extensions actuellement installées. À partir d'ici, vous pouvez les activer, les désactiver ou même les désinstaller complètement. Cette page affiche également les mises à jour. Assurez vous de lire la documentation avant de faire la mise à jour. \ No newline at end of file diff --git a/lib/plugins/extension/lang/fr/intro_search.txt b/lib/plugins/extension/lang/fr/intro_search.txt new file mode 100644 index 000000000..418e35972 --- /dev/null +++ b/lib/plugins/extension/lang/fr/intro_search.txt @@ -0,0 +1 @@ +Cet onglet vous donne accès à toutes les extensions de tierces parties. Restez conscients qu'installer du code de tierce partie peut poser un problème de **sécurité**. Vous voudrez peut-être au préalable lire l'article sur la [[doku>fr:security##securite_des_plugins|sécurité des plugins]]. \ No newline at end of file diff --git a/lib/plugins/extension/lang/fr/intro_templates.txt b/lib/plugins/extension/lang/fr/intro_templates.txt new file mode 100644 index 000000000..fefdb5538 --- /dev/null +++ b/lib/plugins/extension/lang/fr/intro_templates.txt @@ -0,0 +1 @@ +Voici la liste des modèles actuellement installés. Le [[?do=admin&page=config|gestionnaire de configuration]] vous permet de choisir le modèle à utiliser. \ No newline at end of file diff --git a/lib/plugins/extension/lang/fr/lang.php b/lib/plugins/extension/lang/fr/lang.php new file mode 100644 index 000000000..c2dae0fc9 --- /dev/null +++ b/lib/plugins/extension/lang/fr/lang.php @@ -0,0 +1,87 @@ + + */ +$lang['menu'] = 'Gestionnaire d\'extension'; +$lang['tab_plugins'] = 'Greffons installés'; +$lang['tab_templates'] = 'Modèles installés'; +$lang['tab_search'] = 'Rechercher et installer'; +$lang['tab_install'] = 'Installation manuelle'; +$lang['notimplemented'] = 'Cette fonctionnalité n\'est pas encore installée'; +$lang['notinstalled'] = 'Cette extension n\'est pas installée'; +$lang['alreadyenabled'] = 'Cette extension a déjà été installée'; +$lang['alreadydisabled'] = 'Cette extension a déjà été désactivée'; +$lang['pluginlistsaveerror'] = 'Une erreur s\'est produite lors de l\'enregistrement de la liste des greffons.'; +$lang['unknownauthor'] = 'Auteur inconnu'; +$lang['unknownversion'] = 'Version inconnue'; +$lang['btn_info'] = 'Montrer plus d\'informations'; +$lang['btn_update'] = 'Mettre à jour'; +$lang['btn_uninstall'] = 'Désinstaller'; +$lang['btn_enable'] = 'Activer'; +$lang['btn_disable'] = 'Désactiver'; +$lang['btn_install'] = 'Installer'; +$lang['btn_reinstall'] = 'Réinstaller'; +$lang['js']['reallydel'] = 'Vraiment désinstaller cette extension'; +$lang['search_for'] = 'Rechercher l\'extension :'; +$lang['search'] = 'Chercher'; +$lang['extensionby'] = '%s de %s'; +$lang['screenshot'] = 'Aperçu de %s'; +$lang['popularity'] = 'Popularité : %s%%'; +$lang['homepage_link'] = 'Documents'; +$lang['bugs_features'] = 'Bugs'; +$lang['tags'] = 'Étiquettes :'; +$lang['author_hint'] = 'Chercher les extensions de cet auteur'; +$lang['installed'] = 'Installés :'; +$lang['downloadurl'] = 'URL de téléchargement :'; +$lang['repository'] = 'Entrepôt : '; +$lang['unknown'] = 'inconnu'; +$lang['installed_version'] = 'Version installée :'; +$lang['install_date'] = 'Votre dernière mise à jour :'; +$lang['available_version'] = 'Version disponible :'; +$lang['compatible'] = 'Compatible avec :'; +$lang['depends'] = 'Dépend de :'; +$lang['similar'] = 'Similaire à :'; +$lang['conflicts'] = 'En conflit avec :'; +$lang['donate'] = 'Vous aimez ?'; +$lang['donate_action'] = 'Payer un café à l\'auteur !'; +$lang['repo_retry'] = 'Réessayer'; +$lang['provides'] = 'Fournit :'; +$lang['status'] = 'État :'; +$lang['status_installed'] = 'installé'; +$lang['status_not_installed'] = 'non installé'; +$lang['status_protected'] = 'protégé'; +$lang['status_enabled'] = 'activé'; +$lang['status_disabled'] = 'désactivé'; +$lang['status_unmodifiable'] = 'non modifiable'; +$lang['status_plugin'] = 'greffon'; +$lang['status_template'] = 'modèle'; +$lang['status_bundled'] = 'fourni'; +$lang['msg_enabled'] = 'Greffon %s activé'; +$lang['msg_disabled'] = 'Greffon %s désactivé'; +$lang['msg_delete_success'] = 'Extension désinstallée'; +$lang['msg_template_install_success'] = 'Modèle %s installée avec succès'; +$lang['msg_template_update_success'] = 'Modèle %s mis à jour avec succès'; +$lang['msg_plugin_install_success'] = 'Greffon %s installé avec succès'; +$lang['msg_plugin_update_success'] = 'Greffon %s mis à jour avec succès'; +$lang['msg_upload_failed'] = 'Téléversement échoué'; +$lang['missing_dependency'] = 'Dépendance absente ou désactivée : %s'; +$lang['security_issue'] = 'Problème de sécurité : %s'; +$lang['security_warning'] = 'Avertissement deSécurité : %s'; +$lang['update_available'] = 'Mise à jour : La version %s est disponible.'; +$lang['wrong_folder'] = 'Greffon installé incorrectement : Renomer le dossier du greffon "%s" en "%s".'; +$lang['url_change'] = 'URL modifié : L\'URL de téléchargement a changé depuis le dernier téléchargement. Vérifiez si l\'URL est valide avant de mettre à jour l\'extension.
    Nouvel URL : %s
    Ancien : %s'; +$lang['error_badurl'] = 'Les URL doivent commencer par http ou https'; +$lang['error_dircreate'] = 'Impossible de créer le dossier temporaire pour le téléchargement.'; +$lang['error_download'] = 'Impossible de télécharger le fichier : %s'; +$lang['error_decompress'] = 'Impossible de décompresser le fichier téléchargé. C\'est peut être le résultat d\'une erreur de téléchargement, auquel cas vous devriez réessayer. Le format de compression est peut-être inconnu. Dans ce cas il vous faudra procéder à une installation manuelle.'; +$lang['error_findfolder'] = 'Impossible d\'idnetifier le dossier de l\'extension. vous devez procéder à une installation manuelle.'; +$lang['error_copy'] = 'Une erreur de copie de fichier s\'est produite lors de l\'installation des fichiers dans le dossier %s. Il se peut que le disque soit plein, ou que les permissions d\'accès aux fichiers soient incorrectes. Il est possible que le greffon soit partiellement installé et que cela laisse votre installation de DoluWiki instable.'; +$lang['noperms'] = 'Impossible d\'écrire dans le dossier des extensions.'; +$lang['notplperms'] = 'Impossible d\'écrire dans le dossier des modèles.'; +$lang['nopluginperms'] = 'Impossible d\'écrire dans le dossier des greffons.'; +$lang['git'] = 'Cette extension a été installé via git, vous voudrez peut-être ne pas la mettre à jour ici.'; +$lang['install_url'] = 'Installez depuis l\'URL :'; +$lang['install_upload'] = 'Téléversez l\'extension :'; -- cgit v1.2.3 From 46b189b552d813ab47a67d597ee4ef621f34b8a5 Mon Sep 17 00:00:00 2001 From: Robert Bogenschneider Date: Sun, 23 Feb 2014 08:21:01 +0100 Subject: translation update --- lib/plugins/extension/lang/eo/intro_install.txt | 1 + lib/plugins/extension/lang/eo/intro_plugins.txt | 1 + lib/plugins/extension/lang/eo/intro_search.txt | 1 + lib/plugins/extension/lang/eo/intro_templates.txt | 1 + lib/plugins/extension/lang/eo/lang.php | 87 +++++++++++++++++++++++ 5 files changed, 91 insertions(+) create mode 100644 lib/plugins/extension/lang/eo/intro_install.txt create mode 100644 lib/plugins/extension/lang/eo/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/eo/intro_search.txt create mode 100644 lib/plugins/extension/lang/eo/intro_templates.txt create mode 100644 lib/plugins/extension/lang/eo/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/eo/intro_install.txt b/lib/plugins/extension/lang/eo/intro_install.txt new file mode 100644 index 000000000..d9c63da1d --- /dev/null +++ b/lib/plugins/extension/lang/eo/intro_install.txt @@ -0,0 +1 @@ +Tie vi povas permane instali kromaĵojn kaj ŝablonojn tra alŝuto aŭ indiko de URL por rekta elŝuto. \ No newline at end of file diff --git a/lib/plugins/extension/lang/eo/intro_plugins.txt b/lib/plugins/extension/lang/eo/intro_plugins.txt new file mode 100644 index 000000000..cc7ae6628 --- /dev/null +++ b/lib/plugins/extension/lang/eo/intro_plugins.txt @@ -0,0 +1 @@ +Jenaj kromaĵoj momente estas instalitaj en via DokuWiki. Vi povas ebligi, malebligi aŭ eĉ tute malinstali ilin tie. Ankaŭ montriĝos aktualigoj de kromaĵoj -- certiĝu, ke vi legis la dokumentadon de la kromaĵo antaŭ aktualigo. \ No newline at end of file diff --git a/lib/plugins/extension/lang/eo/intro_search.txt b/lib/plugins/extension/lang/eo/intro_search.txt new file mode 100644 index 000000000..5d194948c --- /dev/null +++ b/lib/plugins/extension/lang/eo/intro_search.txt @@ -0,0 +1 @@ +Tiu tabelo donas aliron al ĉiuj haveblaj eksteraj kromaĵoj kaj ŝablonoj por DokuWiki. Bonvolu konscii, ke instali eksteran kodaĵon povas enkonduki **sekurecriskon**, prefere legu antaŭe pri [[doku>security#plugin_security|sekureco de kromaĵo]]. \ No newline at end of file diff --git a/lib/plugins/extension/lang/eo/intro_templates.txt b/lib/plugins/extension/lang/eo/intro_templates.txt new file mode 100644 index 000000000..6dc0ef671 --- /dev/null +++ b/lib/plugins/extension/lang/eo/intro_templates.txt @@ -0,0 +1 @@ +Jenaj ŝablonoj momente instaliĝis en via DokuWiki. Elektu la ŝablonon por uzi en la [[?do=admin&page=config|Opcia administrilo]]. \ No newline at end of file diff --git a/lib/plugins/extension/lang/eo/lang.php b/lib/plugins/extension/lang/eo/lang.php new file mode 100644 index 000000000..6ce840be8 --- /dev/null +++ b/lib/plugins/extension/lang/eo/lang.php @@ -0,0 +1,87 @@ + + */ +$lang['menu'] = 'Aldonaĵa administrado'; +$lang['tab_plugins'] = 'Instalitaj kromaĵoj'; +$lang['tab_templates'] = 'Instalitaj ŝablonoj'; +$lang['tab_search'] = 'Serĉi kaj instali'; +$lang['tab_install'] = 'Permana instalado'; +$lang['notimplemented'] = 'Tiu funkcio ankoraŭ ne realiĝis'; +$lang['notinstalled'] = 'Tiu aldonaĵo ne estas instalita'; +$lang['alreadyenabled'] = 'Tiu aldonaĵo jam ebliĝis'; +$lang['alreadydisabled'] = 'Tiu aldonaĵo jam malebliĝis'; +$lang['pluginlistsaveerror'] = 'Okazis eraro dum la kromaĵlisto konserviĝis'; +$lang['unknownauthor'] = 'Nekonata aŭtoro'; +$lang['unknownversion'] = 'Nekonata versio'; +$lang['btn_info'] = 'Montri pliajn informojn'; +$lang['btn_update'] = 'Aktualigi'; +$lang['btn_uninstall'] = 'Malinstali'; +$lang['btn_enable'] = 'Ebligi'; +$lang['btn_disable'] = 'Malebligi'; +$lang['btn_install'] = 'Instali'; +$lang['btn_reinstall'] = 'Re-instali'; +$lang['js']['reallydel'] = 'Ĉu vere malinstali la aldonaĵon?'; +$lang['search_for'] = 'Serĉi la aldonaĵon:'; +$lang['search'] = 'Serĉi'; +$lang['extensionby'] = '%s fare de %s'; +$lang['screenshot'] = 'Ekrankopio de %s'; +$lang['popularity'] = 'Populareco: %s%%'; +$lang['homepage_link'] = 'Dokumentoj'; +$lang['bugs_features'] = 'Cimoj'; +$lang['tags'] = 'Etikedoj:'; +$lang['author_hint'] = 'Serĉi aldonaĵojn laŭ tiu aŭtoro:'; +$lang['installed'] = 'Instalitaj:'; +$lang['downloadurl'] = 'URL por elŝuti:'; +$lang['repository'] = 'Kodbranĉo:'; +$lang['unknown'] = 'nekonata'; +$lang['installed_version'] = 'Instalita versio:'; +$lang['install_date'] = 'Via lasta aktualigo:'; +$lang['available_version'] = 'Havebla versio:'; +$lang['compatible'] = 'Kompatibla kun:'; +$lang['depends'] = 'Dependas de:'; +$lang['similar'] = 'Simila al:'; +$lang['conflicts'] = 'Konfliktas kun:'; +$lang['donate'] = 'Ĉu vi ŝatas tion?'; +$lang['donate_action'] = 'Aĉetu kafon al la aŭtoro!'; +$lang['repo_retry'] = 'Reprovi'; +$lang['provides'] = 'Provizas per:'; +$lang['status'] = 'Statuso:'; +$lang['status_installed'] = 'instalita'; +$lang['status_not_installed'] = 'ne instalita'; +$lang['status_protected'] = 'protektita'; +$lang['status_enabled'] = 'ebligita'; +$lang['status_disabled'] = 'malebligita'; +$lang['status_unmodifiable'] = 'neŝanĝebla'; +$lang['status_plugin'] = 'kromaĵo'; +$lang['status_template'] = 'ŝablono'; +$lang['status_bundled'] = 'kunliverita'; +$lang['msg_enabled'] = 'Kromaĵo %s ebligita'; +$lang['msg_disabled'] = 'Kromaĵo %s malebligita'; +$lang['msg_delete_success'] = 'Aldonaĵo malinstaliĝis'; +$lang['msg_template_install_success'] = 'Ŝablono %s sukcese instaliĝis'; +$lang['msg_template_update_success'] = 'Ŝablono %s sukcese aktualiĝis'; +$lang['msg_plugin_install_success'] = 'Kromaĵo %s sukcese instaliĝis'; +$lang['msg_plugin_update_success'] = 'Kromaĵo %s sukcese aktualiĝis'; +$lang['msg_upload_failed'] = 'Ne eblis alŝuti la dosieron'; +$lang['missing_dependency'] = 'Mankanta aŭ malebligita dependeco: %s'; +$lang['security_issue'] = 'Sekureca problemo: %s'; +$lang['security_warning'] = 'Sekureca averto: %s'; +$lang['update_available'] = 'Aktualigo: Nova versio %s haveblas.'; +$lang['wrong_folder'] = 'Kromaĵo instalita malĝuste: Renomu la kromaĵdosierujon "%s" al "%s".'; +$lang['url_change'] = 'URL ŝanĝita: La elŝuta URL ŝanĝiĝis ekde la lasta elŝuto. Kontrolu, ĉu la nova URL validas antaŭ aktualigi aldonaĵon.
    Nova: %s
    Malnova: %s'; +$lang['error_badurl'] = 'URLoj komenciĝu per http aŭ https'; +$lang['error_dircreate'] = 'Ne eblis krei portempan dosierujon por akcepti la elŝuton'; +$lang['error_download'] = 'Ne eblis elŝuti la dosieron: %s'; +$lang['error_decompress'] = 'Ne eblis malpaki la elŝutitan dosieron. Kialo povus esti fuŝa elŝuto, kaj vi reprovu; aŭ la pakiga formato estas nekonata, kaj vi devas elŝuti kaj instali permane.'; +$lang['error_findfolder'] = 'Ne eblis rekoni la aldonaĵ-dosierujon, vi devas elŝuti kaj instali permane'; +$lang['error_copy'] = 'Okazis kopiad-eraro dum la provo instali dosierojn por la dosierujo %s: la disko povus esti plena aŭ la alirpermesoj por dosieroj malĝustaj. Rezulto eble estas nur parte instalita kromaĵo, kiu malstabiligas vian vikion'; +$lang['noperms'] = 'La aldonaĵ-dosierujo ne estas skribebla'; +$lang['notplperms'] = 'La ŝablon-dosierujo ne estas skribebla'; +$lang['nopluginperms'] = 'La kromaĵ-dosierujo ne estas skribebla'; +$lang['git'] = 'Tiu aldonaĵo estis instalita pere de git, eble vi ne aktualigu ĝin ĉi tie.'; +$lang['install_url'] = 'Instali de URL:'; +$lang['install_upload'] = 'Alŝuti aldonaĵon:'; -- cgit v1.2.3 From 4d51938bb0516f7cc033d8c93131f56af7525da0 Mon Sep 17 00:00:00 2001 From: Rene Date: Sun, 23 Feb 2014 22:56:02 +0100 Subject: translation update --- lib/plugins/extension/lang/nl/intro_install.txt | 1 + lib/plugins/extension/lang/nl/intro_plugins.txt | 1 + lib/plugins/extension/lang/nl/intro_search.txt | 1 + lib/plugins/extension/lang/nl/intro_templates.txt | 1 + lib/plugins/extension/lang/nl/lang.php | 33 +++++++++++++++++++++++ 5 files changed, 37 insertions(+) create mode 100644 lib/plugins/extension/lang/nl/intro_install.txt create mode 100644 lib/plugins/extension/lang/nl/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/nl/intro_search.txt create mode 100644 lib/plugins/extension/lang/nl/intro_templates.txt create mode 100644 lib/plugins/extension/lang/nl/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/nl/intro_install.txt b/lib/plugins/extension/lang/nl/intro_install.txt new file mode 100644 index 000000000..6a0b41055 --- /dev/null +++ b/lib/plugins/extension/lang/nl/intro_install.txt @@ -0,0 +1 @@ +Hier kunt u handmatig plugins en templates installeren door deze te uploaden of door een directe download URL op te geven. \ No newline at end of file diff --git a/lib/plugins/extension/lang/nl/intro_plugins.txt b/lib/plugins/extension/lang/nl/intro_plugins.txt new file mode 100644 index 000000000..0077aca30 --- /dev/null +++ b/lib/plugins/extension/lang/nl/intro_plugins.txt @@ -0,0 +1 @@ +Dit zijn de momenteel in uw Dokuwiki geïnstalleerde plugins. U kunt deze hier aan of uitschakelen danwel geheel deïnstalleren. Plugin updates zijn hier ook opgenomen, lees de pluin documentatie voordat u update. \ No newline at end of file diff --git a/lib/plugins/extension/lang/nl/intro_search.txt b/lib/plugins/extension/lang/nl/intro_search.txt new file mode 100644 index 000000000..8fc3900ad --- /dev/null +++ b/lib/plugins/extension/lang/nl/intro_search.txt @@ -0,0 +1 @@ +Deze tab verschaft u toegang tot alle plugins en templates vervaardigd door derden en bestemd voor Dokuwiki. Houdt er rekening meel dat indien u Plugins van derden installeerd deze een **veiligheids risico ** kunnen bevatten, geadviseerd wordt om eerst te lezen [[doku>security#plugin_security|plugin security]]. \ No newline at end of file diff --git a/lib/plugins/extension/lang/nl/intro_templates.txt b/lib/plugins/extension/lang/nl/intro_templates.txt new file mode 100644 index 000000000..5ef23dadf --- /dev/null +++ b/lib/plugins/extension/lang/nl/intro_templates.txt @@ -0,0 +1 @@ +Deze templates zijn thans in DokuWiki geïnstalleerd. U kent een template selecteren middels [[?do=admin&page=config|Configuration Manager]] . \ No newline at end of file diff --git a/lib/plugins/extension/lang/nl/lang.php b/lib/plugins/extension/lang/nl/lang.php new file mode 100644 index 000000000..1aad6a531 --- /dev/null +++ b/lib/plugins/extension/lang/nl/lang.php @@ -0,0 +1,33 @@ + + */ +$lang['menu'] = 'Extension Manager (Uitbreidings Beheerder)'; +$lang['tab_plugins'] = 'Geïnstalleerde Plugins'; +$lang['tab_templates'] = 'Geïnstalleerde Templates'; +$lang['tab_search'] = 'Zoek en installeer'; +$lang['tab_install'] = 'Handmatige installatie'; +$lang['notimplemented'] = 'Deze toepassing is nog niet geïnstalleerd'; +$lang['notinstalled'] = 'Deze uitbreiding is nog niet geïnstalleerd'; +$lang['alreadyenabled'] = 'Deze uitbreiding is reeds ingeschakeld'; +$lang['alreadydisabled'] = 'Deze uitbreiding is reeds uitgeschakeld'; +$lang['pluginlistsaveerror'] = 'Fout bij het opslaan van de plugin lijst'; +$lang['unknownauthor'] = 'Onbekende auteur'; +$lang['unknownversion'] = 'Onbekende versie'; +$lang['btn_info'] = 'Toon meer informatie'; +$lang['btn_update'] = 'Update'; +$lang['btn_uninstall'] = 'Deinstalleer'; +$lang['btn_enable'] = 'Schakel aan'; +$lang['btn_disable'] = 'Schakel uit'; +$lang['btn_install'] = 'Installeer'; +$lang['btn_reinstall'] = 'Her-installeer'; +$lang['js']['reallydel'] = 'Wilt u deze uitbreiding deinstalleren ?'; +$lang['search_for'] = 'Zoek Uitbreiding:'; +$lang['search'] = 'Zoek'; +$lang['extensionby'] = '%s by %s'; +$lang['screenshot'] = 'Schermafdruk bij %s'; +$lang['popularity'] = 'Populariteit:%s%%'; +$lang['homepage_link'] = 'Dokumenten'; -- cgit v1.2.3 From 370fac6347ec430cd72e724f45431a294b4f6662 Mon Sep 17 00:00:00 2001 From: Rene Date: Sun, 23 Feb 2014 23:15:57 +0100 Subject: translation update --- lib/plugins/extension/lang/nl/lang.php | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/plugins/extension/lang/nl/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/nl/lang.php b/lib/plugins/extension/lang/nl/lang.php new file mode 100644 index 000000000..67b99c54d --- /dev/null +++ b/lib/plugins/extension/lang/nl/lang.php @@ -0,0 +1,37 @@ + + */ +$lang['bugs_features'] = 'Bugs'; +$lang['tags'] = 'Tags:'; +$lang['author_hint'] = 'Zoek uitbreidingen van deze auteur:'; +$lang['installed'] = 'Geinstalleerd:'; +$lang['downloadurl'] = 'Download URL:'; +$lang['repository'] = 'Repository ( centrale opslag)'; +$lang['unknown'] = 'onbekend'; +$lang['installed_version'] = 'Geïnstalleerde versie'; +$lang['install_date'] = 'Uw laatste update :'; +$lang['available_version'] = 'Beschikbare versie:'; +$lang['compatible'] = 'Compatible met :'; +$lang['depends'] = 'Afhankelijk van :'; +$lang['similar'] = 'Soortgelijk :'; +$lang['conflicts'] = 'Conflicteerd met :'; +$lang['donate'] = 'Vindt u dit leuk ?'; +$lang['donate_action'] = 'Koop een kop koffie voor de auteur!'; +$lang['repo_retry'] = 'Herhaal'; +$lang['provides'] = 'Zorgt voor:'; +$lang['status'] = 'Status:'; +$lang['status_installed'] = 'Geïnstalleerd'; +$lang['status_not_installed'] = 'niet geïnstalleerd '; +$lang['status_protected'] = 'beschermd'; +$lang['status_enabled'] = 'ingeschakeld'; +$lang['status_disabled'] = 'uitgeschakeld'; +$lang['status_unmodifiable'] = 'Niet wijzigbaar'; +$lang['status_plugin'] = 'plugin'; +$lang['status_template'] = 'template'; +$lang['status_bundled'] = 'Gebundeld'; +$lang['msg_enabled'] = 'Plugin %s ingeschakeld'; +$lang['msg_disabled'] = 'Plugin %s uitgeschakeld'; -- cgit v1.2.3 From 4292840ce374036541a92449670ed9ae83a3c64d Mon Sep 17 00:00:00 2001 From: Rene Date: Mon, 24 Feb 2014 07:30:58 +0100 Subject: translation update --- lib/plugins/extension/lang/nl/lang.php | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lib/plugins/extension/lang/nl/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/nl/lang.php b/lib/plugins/extension/lang/nl/lang.php new file mode 100644 index 000000000..2d2b3d25b --- /dev/null +++ b/lib/plugins/extension/lang/nl/lang.php @@ -0,0 +1,31 @@ + + */ +$lang['msg_delete_success'] = 'Uitbreiding gedeinstalleerd'; +$lang['msg_template_install_success'] = 'Template %s werd succesvol geïnstalleerd'; +$lang['msg_template_update_success'] = 'Template %s werd succesvol ge-update'; +$lang['msg_plugin_install_success'] = 'Plugin %s werd succesvol geïnstalleerd'; +$lang['msg_plugin_update_success'] = 'Plugin %s werd succesvol ge-update'; +$lang['msg_upload_failed'] = 'Uploaden van het bestand is mislukt'; +$lang['missing_dependency'] = 'niet aanwezige of uitgeschakelde afhankelijkheid %s'; +$lang['security_issue'] = 'Veiligheids kwestie: %s'; +$lang['security_warning'] = 'Veiligheids Waarschuwing %s'; +$lang['update_available'] = 'Update: Nieuwe versie %s is beschikbaar.'; +$lang['wrong_folder'] = 'Plugin onjuist geïnstalleerd: Hernoem de plugin directory van "%s" naar"%s"'; +$lang['url_change'] = 'URL gewijzigd: Download URL is gewijzigd sinds de laatste download. Controleer of de nieuwe URL juist is voordat u de uitbreiding update.
    Nieuw:%s
    Vorig: %s'; +$lang['error_badurl'] = 'URLs moeten beginnen met http of https'; +$lang['error_dircreate'] = 'De tijdelijke map kon niet worden gemaakt om de download te ontvangen'; +$lang['error_download'] = 'Het is niet mogelijk het bestand te downloaden: %s'; +$lang['error_decompress'] = 'Onmogelijk om het gedownloade bestand uit te pakken. Dit is wellicht het gevolg van een onvolledige/onjuiste download, in welk geval u het nog eens moet proberen; of het compressie formaat is onbekend in welk geval u het bestand handmatig moet downloaden en installeren.'; +$lang['error_findfolder'] = 'Onmogelijk om de uitbreidings directory te vinden, u moet het zelf downloaden en installeren'; +$lang['error_copy'] = 'Er was een bestand kopieer fout tijdens het installeren van bestanden in directory %s: de schijf kan vol zijn of de bestand toegangs rechten kunnen onjuist zijn. Dit kan tot gevolg hebben dat de plugin slechts gedeeltelijk werd geïnstalleerd waardoor uw wiki installatie onstabiel is '; +$lang['noperms'] = 'Uitbreidings directory is niet schrijfbaar'; +$lang['notplperms'] = 'Template directory is niet schrijfbaar'; +$lang['nopluginperms'] = 'Plugin directory is niet schrijfbaar'; +$lang['git'] = 'De uitbreiding werd geïnstalleerd via git, u wilt deze hier wellicht niet aanpassen.'; +$lang['install_url'] = 'Installeer vanaf URL:'; +$lang['install_upload'] = 'Upload Uitbreiding:'; -- cgit v1.2.3 From fd51467adc437f0a764f96cd4b94ff58a2ad8160 Mon Sep 17 00:00:00 2001 From: Martin Michalek Date: Tue, 25 Feb 2014 10:40:57 +0100 Subject: translation update --- lib/plugins/extension/lang/sk/lang.php | 58 ++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 lib/plugins/extension/lang/sk/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/sk/lang.php b/lib/plugins/extension/lang/sk/lang.php new file mode 100644 index 000000000..d00c2e32b --- /dev/null +++ b/lib/plugins/extension/lang/sk/lang.php @@ -0,0 +1,58 @@ + + */ +$lang['tab_plugins'] = 'Inštalované pluginy'; +$lang['tab_templates'] = 'Inštalované šablóny'; +$lang['tab_search'] = 'Hľadanie e inštalácia'; +$lang['tab_install'] = 'Manuálna inštalácia'; +$lang['notimplemented'] = 'Táto vlastnosť ešte nebola implementovaná'; +$lang['unknownauthor'] = 'Neznámy autor'; +$lang['unknownversion'] = 'Neznáma verzia'; +$lang['btn_info'] = 'Viac informácií'; +$lang['btn_update'] = 'Aktualizácia'; +$lang['btn_uninstall'] = 'Odinštalovanie'; +$lang['btn_enable'] = 'Povolenie'; +$lang['btn_disable'] = 'Zablokovanie'; +$lang['btn_install'] = 'Inštalácia'; +$lang['btn_reinstall'] = 'Re-Inštalácia'; +$lang['search'] = 'Vyhľadávanie'; +$lang['extensionby'] = '%s od %s'; +$lang['screenshot'] = 'Obrázok od %s'; +$lang['popularity'] = 'Popularita: %s%%'; +$lang['homepage_link'] = 'Dokumentácia'; +$lang['bugs_features'] = 'Chyby:'; +$lang['tags'] = 'Kľúčové slová:'; +$lang['unknown'] = 'neznámy'; +$lang['installed_version'] = 'Inštalovaná verzia:'; +$lang['install_date'] = 'Posledná aktualizácia:'; +$lang['available_version'] = 'Dostupné verzie:'; +$lang['compatible'] = 'Kompaktibilita:'; +$lang['similar'] = 'Podobné:'; +$lang['conflicts'] = 'V konflikte:'; +$lang['status_installed'] = 'inštalovaný'; +$lang['status_not_installed'] = 'neinštalovaný'; +$lang['status_protected'] = 'chránený'; +$lang['status_enabled'] = 'povolený'; +$lang['status_disabled'] = 'nepovolený'; +$lang['status_plugin'] = 'plugin'; +$lang['status_template'] = 'šablóna'; +$lang['msg_enabled'] = 'Plugin %s povolený'; +$lang['msg_disabled'] = 'Plugin %s nepovolený'; +$lang['msg_template_install_success'] = 'Šablóna %s úspešne nainštalovaná'; +$lang['msg_template_update_success'] = 'Šablóna %s úspešne aktualizovaná'; +$lang['msg_plugin_install_success'] = 'Plugin %s úspešne nainštalovaný'; +$lang['msg_plugin_update_success'] = 'Plugin %s úspešne aktualizovaný'; +$lang['msg_upload_failed'] = 'Nahrávanie súboru zlyhalo'; +$lang['update_available'] = 'Aktualizácia: Nová verzia %s.'; +$lang['wrong_folder'] = 'Plugin nesprávne nainštalovaný: Premenujte adresár s pluginom "%s" na "%s".'; +$lang['error_badurl'] = 'URL by mali mať na začiatku http alebo https'; +$lang['error_dircreate'] = 'Nie je možné vytvoriť dočasný adresár pre uloženie sťahovaného súboru'; +$lang['error_download'] = 'Nie je možné stiahnuť súbor: %s'; +$lang['error_decompress'] = 'Nie je možné dekomprimovať stiahnutý súbor. Môže to byť dôvodom chyby sťahovania (v tom prípade to skúste znova) alebo neznámym kompresným formátom (v tom prípade musíte stiahnuť a inštalovať manuálne).'; +$lang['error_copy'] = 'Chyba kopírovania pri inštalácii do adresára %s: disk môže byť plný alebo nemáte potrebné prístupové oprávnenie. Dôsledkom može byť čiastočne inštalovaný plugin a nestabilná wiki inštalácia.'; +$lang['nopluginperms'] = 'Adresár s pluginom nie je zapisovateľný.'; +$lang['install_url'] = 'Inštalácia z URL:'; -- cgit v1.2.3 From cdc6cb5b5424420efd689aaab13341628529c0be Mon Sep 17 00:00:00 2001 From: Hideaki SAWADA Date: Thu, 27 Feb 2014 17:31:41 +0100 Subject: translation update --- lib/plugins/extension/lang/ja/intro_install.txt | 1 + lib/plugins/extension/lang/ja/intro_plugins.txt | 1 + lib/plugins/extension/lang/ja/intro_search.txt | 1 + lib/plugins/extension/lang/ja/intro_templates.txt | 1 + lib/plugins/extension/lang/ja/lang.php | 54 +++++++++++++++++++++++ 5 files changed, 58 insertions(+) create mode 100644 lib/plugins/extension/lang/ja/intro_install.txt create mode 100644 lib/plugins/extension/lang/ja/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/ja/intro_search.txt create mode 100644 lib/plugins/extension/lang/ja/intro_templates.txt create mode 100644 lib/plugins/extension/lang/ja/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ja/intro_install.txt b/lib/plugins/extension/lang/ja/intro_install.txt new file mode 100644 index 000000000..889ed6879 --- /dev/null +++ b/lib/plugins/extension/lang/ja/intro_install.txt @@ -0,0 +1 @@ +ここでは、アップロードするかダウンロードURLを指定して、手動でプラグインやテンプレートをインストールできます。 diff --git a/lib/plugins/extension/lang/ja/intro_plugins.txt b/lib/plugins/extension/lang/ja/intro_plugins.txt new file mode 100644 index 000000000..9bfc68431 --- /dev/null +++ b/lib/plugins/extension/lang/ja/intro_plugins.txt @@ -0,0 +1 @@ +このDokuWikiに現在インストールされているプラグインです。ここでは、これらプラグインを有効化、無効化、アンインストールすることができます。同様にプラグインのアップデートも表示されます。アップデート前に、プラグインのマニュアルをお読みください。 \ No newline at end of file diff --git a/lib/plugins/extension/lang/ja/intro_search.txt b/lib/plugins/extension/lang/ja/intro_search.txt new file mode 100644 index 000000000..66d977b1b --- /dev/null +++ b/lib/plugins/extension/lang/ja/intro_search.txt @@ -0,0 +1 @@ +このタブでは、DokuWiki用の利用可能なすべてのサードパーティのプラグインとテンプレートにアクセスできます。サードパーティ製のコードには、**セキュリティ上のリスク**の可能性があることに注意してください、最初に[[doku>ja:security#プラグインのセキュリティ|プラグインのセキュリティ]]を読むことをお勧めします。 \ No newline at end of file diff --git a/lib/plugins/extension/lang/ja/intro_templates.txt b/lib/plugins/extension/lang/ja/intro_templates.txt new file mode 100644 index 000000000..f97694aaa --- /dev/null +++ b/lib/plugins/extension/lang/ja/intro_templates.txt @@ -0,0 +1 @@ +このDokuWikiに現在インストールされているテンプレートです。[[?do=admin&page=config|設定管理]]で使用するテンプレートを選択できます。 \ No newline at end of file diff --git a/lib/plugins/extension/lang/ja/lang.php b/lib/plugins/extension/lang/ja/lang.php new file mode 100644 index 000000000..0401d7630 --- /dev/null +++ b/lib/plugins/extension/lang/ja/lang.php @@ -0,0 +1,54 @@ + + */ +$lang['menu'] = '拡張機能管理'; +$lang['tab_plugins'] = 'インストール済プラグイン'; +$lang['tab_templates'] = 'インストール済テンプレート'; +$lang['tab_install'] = '手動インストール'; +$lang['notimplemented'] = 'この機能は未実装です。'; +$lang['notinstalled'] = 'この拡張機能はインストールされていません。'; +$lang['alreadyenabled'] = 'この拡張機能は有効です。'; +$lang['alreadydisabled'] = 'この拡張機能は無効です。'; +$lang['pluginlistsaveerror'] = 'プラグイン一覧の保存中にエラーが発生しました。'; +$lang['unknownauthor'] = '作者不明'; +$lang['unknownversion'] = 'バージョン不明'; +$lang['btn_info'] = '詳細情報を表示する。'; +$lang['btn_update'] = 'アップデート'; +$lang['btn_uninstall'] = 'アンインストール'; +$lang['btn_enable'] = '有効化'; +$lang['btn_disable'] = '無効化'; +$lang['btn_install'] = 'インストール'; +$lang['btn_reinstall'] = '再インストール'; +$lang['js']['reallydel'] = 'この拡張機能を本当にアンインストールしますか?'; +$lang['downloadurl'] = 'ダウンロード URL:'; +$lang['repository'] = 'リポジトリ:'; +$lang['depends'] = '依存:'; +$lang['similar'] = '類似:'; +$lang['status_installed'] = 'インストール済'; +$lang['status_not_installed'] = '未インストール'; +$lang['status_enabled'] = '有効'; +$lang['status_disabled'] = '無効'; +$lang['status_plugin'] = 'プラグイン'; +$lang['status_template'] = 'テンプレート'; +$lang['status_bundled'] = '同梱'; +$lang['msg_enabled'] = '%s プラグインを有効化しました。'; +$lang['msg_disabled'] = '%s プラグインを無効化しました。'; +$lang['msg_delete_success'] = '拡張機能をアンインストールしました。'; +$lang['msg_template_install_success'] = '%s テンプレートをインストールできました。'; +$lang['msg_template_update_success'] = '%s テンプレートをアップデートできました。'; +$lang['msg_plugin_install_success'] = '%s プラグインをインストールできました。'; +$lang['msg_plugin_update_success'] = '%s プラグインをアップデートできました。'; +$lang['msg_upload_failed'] = 'ファイルのアップロードに失敗しました。'; +$lang['security_issue'] = 'セキュリティ問題: %s'; +$lang['security_warning'] = 'セキュリティ警告: %s'; +$lang['update_available'] = 'アップデート:%sの新バージョンが利用可能です。 '; +$lang['error_badurl'] = 'URLはhttpかhttpsで始まる必要があります。'; +$lang['error_dircreate'] = 'ダウンロード用の一時フォルダが作成できません。'; +$lang['error_download'] = 'ファイルをダウンロードできません:%s'; +$lang['noperms'] = '拡張機能ディレクトリが書き込み不可です。'; +$lang['notplperms'] = 'テンプレートディレクトリが書き込み不可です。'; +$lang['nopluginperms'] = 'プラグインディレクトリが書き込み不可です。'; -- cgit v1.2.3 From 2650e2e10d5ba44aafa270734f19a38a24df8a7b Mon Sep 17 00:00:00 2001 From: "H. Richard" Date: Thu, 27 Feb 2014 22:01:02 +0100 Subject: translation update --- lib/plugins/extension/lang/de/intro_install.txt | 1 + lib/plugins/extension/lang/de/intro_plugins.txt | 1 + lib/plugins/extension/lang/de/intro_search.txt | 1 + lib/plugins/extension/lang/de/intro_templates.txt | 1 + lib/plugins/extension/lang/de/lang.php | 74 +++++++++++++++++++++++ 5 files changed, 78 insertions(+) create mode 100644 lib/plugins/extension/lang/de/intro_install.txt create mode 100644 lib/plugins/extension/lang/de/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/de/intro_search.txt create mode 100644 lib/plugins/extension/lang/de/intro_templates.txt create mode 100644 lib/plugins/extension/lang/de/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/de/intro_install.txt b/lib/plugins/extension/lang/de/intro_install.txt new file mode 100644 index 000000000..4ecebe959 --- /dev/null +++ b/lib/plugins/extension/lang/de/intro_install.txt @@ -0,0 +1 @@ +Hier können Sie Plugins und Templates von Hand installieren indem Sie sie hochladen oder eine Download-URL angeben. \ No newline at end of file diff --git a/lib/plugins/extension/lang/de/intro_plugins.txt b/lib/plugins/extension/lang/de/intro_plugins.txt new file mode 100644 index 000000000..a14304fe4 --- /dev/null +++ b/lib/plugins/extension/lang/de/intro_plugins.txt @@ -0,0 +1 @@ +Dies sind die Plugin's, die schon installiert sind. Sie können sie hier an- oder abschalten oder sie komplett deinstallieren. Außerdem werden hier Updates zu den installiereten Plugin's angezeigt. Bitte lesen Sie vor einem Update die zugehörige Dokumentation. \ No newline at end of file diff --git a/lib/plugins/extension/lang/de/intro_search.txt b/lib/plugins/extension/lang/de/intro_search.txt new file mode 100644 index 000000000..02f01acb9 --- /dev/null +++ b/lib/plugins/extension/lang/de/intro_search.txt @@ -0,0 +1 @@ +Dieser Tab gibt Ihnen Zugriff auf alle vorhandenen Plugin's und Templates für DokuWiki, die von dritte Seite angeboten werden. Bitte seien Sie sich dessen bewusst, dass dieser Code ein Sicherheitsrisiko darstellen kann. Sie sollten vor einer Installation weiter dazu lesen: [[doku>security#plugin_security|plugin security]] \ No newline at end of file diff --git a/lib/plugins/extension/lang/de/intro_templates.txt b/lib/plugins/extension/lang/de/intro_templates.txt new file mode 100644 index 000000000..be26c00ac --- /dev/null +++ b/lib/plugins/extension/lang/de/intro_templates.txt @@ -0,0 +1 @@ +Dies sind die in Ihrem Dokuwiki installierten Templates. Sie können das gewünschte Template hier: [[?do=admin&page=config|Configuration Manager]] aussuchen. \ No newline at end of file diff --git a/lib/plugins/extension/lang/de/lang.php b/lib/plugins/extension/lang/de/lang.php new file mode 100644 index 000000000..8aca8646e --- /dev/null +++ b/lib/plugins/extension/lang/de/lang.php @@ -0,0 +1,74 @@ + + */ +$lang['menu'] = 'Erweiterungen verwalten'; +$lang['tab_plugins'] = 'installierte Plugin\'s'; +$lang['tab_templates'] = 'installierte Templates'; +$lang['tab_search'] = 'Suchen und installieren'; +$lang['tab_install'] = 'händisch installieren'; +$lang['notimplemented'] = 'Diese Fähigkeit/Eigenschaft wurde noch nicht implementiert'; +$lang['notinstalled'] = 'Diese Erweiterung ist nicht installiert'; +$lang['alreadyenabled'] = 'Diese Erweiterung wurde bereits angeschaltet'; +$lang['alreadydisabled'] = 'Diese Erweiterung wurde bereits abgeschaltet'; +$lang['pluginlistsaveerror'] = 'Es gab einen Fehler beim Speichern der Plugin-Liste'; +$lang['unknownauthor'] = 'Unbekannter Autor'; +$lang['unknownversion'] = 'Unbekannte Version'; +$lang['btn_info'] = 'Zeige weitere Info'; +$lang['btn_update'] = 'Update'; +$lang['btn_uninstall'] = 'Deinstallation'; +$lang['btn_enable'] = 'Anschalten (enable)'; +$lang['btn_disable'] = 'Abschalten (disable)'; +$lang['btn_install'] = 'Installieren'; +$lang['btn_reinstall'] = 'Von neuem installieren'; +$lang['js']['reallydel'] = 'Wollen Sie diese Erweiterung wirklich installieren?'; +$lang['search_for'] = 'Erweiterung suchen:'; +$lang['search'] = 'Suchen'; +$lang['extensionby'] = '%s mit %s'; +$lang['screenshot'] = 'Bildschirmfoto mit %s'; +$lang['popularity'] = 'Popularität: %s%%'; +$lang['homepage_link'] = 'Dokumentation'; +$lang['bugs_features'] = 'Fehler'; +$lang['tags'] = 'Kennwörter'; +$lang['author_hint'] = 'Suche Erweiterungen mittels Name des Autor\'s'; +$lang['installed'] = 'Installiert:'; +$lang['downloadurl'] = 'URL zum Herunterladen'; +$lang['unknown'] = 'unbekannt'; +$lang['installed_version'] = 'Installierte Version'; +$lang['install_date'] = 'Ihr letztes Update:'; +$lang['available_version'] = 'Verfügbare Version: '; +$lang['compatible'] = 'verträglich mit:'; +$lang['depends'] = 'hängt ab von:'; +$lang['similar'] = 'Ist ähnlich zu:'; +$lang['conflicts'] = 'ist in Konflikt mit:'; +$lang['donate'] = 'ist dies ähnlich?'; +$lang['donate_action'] = 'Spendieren Sie dem Autor einen Kaffee!'; +$lang['repo_retry'] = 'Versuchen Sie\'s noch mal!'; +$lang['provides'] = 'Stellt zur Verfügung'; +$lang['status'] = 'Status'; +$lang['status_installed'] = 'installiert'; +$lang['status_not_installed'] = 'nicht installiert'; +$lang['status_protected'] = 'geschützt'; +$lang['status_enabled'] = 'angeschaltet (enabled)'; +$lang['status_disabled'] = 'abgeschaltet (disabled)'; +$lang['status_unmodifiable'] = 'unveränderlich'; +$lang['status_plugin'] = 'Plugin'; +$lang['status_template'] = 'Mustervorgabe (Template)'; +$lang['status_bundled'] = 'verbunden'; +$lang['msg_enabled'] = 'Plugin %s ist angeschaltet'; +$lang['msg_disabled'] = 'Erweiterung %s ist abgeschaltet'; +$lang['msg_delete_success'] = 'diese Erweiterung ist nicht installiert'; +$lang['msg_template_install_success'] = 'Das Template %s wurde erfolgreich installiert'; +$lang['msg_template_update_success'] = 'Das Update des Templates %s war erfolgreich '; +$lang['msg_plugin_install_success'] = 'Das Plugin %s wurde erfolgreich installiert'; +$lang['msg_plugin_update_success'] = 'Das Update des Plugin\'s %s war erfolgreich'; +$lang['msg_upload_failed'] = 'Fehler beim Hochladen der Datei'; +$lang['missing_dependency'] = 'fehlende oder abgeschaltete Abhängigkeit:%s'; +$lang['noperms'] = 'das Erweiterungs-Verzeichnis ist schreibgeschützt'; +$lang['notplperms'] = 'das Template-Verzeichnis ist schreibgeschützt'; +$lang['nopluginperms'] = 'das Plugin-Verzeichnis ist schreibgeschützt'; +$lang['install_url'] = 'Von der Webadresse (URL) installieren'; +$lang['install_upload'] = 'Erweiterung hochladen:'; -- cgit v1.2.3 From fee031291e3986d3f7fb0418934ca39ea74f7621 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 28 Feb 2014 11:13:48 +0100 Subject: improved German translation --- lib/plugins/extension/lang/de/intro_plugins.txt | 2 +- lib/plugins/extension/lang/de/intro_search.txt | 2 +- lib/plugins/extension/lang/de/intro_templates.txt | 2 +- lib/plugins/extension/lang/de/lang.php | 71 +++++++++++------------ 4 files changed, 38 insertions(+), 39 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/de/intro_plugins.txt b/lib/plugins/extension/lang/de/intro_plugins.txt index a14304fe4..1a1521050 100644 --- a/lib/plugins/extension/lang/de/intro_plugins.txt +++ b/lib/plugins/extension/lang/de/intro_plugins.txt @@ -1 +1 @@ -Dies sind die Plugin's, die schon installiert sind. Sie können sie hier an- oder abschalten oder sie komplett deinstallieren. Außerdem werden hier Updates zu den installiereten Plugin's angezeigt. Bitte lesen Sie vor einem Update die zugehörige Dokumentation. \ No newline at end of file +Dies sind die Plugins, die bereits installiert sind. Sie können sie hier an- oder abschalten oder sie komplett deinstallieren. Außerdem werden hier Updates zu den installiereten Plugins angezeigt. Bitte lesen Sie vor einem Update die zugehörige Dokumentation. \ No newline at end of file diff --git a/lib/plugins/extension/lang/de/intro_search.txt b/lib/plugins/extension/lang/de/intro_search.txt index 02f01acb9..7df8de185 100644 --- a/lib/plugins/extension/lang/de/intro_search.txt +++ b/lib/plugins/extension/lang/de/intro_search.txt @@ -1 +1 @@ -Dieser Tab gibt Ihnen Zugriff auf alle vorhandenen Plugin's und Templates für DokuWiki, die von dritte Seite angeboten werden. Bitte seien Sie sich dessen bewusst, dass dieser Code ein Sicherheitsrisiko darstellen kann. Sie sollten vor einer Installation weiter dazu lesen: [[doku>security#plugin_security|plugin security]] \ No newline at end of file +Dieser Tab gibt Ihnen Zugriff auf alle vorhandenen Plugins und Templates für DokuWiki. Bitte bedenken sie das jede installierte Erweiterung ein Sicherheitsrisiko darstellen kann. Sie sollten vor einer Installation die [[doku>security#plugin_security|Plugin Security]] Informationen lesen. \ No newline at end of file diff --git a/lib/plugins/extension/lang/de/intro_templates.txt b/lib/plugins/extension/lang/de/intro_templates.txt index be26c00ac..d71ce6237 100644 --- a/lib/plugins/extension/lang/de/intro_templates.txt +++ b/lib/plugins/extension/lang/de/intro_templates.txt @@ -1 +1 @@ -Dies sind die in Ihrem Dokuwiki installierten Templates. Sie können das gewünschte Template hier: [[?do=admin&page=config|Configuration Manager]] aussuchen. \ No newline at end of file +Dies sind die in Ihrem Dokuwiki installierten Templates. Sie können das gewünschte Template im [[?do=admin&page=config|Konfigurations Manager]] aktivieren. \ No newline at end of file diff --git a/lib/plugins/extension/lang/de/lang.php b/lib/plugins/extension/lang/de/lang.php index 8aca8646e..10d501130 100644 --- a/lib/plugins/extension/lang/de/lang.php +++ b/lib/plugins/extension/lang/de/lang.php @@ -6,69 +6,68 @@ * @author H. Richard */ $lang['menu'] = 'Erweiterungen verwalten'; -$lang['tab_plugins'] = 'installierte Plugin\'s'; -$lang['tab_templates'] = 'installierte Templates'; -$lang['tab_search'] = 'Suchen und installieren'; -$lang['tab_install'] = 'händisch installieren'; -$lang['notimplemented'] = 'Diese Fähigkeit/Eigenschaft wurde noch nicht implementiert'; +$lang['tab_plugins'] = 'Installierte Plugins'; +$lang['tab_templates'] = 'Installierte Templates'; +$lang['tab_search'] = 'Suchen und Installieren'; +$lang['tab_install'] = 'Händisch installieren'; +$lang['notimplemented'] = 'Dieses Fähigkeit/Eigenschaft wurde noch nicht implementiert'; $lang['notinstalled'] = 'Diese Erweiterung ist nicht installiert'; -$lang['alreadyenabled'] = 'Diese Erweiterung wurde bereits angeschaltet'; -$lang['alreadydisabled'] = 'Diese Erweiterung wurde bereits abgeschaltet'; +$lang['alreadyenabled'] = 'Diese Erweiterung ist bereits aktiviert'; +$lang['alreadydisabled'] = 'Diese Erweiterung ist bereits deaktiviert'; $lang['pluginlistsaveerror'] = 'Es gab einen Fehler beim Speichern der Plugin-Liste'; $lang['unknownauthor'] = 'Unbekannter Autor'; $lang['unknownversion'] = 'Unbekannte Version'; $lang['btn_info'] = 'Zeige weitere Info'; $lang['btn_update'] = 'Update'; $lang['btn_uninstall'] = 'Deinstallation'; -$lang['btn_enable'] = 'Anschalten (enable)'; -$lang['btn_disable'] = 'Abschalten (disable)'; +$lang['btn_enable'] = 'Aktivieren'; +$lang['btn_disable'] = 'Deaktivieren'; $lang['btn_install'] = 'Installieren'; -$lang['btn_reinstall'] = 'Von neuem installieren'; -$lang['js']['reallydel'] = 'Wollen Sie diese Erweiterung wirklich installieren?'; +$lang['btn_reinstall'] = 'Neu installieren'; +$lang['js']['reallydel'] = 'Wollen Sie diese Erweiterung wirklich löschen?'; $lang['search_for'] = 'Erweiterung suchen:'; $lang['search'] = 'Suchen'; -$lang['extensionby'] = '%s mit %s'; -$lang['screenshot'] = 'Bildschirmfoto mit %s'; +$lang['extensionby'] = '%s von %s'; +$lang['screenshot'] = 'Bildschirmfoto von %s'; $lang['popularity'] = 'Popularität: %s%%'; -$lang['homepage_link'] = 'Dokumentation'; -$lang['bugs_features'] = 'Fehler'; -$lang['tags'] = 'Kennwörter'; -$lang['author_hint'] = 'Suche Erweiterungen mittels Name des Autor\'s'; +$lang['homepage_link'] = 'Doku'; +$lang['bugs_features'] = 'Bugs'; +$lang['tags'] = 'Schlagworte'; +$lang['author_hint'] = 'Suche weitere Erweiterungen dieses Autors'; $lang['installed'] = 'Installiert:'; $lang['downloadurl'] = 'URL zum Herunterladen'; $lang['unknown'] = 'unbekannt'; $lang['installed_version'] = 'Installierte Version'; $lang['install_date'] = 'Ihr letztes Update:'; $lang['available_version'] = 'Verfügbare Version: '; -$lang['compatible'] = 'verträglich mit:'; -$lang['depends'] = 'hängt ab von:'; +$lang['compatible'] = 'Kompatibel mit:'; +$lang['depends'] = 'Benötigt:'; $lang['similar'] = 'Ist ähnlich zu:'; -$lang['conflicts'] = 'ist in Konflikt mit:'; -$lang['donate'] = 'ist dies ähnlich?'; +$lang['conflicts'] = 'Nicht kompatibel mit:'; +$lang['donate'] = 'Nützlich?'; $lang['donate_action'] = 'Spendieren Sie dem Autor einen Kaffee!'; -$lang['repo_retry'] = 'Versuchen Sie\'s noch mal!'; -$lang['provides'] = 'Stellt zur Verfügung'; +$lang['repo_retry'] = 'Neu versuchen'; +$lang['provides'] = 'Enthält'; $lang['status'] = 'Status'; $lang['status_installed'] = 'installiert'; $lang['status_not_installed'] = 'nicht installiert'; $lang['status_protected'] = 'geschützt'; -$lang['status_enabled'] = 'angeschaltet (enabled)'; -$lang['status_disabled'] = 'abgeschaltet (disabled)'; +$lang['status_enabled'] = 'aktiviert'; +$lang['status_disabled'] = 'deaktiviert'; $lang['status_unmodifiable'] = 'unveränderlich'; $lang['status_plugin'] = 'Plugin'; -$lang['status_template'] = 'Mustervorgabe (Template)'; -$lang['status_bundled'] = 'verbunden'; -$lang['msg_enabled'] = 'Plugin %s ist angeschaltet'; -$lang['msg_disabled'] = 'Erweiterung %s ist abgeschaltet'; -$lang['msg_delete_success'] = 'diese Erweiterung ist nicht installiert'; +$lang['status_template'] = 'Template'; +$lang['msg_enabled'] = 'Plugin %s ist aktiviert'; +$lang['msg_disabled'] = 'Erweiterung %s ist deaktiviert'; +$lang['msg_delete_success'] = 'Erweiterung wurde entfernt'; $lang['msg_template_install_success'] = 'Das Template %s wurde erfolgreich installiert'; $lang['msg_template_update_success'] = 'Das Update des Templates %s war erfolgreich '; $lang['msg_plugin_install_success'] = 'Das Plugin %s wurde erfolgreich installiert'; -$lang['msg_plugin_update_success'] = 'Das Update des Plugin\'s %s war erfolgreich'; +$lang['msg_plugin_update_success'] = 'Das Update des Plugins %s war erfolgreich'; $lang['msg_upload_failed'] = 'Fehler beim Hochladen der Datei'; -$lang['missing_dependency'] = 'fehlende oder abgeschaltete Abhängigkeit:%s'; -$lang['noperms'] = 'das Erweiterungs-Verzeichnis ist schreibgeschützt'; -$lang['notplperms'] = 'das Template-Verzeichnis ist schreibgeschützt'; -$lang['nopluginperms'] = 'das Plugin-Verzeichnis ist schreibgeschützt'; -$lang['install_url'] = 'Von der Webadresse (URL) installieren'; +$lang['missing_dependency'] = 'fehlende oder deaktivierte Abhängigkeit:%s'; +$lang['noperms'] = 'Das Erweiterungs-Verzeichnis ist schreibgeschützt'; +$lang['notplperms'] = 'Das Template-Verzeichnis ist schreibgeschützt'; +$lang['nopluginperms'] = 'Das Plugin-Verzeichnis ist schreibgeschützt'; +$lang['install_url'] = 'Von Webadresse (URL) installieren'; $lang['install_upload'] = 'Erweiterung hochladen:'; -- cgit v1.2.3 From ddf7ce094f821dc45273f75203e5da7838d96e96 Mon Sep 17 00:00:00 2001 From: Cupen Date: Wed, 5 Mar 2014 09:26:40 +0100 Subject: translation update --- lib/plugins/extension/lang/zh/intro_install.txt | 1 + lib/plugins/extension/lang/zh/intro_search.txt | 1 + lib/plugins/extension/lang/zh/intro_templates.txt | 1 + lib/plugins/extension/lang/zh/lang.php | 33 +++++++++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 lib/plugins/extension/lang/zh/intro_install.txt create mode 100644 lib/plugins/extension/lang/zh/intro_search.txt create mode 100644 lib/plugins/extension/lang/zh/intro_templates.txt create mode 100644 lib/plugins/extension/lang/zh/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/zh/intro_install.txt b/lib/plugins/extension/lang/zh/intro_install.txt new file mode 100644 index 000000000..640839319 --- /dev/null +++ b/lib/plugins/extension/lang/zh/intro_install.txt @@ -0,0 +1 @@ +你可以通过上传或直接提供下载链接来安装插件和模板。 \ No newline at end of file diff --git a/lib/plugins/extension/lang/zh/intro_search.txt b/lib/plugins/extension/lang/zh/intro_search.txt new file mode 100644 index 000000000..0059075c0 --- /dev/null +++ b/lib/plugins/extension/lang/zh/intro_search.txt @@ -0,0 +1 @@ +这个标签会为你展示所有DokuWiki的第三方插件和模板。但你需要知道这些由第三方提供的代码可能会给你带来**安全方面的风险**,你最好先读一下[[doku>security#plugin_security|插件安全性]]。 \ No newline at end of file diff --git a/lib/plugins/extension/lang/zh/intro_templates.txt b/lib/plugins/extension/lang/zh/intro_templates.txt new file mode 100644 index 000000000..20575d381 --- /dev/null +++ b/lib/plugins/extension/lang/zh/intro_templates.txt @@ -0,0 +1 @@ +DokuWiki当前所使用的模板已经安装了,你可以在[[?do=admin&page=config|配置管理器]]里选择你要的模板。 \ No newline at end of file diff --git a/lib/plugins/extension/lang/zh/lang.php b/lib/plugins/extension/lang/zh/lang.php new file mode 100644 index 000000000..b5d77b1dd --- /dev/null +++ b/lib/plugins/extension/lang/zh/lang.php @@ -0,0 +1,33 @@ + + */ +$lang['menu'] = '扩展管理器'; +$lang['tab_plugins'] = '安装插件'; +$lang['tab_templates'] = '安装模板'; +$lang['tab_search'] = '搜索和安装'; +$lang['tab_install'] = '手动安装'; +$lang['notimplemented'] = '未实现的特性'; +$lang['notinstalled'] = '该扩展未安装'; +$lang['alreadyenabled'] = '该扩展已激活'; +$lang['alreadydisabled'] = '该扩展已关闭'; +$lang['pluginlistsaveerror'] = '保存插件列表时碰到个错误'; +$lang['unknownauthor'] = '未知作者'; +$lang['unknownversion'] = '未知版本'; +$lang['btn_info'] = '查看更多信息'; +$lang['btn_update'] = '更新'; +$lang['btn_uninstall'] = '卸载'; +$lang['btn_enable'] = '激活'; +$lang['btn_disable'] = '关闭'; +$lang['btn_install'] = '安装'; +$lang['btn_reinstall'] = '重新安装'; +$lang['js']['reallydel'] = '确定卸载这个扩展么?'; +$lang['search_for'] = '搜索扩展'; +$lang['search'] = '搜索'; +$lang['extensionby'] = '%s by %s'; +$lang['screenshot'] = '%s 的截图'; +$lang['popularity'] = '人气: %s%%'; +$lang['homepage_link'] = '文档'; -- cgit v1.2.3 From 9a9ddee0317986914ffa1990917c4267b04b5370 Mon Sep 17 00:00:00 2001 From: xiqingongzi Date: Wed, 5 Mar 2014 14:36:01 +0100 Subject: translation update --- lib/plugins/extension/lang/zh/lang.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/zh/lang.php b/lib/plugins/extension/lang/zh/lang.php index b5d77b1dd..b9db01540 100644 --- a/lib/plugins/extension/lang/zh/lang.php +++ b/lib/plugins/extension/lang/zh/lang.php @@ -4,6 +4,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Cupen + * @author xiqingongzi */ $lang['menu'] = '扩展管理器'; $lang['tab_plugins'] = '安装插件'; @@ -31,3 +32,19 @@ $lang['extensionby'] = '%s by %s'; $lang['screenshot'] = '%s 的截图'; $lang['popularity'] = '人气: %s%%'; $lang['homepage_link'] = '文档'; +$lang['bugs_features'] = '错误'; +$lang['tags'] = '标签:'; +$lang['author_hint'] = '搜索这个作者的插件'; +$lang['installed'] = '已安装的:'; +$lang['downloadurl'] = '下载地址:'; +$lang['repository'] = '版本库:'; +$lang['unknown'] = '未知的'; +$lang['installed_version'] = '已安装版本:'; +$lang['install_date'] = '您的最后一次升级:'; +$lang['donate'] = '喜欢?'; +$lang['donate_action'] = '捐给作者一杯咖啡钱!'; +$lang['repo_retry'] = '重试'; +$lang['status'] = '现状:'; +$lang['status_installed'] = '已安装的'; +$lang['status_plugin'] = '插件'; +$lang['status_template'] = '模板'; -- cgit v1.2.3 From a854a9a897ade35800abd440c29787ec8429c678 Mon Sep 17 00:00:00 2001 From: Joerg Date: Thu, 6 Mar 2014 10:46:06 +0100 Subject: translation update --- lib/plugins/extension/lang/de/lang.php | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/de/lang.php b/lib/plugins/extension/lang/de/lang.php index 10d501130..f2333cc25 100644 --- a/lib/plugins/extension/lang/de/lang.php +++ b/lib/plugins/extension/lang/de/lang.php @@ -4,6 +4,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author H. Richard + * @author Joerg */ $lang['menu'] = 'Erweiterungen verwalten'; $lang['tab_plugins'] = 'Installierte Plugins'; @@ -36,6 +37,7 @@ $lang['tags'] = 'Schlagworte'; $lang['author_hint'] = 'Suche weitere Erweiterungen dieses Autors'; $lang['installed'] = 'Installiert:'; $lang['downloadurl'] = 'URL zum Herunterladen'; +$lang['repository'] = 'Quelle:'; $lang['unknown'] = 'unbekannt'; $lang['installed_version'] = 'Installierte Version'; $lang['install_date'] = 'Ihr letztes Update:'; @@ -57,6 +59,7 @@ $lang['status_disabled'] = 'deaktiviert'; $lang['status_unmodifiable'] = 'unveränderlich'; $lang['status_plugin'] = 'Plugin'; $lang['status_template'] = 'Template'; +$lang['status_bundled'] = 'gebündelt'; $lang['msg_enabled'] = 'Plugin %s ist aktiviert'; $lang['msg_disabled'] = 'Erweiterung %s ist deaktiviert'; $lang['msg_delete_success'] = 'Erweiterung wurde entfernt'; @@ -66,8 +69,15 @@ $lang['msg_plugin_install_success'] = 'Das Plugin %s wurde erfolgreich installie $lang['msg_plugin_update_success'] = 'Das Update des Plugins %s war erfolgreich'; $lang['msg_upload_failed'] = 'Fehler beim Hochladen der Datei'; $lang['missing_dependency'] = 'fehlende oder deaktivierte Abhängigkeit:%s'; +$lang['error_badurl'] = 'URLs sollten mit http oder https beginnen'; +$lang['error_dircreate'] = 'Temporären Ordner konnte nicht erstellt werden, um Download zu empfangen'; +$lang['error_download'] = 'Download der Datei: %s nicht möglich.'; +$lang['error_decompress'] = 'Die heruntergeladene Datei konnte nicht entpackt werden. Dies kann die Folge eines fehlerhaften Downloads sein. In diesem Fall sollten Sie versuchen den Vorgang zu wiederholen. Es kann auch die Folge eines unbekannten Kompressionsformates sein, in diesem ​​Fall müssen Sie die Datei selber herunterladen und manuell installieren.'; +$lang['error_findfolder'] = 'Das Erweiterungs-Verzeichnis konnte nicht identifiziert werden, laden und installieren sie die Datei manuell.'; +$lang['error_copy'] = 'Beim Versuch Dateien in den Ordner %s: zu installieren trat ein Kopierfehler auf. Die Dateizugriffsberechtigungen könnten falsch sein. Dies kann an einem unvollständig installierten Plugin liegen und beeinträchtigt somit die Stabilität Ihre Wiki-Installation.'; $lang['noperms'] = 'Das Erweiterungs-Verzeichnis ist schreibgeschützt'; $lang['notplperms'] = 'Das Template-Verzeichnis ist schreibgeschützt'; $lang['nopluginperms'] = 'Das Plugin-Verzeichnis ist schreibgeschützt'; +$lang['git'] = 'Diese Erweiterung wurde über git installiert, daher kann diese nicht hier aktualisiert werden.'; $lang['install_url'] = 'Von Webadresse (URL) installieren'; $lang['install_upload'] = 'Erweiterung hochladen:'; -- cgit v1.2.3 From 59ac7beaa56f2b43310b88bceca6c68a685f19e6 Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Sat, 8 Mar 2014 11:27:28 +0100 Subject: Extension manager: Fix cache extension to be .repo The dot was missing i.e. the cache files had no real extension at all. --- lib/plugins/extension/helper/repository.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/repository.php b/lib/plugins/extension/helper/repository.php index 1f603a866..6ffe89eb7 100644 --- a/lib/plugins/extension/helper/repository.php +++ b/lib/plugins/extension/helper/repository.php @@ -31,7 +31,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { $request_data = array('fmt' => 'php'); $request_needed = false; foreach ($list as $name) { - $cache = new cache('##extension_manager##'.$name, 'repo'); + $cache = new cache('##extension_manager##'.$name, '.repo'); $result = null; if (!isset($this->loaded_extensions[$name]) && $this->hasAccess() && !$cache->useCache(array('age' => 3600 * 24))) { $this->loaded_extensions[$name] = true; @@ -46,7 +46,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { if ($data !== false) { $extensions = unserialize($data); foreach ($extensions as $extension) { - $cache = new cache('##extension_manager##'.$extension['plugin'], 'repo'); + $cache = new cache('##extension_manager##'.$extension['plugin'], '.repo'); $cache->storeCache(serialize($extension)); } } else { @@ -63,7 +63,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { */ public function hasAccess() { if ($this->has_access === null) { - $cache = new cache('##extension_manager###hasAccess', 'repo'); + $cache = new cache('##extension_manager###hasAccess', '.repo'); $result = null; if (!$cache->useCache(array('age' => 3600 * 24, 'purge'=>1))) { $httpclient = new DokuHTTPClient(); @@ -90,7 +90,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { * @return array The data or null if nothing was found (possibly no repository access) */ public function getData($name) { - $cache = new cache('##extension_manager##'.$name, 'repo'); + $cache = new cache('##extension_manager##'.$name, '.repo'); $result = null; if (!isset($this->loaded_extensions[$name]) && $this->hasAccess() && !$cache->useCache(array('age' => 3600 * 24))) { $this->loaded_extensions[$name] = true; @@ -130,7 +130,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { // store cache info for each extension foreach($result as $ext){ $name = $ext['plugin']; - $cache = new cache('##extension_manager##'.$name, 'repo'); + $cache = new cache('##extension_manager##'.$name, '.repo'); $cache->storeCache(serialize($ext)); $ids[] = $name; } -- cgit v1.2.3 From 0b1e74a3a483dfda1906c0f636b27e4a15bd7a0f Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 8 Mar 2014 19:14:16 +0100 Subject: avoid HTTP image screenshot urls. closes #595 --- lib/plugins/extension/helper/list.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 01a5c516a..47edca8c1 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -188,10 +188,17 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { * @return string The HTML code */ function make_screenshot(helper_plugin_extension_extension $extension) { - if($extension->getScreenshotURL()) { + $screen = $extension->getScreenshotURL(); + $thumb = $extension->getThumbnailURL(); + + if($screen) { + // use protocol independent URLs for images coming from us #595 + $screen = str_replace('http://www.dokuwiki.org', '//www.dokuwiki.org', $screen); + $thumb = str_replace('http://www.dokuwiki.org', '//www.dokuwiki.org', $thumb); + $title = sprintf($this->getLang('screenshot'), hsc($extension->getDisplayName())); - $img = ''. - ''.$title.''. + $img = ''. + ''.$title.''. ''; } elseif($extension->isTemplate()) { $img = ''; -- cgit v1.2.3 From 3b7b1e523ecf0c4752f428e6c5f530988e0b80b9 Mon Sep 17 00:00:00 2001 From: Aleksandr Selivanov Date: Sun, 9 Mar 2014 15:31:27 +0100 Subject: translation update --- lib/plugins/extension/lang/ru/lang.php | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lib/plugins/extension/lang/ru/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php new file mode 100644 index 000000000..0a6df12be --- /dev/null +++ b/lib/plugins/extension/lang/ru/lang.php @@ -0,0 +1,31 @@ + + */ +$lang['menu'] = 'Управление дополнениями'; +$lang['tab_plugins'] = 'Установленные плагины'; +$lang['tab_templates'] = 'Установленные шаблоны'; +$lang['tab_search'] = 'Поиск и установка'; +$lang['tab_install'] = 'Ручная установка'; +$lang['notinstalled'] = 'Это дополнение не установлено'; +$lang['unknownauthor'] = 'Автор неизвестен'; +$lang['unknownversion'] = 'Версия неизвестна'; +$lang['btn_info'] = 'Отобразить доп. информацию'; +$lang['btn_update'] = 'Обновить'; +$lang['btn_uninstall'] = 'Удалить'; +$lang['btn_enable'] = 'Включить'; +$lang['btn_disable'] = 'Отключить'; +$lang['btn_install'] = 'Установить'; +$lang['btn_reinstall'] = 'Переустановить'; +$lang['js']['reallydel'] = 'Действительно удалить это дополнение?'; +$lang['search_for'] = 'Поиск дополнения:'; +$lang['search'] = 'Найти'; +$lang['extensionby'] = '%s — %s'; +$lang['popularity'] = 'Попоулярность: %s%%'; +$lang['bugs_features'] = 'Ошибки'; +$lang['tags'] = 'Метки:'; +$lang['repository'] = 'Репозиторий:'; +$lang['unknown'] = 'неизвестно'; -- cgit v1.2.3 From 68321121b4d24c7489400c950afdbe6eba0f417d Mon Sep 17 00:00:00 2001 From: Aleksandr Selivanov Date: Tue, 11 Mar 2014 18:06:07 +0100 Subject: translation update --- lib/plugins/extension/lang/ru/lang.php | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php index 0a6df12be..4a36cb85d 100644 --- a/lib/plugins/extension/lang/ru/lang.php +++ b/lib/plugins/extension/lang/ru/lang.php @@ -29,3 +29,13 @@ $lang['bugs_features'] = 'Ошибки'; $lang['tags'] = 'Метки:'; $lang['repository'] = 'Репозиторий:'; $lang['unknown'] = 'неизвестно'; +$lang['repo_retry'] = 'Повторить'; +$lang['status_enabled'] = 'включен'; +$lang['status_disabled'] = 'отключено'; +$lang['status_unmodifiable'] = 'неизменяемо'; +$lang['status_plugin'] = 'плагин'; +$lang['status_template'] = 'шаблон'; +$lang['status_bundled'] = 'в комплекте'; +$lang['msg_enabled'] = 'Плагин %s включен'; +$lang['msg_disabled'] = 'Плагин %s отключен'; +$lang['msg_delete_success'] = 'Дополнение удалено'; -- cgit v1.2.3 From 5057e70035247a6d3a296a8e4e39c55244fa8b90 Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 17 Mar 2014 11:16:12 +0100 Subject: translation update --- lib/plugins/extension/lang/de/lang.php | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/de/lang.php b/lib/plugins/extension/lang/de/lang.php index f2333cc25..8068ce830 100644 --- a/lib/plugins/extension/lang/de/lang.php +++ b/lib/plugins/extension/lang/de/lang.php @@ -5,6 +5,7 @@ * * @author H. Richard * @author Joerg + * @author Simon */ $lang['menu'] = 'Erweiterungen verwalten'; $lang['tab_plugins'] = 'Installierte Plugins'; @@ -69,6 +70,10 @@ $lang['msg_plugin_install_success'] = 'Das Plugin %s wurde erfolgreich installie $lang['msg_plugin_update_success'] = 'Das Update des Plugins %s war erfolgreich'; $lang['msg_upload_failed'] = 'Fehler beim Hochladen der Datei'; $lang['missing_dependency'] = 'fehlende oder deaktivierte Abhängigkeit:%s'; +$lang['security_issue'] = 'Sicherheitsproblem: %s'; +$lang['security_warning'] = 'Sicherheitswarnung: %s'; +$lang['update_available'] = 'Update: Version %s steht zum Download bereit.'; +$lang['wrong_folder'] = 'Plugin wurde nicht korrekt installiert: Benennen Sie das Plugin-Verzeichnis "%s" in "%s" um.'; $lang['error_badurl'] = 'URLs sollten mit http oder https beginnen'; $lang['error_dircreate'] = 'Temporären Ordner konnte nicht erstellt werden, um Download zu empfangen'; $lang['error_download'] = 'Download der Datei: %s nicht möglich.'; -- cgit v1.2.3 From f934b764a4e9940f8fe921905ab24abff136f1c5 Mon Sep 17 00:00:00 2001 From: Aleksandr Selivanov Date: Mon, 17 Mar 2014 16:41:22 +0100 Subject: translation update --- lib/plugins/extension/lang/ru/lang.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php index 4a36cb85d..d524f072b 100644 --- a/lib/plugins/extension/lang/ru/lang.php +++ b/lib/plugins/extension/lang/ru/lang.php @@ -27,9 +27,24 @@ $lang['extensionby'] = '%s — %s'; $lang['popularity'] = 'Попоулярность: %s%%'; $lang['bugs_features'] = 'Ошибки'; $lang['tags'] = 'Метки:'; +$lang['author_hint'] = 'Найти дополнения этого автора'; +$lang['installed'] = 'Установлено:'; +$lang['downloadurl'] = 'Ссылка для скачивания:'; $lang['repository'] = 'Репозиторий:'; $lang['unknown'] = 'неизвестно'; +$lang['installed_version'] = 'Установленная версия:'; +$lang['install_date'] = 'Последнее обновление:'; +$lang['available_version'] = 'Доступная версия:'; +$lang['compatible'] = 'Совместим с:'; +$lang['depends'] = 'Зависит от:'; +$lang['similar'] = 'Похож на:'; +$lang['conflicts'] = 'Конфликтует с:'; +$lang['donate'] = 'Нравится?'; +$lang['donate_action'] = 'Купить автору кофе!'; $lang['repo_retry'] = 'Повторить'; +$lang['status_installed'] = 'установлено'; +$lang['status_not_installed'] = 'не установлено'; +$lang['status_protected'] = 'защищено'; $lang['status_enabled'] = 'включен'; $lang['status_disabled'] = 'отключено'; $lang['status_unmodifiable'] = 'неизменяемо'; @@ -39,3 +54,7 @@ $lang['status_bundled'] = 'в комплекте'; $lang['msg_enabled'] = 'Плагин %s включен'; $lang['msg_disabled'] = 'Плагин %s отключен'; $lang['msg_delete_success'] = 'Дополнение удалено'; +$lang['msg_template_install_success'] = 'Шаблон %s успешно установлен'; +$lang['msg_template_update_success'] = 'Шаблон %s успешно обновлён'; +$lang['msg_plugin_install_success'] = 'Плагин %s успешно установлен'; +$lang['msg_plugin_update_success'] = 'Плагин %s успешно обновлён'; -- cgit v1.2.3 From bc2be47d5025f6340908f521679a214a49066bab Mon Sep 17 00:00:00 2001 From: Rene Date: Mon, 17 Mar 2014 18:51:15 +0100 Subject: translation update --- lib/plugins/extension/lang/nl/lang.php | 48 +++++++++++++++++----------------- 1 file changed, 24 insertions(+), 24 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/nl/lang.php b/lib/plugins/extension/lang/nl/lang.php index 783168c2e..2983f9fee 100644 --- a/lib/plugins/extension/lang/nl/lang.php +++ b/lib/plugins/extension/lang/nl/lang.php @@ -31,30 +31,6 @@ $lang['extensionby'] = '%s by %s'; $lang['screenshot'] = 'Schermafdruk bij %s'; $lang['popularity'] = 'Populariteit:%s%%'; $lang['homepage_link'] = 'Dokumenten'; -$lang['msg_delete_success'] = 'Uitbreiding gedeinstalleerd'; -$lang['msg_template_install_success'] = 'Template %s werd succesvol geïnstalleerd'; -$lang['msg_template_update_success'] = 'Template %s werd succesvol ge-update'; -$lang['msg_plugin_install_success'] = 'Plugin %s werd succesvol geïnstalleerd'; -$lang['msg_plugin_update_success'] = 'Plugin %s werd succesvol ge-update'; -$lang['msg_upload_failed'] = 'Uploaden van het bestand is mislukt'; -$lang['missing_dependency'] = 'niet aanwezige of uitgeschakelde afhankelijkheid %s'; -$lang['security_issue'] = 'Veiligheids kwestie: %s'; -$lang['security_warning'] = 'Veiligheids Waarschuwing %s'; -$lang['update_available'] = 'Update: Nieuwe versie %s is beschikbaar.'; -$lang['wrong_folder'] = 'Plugin onjuist geïnstalleerd: Hernoem de plugin directory van "%s" naar"%s"'; -$lang['url_change'] = 'URL gewijzigd: Download URL is gewijzigd sinds de laatste download. Controleer of de nieuwe URL juist is voordat u de uitbreiding update.
    Nieuw:%s
    Vorig: %s'; -$lang['error_badurl'] = 'URLs moeten beginnen met http of https'; -$lang['error_dircreate'] = 'De tijdelijke map kon niet worden gemaakt om de download te ontvangen'; -$lang['error_download'] = 'Het is niet mogelijk het bestand te downloaden: %s'; -$lang['error_decompress'] = 'Onmogelijk om het gedownloade bestand uit te pakken. Dit is wellicht het gevolg van een onvolledige/onjuiste download, in welk geval u het nog eens moet proberen; of het compressie formaat is onbekend in welk geval u het bestand handmatig moet downloaden en installeren.'; -$lang['error_findfolder'] = 'Onmogelijk om de uitbreidings directory te vinden, u moet het zelf downloaden en installeren'; -$lang['error_copy'] = 'Er was een bestand kopieer fout tijdens het installeren van bestanden in directory %s: de schijf kan vol zijn of de bestand toegangs rechten kunnen onjuist zijn. Dit kan tot gevolg hebben dat de plugin slechts gedeeltelijk werd geïnstalleerd waardoor uw wiki installatie onstabiel is '; -$lang['noperms'] = 'Uitbreidings directory is niet schrijfbaar'; -$lang['notplperms'] = 'Template directory is niet schrijfbaar'; -$lang['nopluginperms'] = 'Plugin directory is niet schrijfbaar'; -$lang['git'] = 'De uitbreiding werd geïnstalleerd via git, u wilt deze hier wellicht niet aanpassen.'; -$lang['install_url'] = 'Installeer vanaf URL:'; -$lang['install_upload'] = 'Upload Uitbreiding:'; $lang['bugs_features'] = 'Bugs'; $lang['tags'] = 'Tags:'; $lang['author_hint'] = 'Zoek uitbreidingen van deze auteur:'; @@ -85,3 +61,27 @@ $lang['status_template'] = 'template'; $lang['status_bundled'] = 'Gebundeld'; $lang['msg_enabled'] = 'Plugin %s ingeschakeld'; $lang['msg_disabled'] = 'Plugin %s uitgeschakeld'; +$lang['msg_delete_success'] = 'Uitbreiding gedeinstalleerd'; +$lang['msg_template_install_success'] = 'Template %s werd succesvol geïnstalleerd'; +$lang['msg_template_update_success'] = 'Template %s werd succesvol ge-update'; +$lang['msg_plugin_install_success'] = 'Plugin %s werd succesvol geïnstalleerd'; +$lang['msg_plugin_update_success'] = 'Plugin %s werd succesvol ge-update'; +$lang['msg_upload_failed'] = 'Uploaden van het bestand is mislukt'; +$lang['missing_dependency'] = 'niet aanwezige of uitgeschakelde afhankelijkheid %s'; +$lang['security_issue'] = 'Veiligheids kwestie: %s'; +$lang['security_warning'] = 'Veiligheids Waarschuwing %s'; +$lang['update_available'] = 'Update: Nieuwe versie %s is beschikbaar.'; +$lang['wrong_folder'] = 'Plugin onjuist geïnstalleerd: Hernoem de plugin directory van "%s" naar"%s"'; +$lang['url_change'] = 'URL gewijzigd: Download URL is gewijzigd sinds de laatste download. Controleer of de nieuwe URL juist is voordat u de uitbreiding update.
    Nieuw:%s
    Vorig: %s'; +$lang['error_badurl'] = 'URLs moeten beginnen met http of https'; +$lang['error_dircreate'] = 'De tijdelijke map kon niet worden gemaakt om de download te ontvangen'; +$lang['error_download'] = 'Het is niet mogelijk het bestand te downloaden: %s'; +$lang['error_decompress'] = 'Onmogelijk om het gedownloade bestand uit te pakken. Dit is wellicht het gevolg van een onvolledige/onjuiste download, in welk geval u het nog eens moet proberen; of het compressie formaat is onbekend in welk geval u het bestand handmatig moet downloaden en installeren.'; +$lang['error_findfolder'] = 'Onmogelijk om de uitbreidings directory te vinden, u moet het zelf downloaden en installeren'; +$lang['error_copy'] = 'Er was een bestand kopieer fout tijdens het installeren van bestanden in directory %s: de schijf kan vol zijn of de bestand toegangs rechten kunnen onjuist zijn. Dit kan tot gevolg hebben dat de plugin slechts gedeeltelijk werd geïnstalleerd waardoor uw wiki installatie onstabiel is '; +$lang['noperms'] = 'Uitbreidings directory is niet schrijfbaar'; +$lang['notplperms'] = 'Template directory is niet schrijfbaar'; +$lang['nopluginperms'] = 'Plugin directory is niet schrijfbaar'; +$lang['git'] = 'De uitbreiding werd geïnstalleerd via git, u wilt deze hier wellicht niet aanpassen.'; +$lang['install_url'] = 'Installeer vanaf URL:'; +$lang['install_upload'] = 'Upload Uitbreiding:'; -- cgit v1.2.3 From 788d553a1ebe92bace39388b98a10c423cd9ba6f Mon Sep 17 00:00:00 2001 From: Young gon Cha Date: Thu, 3 Apr 2014 02:46:32 +0200 Subject: translation update --- lib/plugins/extension/lang/ko/lang.php | 52 ++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/plugins/extension/lang/ko/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ko/lang.php b/lib/plugins/extension/lang/ko/lang.php new file mode 100644 index 000000000..ce1f19921 --- /dev/null +++ b/lib/plugins/extension/lang/ko/lang.php @@ -0,0 +1,52 @@ + + */ +$lang['menu'] = '확장기능 관리자'; +$lang['tab_plugins'] = '설치된 플러그인'; +$lang['tab_templates'] = '설치된 템플릿'; +$lang['tab_search'] = '검색 설치'; +$lang['tab_install'] = '수동 설치'; +$lang['notimplemented'] = '이 기능은 아직 시행될 수 없습니다'; +$lang['notinstalled'] = '이 확장기능은 설치되지 않았습니다'; +$lang['alreadyenabled'] = '이 확장기능이 활성되었습니다'; +$lang['alreadydisabled'] = '이 확장기능이 비활성되었습니다'; +$lang['pluginlistsaveerror'] = '플러그인 목록을 저장 중 오류가 있었습니다'; +$lang['unknownauthor'] = '알 수 없는 제작자'; +$lang['unknownversion'] = '알 수 없는 버전'; +$lang['btn_info'] = '정보 더 보기'; +$lang['btn_update'] = '업데이트'; +$lang['btn_uninstall'] = '제거'; +$lang['btn_enable'] = '활성'; +$lang['btn_disable'] = '비활성'; +$lang['btn_install'] = '설치'; +$lang['btn_reinstall'] = '재설치'; +$lang['js']['reallydel'] = '이 확장기능을 정말 제거 하시겠습니까?'; +$lang['search_for'] = '확장기능 찾기:'; +$lang['search'] = '검색'; +$lang['homepage_link'] = '문서'; +$lang['bugs_features'] = '버그'; +$lang['tags'] = '태그:'; +$lang['author_hint'] = '이 제작자로 확장기능 검색'; +$lang['installed'] = '설치됨:'; +$lang['downloadurl'] = '다운로드 주소:'; +$lang['repository'] = '저장소:'; +$lang['unknown'] = '알 수 없음'; +$lang['installed_version'] = '설치된 버전:'; +$lang['install_date'] = '마지막 업데이트:'; +$lang['available_version'] = '가능한 버전:'; +$lang['repo_retry'] = '재시도'; +$lang['status'] = '상태:'; +$lang['status_installed'] = '설치됨'; +$lang['status_not_installed'] = '설치 안됨'; +$lang['status_protected'] = '보호됨'; +$lang['status_enabled'] = '활성됨'; +$lang['status_disabled'] = '비활성됨'; +$lang['status_plugin'] = '플러그인'; +$lang['status_template'] = '템플릿'; +$lang['msg_delete_success'] = '확장기능 제거됨'; +$lang['msg_upload_failed'] = '파일 업로딩 실패함'; +$lang['error_badurl'] = '주소는 http나 https로 시작해야 합니다'; -- cgit v1.2.3 From e408b35c706784d375739bc5f6bc89e31badfa7a Mon Sep 17 00:00:00 2001 From: qinghao Date: Sat, 12 Apr 2014 10:46:02 +0200 Subject: translation update --- lib/plugins/extension/lang/zh/intro_plugins.txt | 1 + lib/plugins/extension/lang/zh/lang.php | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 lib/plugins/extension/lang/zh/intro_plugins.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/zh/intro_plugins.txt b/lib/plugins/extension/lang/zh/intro_plugins.txt new file mode 100644 index 000000000..69cb343b3 --- /dev/null +++ b/lib/plugins/extension/lang/zh/intro_plugins.txt @@ -0,0 +1 @@ +这些是你当前已经安装的插件。你可以在这里启用和禁用甚至卸载它们。插件的更新信息也显示在这,请一定在更新之前阅读插件的文档。 \ No newline at end of file diff --git a/lib/plugins/extension/lang/zh/lang.php b/lib/plugins/extension/lang/zh/lang.php index b9db01540..4d40acc1d 100644 --- a/lib/plugins/extension/lang/zh/lang.php +++ b/lib/plugins/extension/lang/zh/lang.php @@ -5,6 +5,7 @@ * * @author Cupen * @author xiqingongzi + * @author qinghao */ $lang['menu'] = '扩展管理器'; $lang['tab_plugins'] = '安装插件'; @@ -41,10 +42,31 @@ $lang['repository'] = '版本库:'; $lang['unknown'] = '未知的'; $lang['installed_version'] = '已安装版本:'; $lang['install_date'] = '您的最后一次升级:'; +$lang['compatible'] = '兼容于:'; +$lang['depends'] = '依赖于:'; +$lang['similar'] = '相似于:'; +$lang['conflicts'] = '冲突于:'; $lang['donate'] = '喜欢?'; $lang['donate_action'] = '捐给作者一杯咖啡钱!'; $lang['repo_retry'] = '重试'; +$lang['provides'] = '提供:'; $lang['status'] = '现状:'; $lang['status_installed'] = '已安装的'; +$lang['status_not_installed'] = '未安装'; +$lang['status_protected'] = '受保护'; +$lang['status_enabled'] = '启用'; +$lang['status_disabled'] = '禁用'; +$lang['status_unmodifiable'] = '不可修改'; $lang['status_plugin'] = '插件'; $lang['status_template'] = '模板'; +$lang['msg_enabled'] = '插件 %s 已启用'; +$lang['msg_disabled'] = '插件 %s 已禁用'; +$lang['msg_delete_success'] = '插件已经卸载'; +$lang['msg_template_install_success'] = '模板 %s 安装成功'; +$lang['msg_template_update_success'] = '模板 %s 更新成功'; +$lang['msg_plugin_install_success'] = '插件 %s 安装成功'; +$lang['msg_plugin_update_success'] = '插件 %s 更新成功'; +$lang['msg_upload_failed'] = '上传文件失败'; +$lang['missing_dependency'] = '缺少或者被禁用依赖: %s'; +$lang['security_issue'] = '安全问题: %s'; +$lang['security_warning'] = '安全警告: %s'; -- cgit v1.2.3 From fc4ff0c349240d12ff91559183e1103ad2c5fa91 Mon Sep 17 00:00:00 2001 From: Antonio Bueno Date: Wed, 16 Apr 2014 14:36:06 +0200 Subject: translation update --- lib/plugins/extension/lang/es/lang.php | 52 ++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/plugins/extension/lang/es/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/es/lang.php b/lib/plugins/extension/lang/es/lang.php new file mode 100644 index 000000000..7de2f5265 --- /dev/null +++ b/lib/plugins/extension/lang/es/lang.php @@ -0,0 +1,52 @@ + + */ +$lang['tab_plugins'] = 'Plugins instalados'; +$lang['tab_templates'] = 'Plantillas instaladas'; +$lang['tab_search'] = 'Buscar e instalar'; +$lang['tab_install'] = 'Instalación manual'; +$lang['notinstalled'] = 'Esta expensión no está instalada'; +$lang['alreadyenabled'] = 'Esta extensión ya había sido activada'; +$lang['alreadydisabled'] = 'Esta extensión ya había sido desactivada'; +$lang['unknownauthor'] = 'autor desconocido'; +$lang['unknownversion'] = 'versión desconocida'; +$lang['btn_info'] = 'Mostrar más información'; +$lang['btn_update'] = 'Actualizar'; +$lang['btn_uninstall'] = 'Desinstalar'; +$lang['btn_enable'] = 'Activar'; +$lang['btn_disable'] = 'Desactivar'; +$lang['btn_install'] = 'Instalar'; +$lang['btn_reinstall'] = 'Reinstalar'; +$lang['search'] = 'Buscar'; +$lang['homepage_link'] = 'Documentos'; +$lang['bugs_features'] = 'Bugs'; +$lang['tags'] = 'Etiquetas:'; +$lang['installed'] = 'Instalado:'; +$lang['downloadurl'] = 'URL de descarga:'; +$lang['repository'] = 'Repositorio:'; +$lang['installed_version'] = 'Versión instalada:'; +$lang['available_version'] = 'Versión disponible:'; +$lang['compatible'] = 'Compatible con:'; +$lang['depends'] = 'Dependencias:'; +$lang['donate_action'] = '¡Págale un café al autor!'; +$lang['status'] = 'Estado:'; +$lang['status_installed'] = 'instalado'; +$lang['status_not_installed'] = 'no instalado'; +$lang['status_protected'] = 'protegido'; +$lang['status_enabled'] = 'activado'; +$lang['status_disabled'] = 'desactivado'; +$lang['status_unmodifiable'] = 'no modificable'; +$lang['status_plugin'] = 'plugin'; +$lang['status_template'] = 'plantilla'; +$lang['msg_enabled'] = 'Plugin %s activado'; +$lang['msg_disabled'] = 'Plugin %s desactivado'; +$lang['msg_delete_success'] = 'Extensión desinstalada'; +$lang['msg_template_install_success'] = 'Plantilla %s instalada con éxito'; +$lang['msg_template_update_success'] = 'Plantilla %s actualizada con éxito'; +$lang['msg_plugin_install_success'] = 'Plugin %s instalado con éxito'; +$lang['msg_plugin_update_success'] = 'Plugin %s actualizado con éxito'; +$lang['msg_upload_failed'] = 'Falló la carga del archivo'; -- cgit v1.2.3 From da2c1fba42556340dac10a521b9a9e153ded4669 Mon Sep 17 00:00:00 2001 From: Myeongjin Date: Tue, 22 Apr 2014 10:51:03 +0200 Subject: translation update --- lib/plugins/extension/lang/ko/intro_install.txt | 1 + lib/plugins/extension/lang/ko/intro_plugins.txt | 1 + lib/plugins/extension/lang/ko/intro_search.txt | 1 + lib/plugins/extension/lang/ko/intro_templates.txt | 1 + lib/plugins/extension/lang/ko/lang.php | 80 ++++++++++++++++------- 5 files changed, 62 insertions(+), 22 deletions(-) create mode 100644 lib/plugins/extension/lang/ko/intro_install.txt create mode 100644 lib/plugins/extension/lang/ko/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/ko/intro_search.txt create mode 100644 lib/plugins/extension/lang/ko/intro_templates.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ko/intro_install.txt b/lib/plugins/extension/lang/ko/intro_install.txt new file mode 100644 index 000000000..269df29cc --- /dev/null +++ b/lib/plugins/extension/lang/ko/intro_install.txt @@ -0,0 +1 @@ +여기에 플러그인과 템플릿을 수동으로 올리거나 직접 다운로드 URL을 제공하여 수동으로 설치할 수 있습니다. \ No newline at end of file diff --git a/lib/plugins/extension/lang/ko/intro_plugins.txt b/lib/plugins/extension/lang/ko/intro_plugins.txt new file mode 100644 index 000000000..9ac7a3d89 --- /dev/null +++ b/lib/plugins/extension/lang/ko/intro_plugins.txt @@ -0,0 +1 @@ +도쿠위키에 현재 설치된 플러그인입니다. 여기에서 플러그인을 활성화 또는 비활성화하거나 심지어 완전히 제거할 수 있습니다. 또한 플러그인 업데이트는 여기에 보여집니다. 업데이트하기 전에 플러그인의 설명문서를 읽으십시오. \ No newline at end of file diff --git a/lib/plugins/extension/lang/ko/intro_search.txt b/lib/plugins/extension/lang/ko/intro_search.txt new file mode 100644 index 000000000..b6760264e --- /dev/null +++ b/lib/plugins/extension/lang/ko/intro_search.txt @@ -0,0 +1 @@ +이 탭은 도쿠위키를 위한 사용할 수 있는 모든 타사 플러그인과 템플릿에 접근하도록 제공합니다. 타사 코드를 설치하면 **보안 위험에 노출**될 수 있음을 유의하십시오, 먼저 [[doku>security#plugin_security|플러그인 보안]]에 대해 읽을 수 있습니다. \ No newline at end of file diff --git a/lib/plugins/extension/lang/ko/intro_templates.txt b/lib/plugins/extension/lang/ko/intro_templates.txt new file mode 100644 index 000000000..d4320b880 --- /dev/null +++ b/lib/plugins/extension/lang/ko/intro_templates.txt @@ -0,0 +1 @@ +도쿠위키에 현재 설치된 템플릿입니다. [[?do=admin&page=config|환경 설정 관리자]]에서 사용하는 템플릿을 선택할 수 있습니다. \ No newline at end of file diff --git a/lib/plugins/extension/lang/ko/lang.php b/lib/plugins/extension/lang/ko/lang.php index ce1f19921..eed84c2fa 100644 --- a/lib/plugins/extension/lang/ko/lang.php +++ b/lib/plugins/extension/lang/ko/lang.php @@ -4,49 +4,85 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Young gon Cha + * @author Myeongjin */ -$lang['menu'] = '확장기능 관리자'; +$lang['menu'] = '확장 기능 관리자'; $lang['tab_plugins'] = '설치된 플러그인'; $lang['tab_templates'] = '설치된 템플릿'; -$lang['tab_search'] = '검색 설치'; +$lang['tab_search'] = '검색하고 설치'; $lang['tab_install'] = '수동 설치'; -$lang['notimplemented'] = '이 기능은 아직 시행될 수 없습니다'; -$lang['notinstalled'] = '이 확장기능은 설치되지 않았습니다'; -$lang['alreadyenabled'] = '이 확장기능이 활성되었습니다'; -$lang['alreadydisabled'] = '이 확장기능이 비활성되었습니다'; -$lang['pluginlistsaveerror'] = '플러그인 목록을 저장 중 오류가 있었습니다'; -$lang['unknownauthor'] = '알 수 없는 제작자'; +$lang['notimplemented'] = '이 기능은 아직 구현되지 않았습니다'; +$lang['notinstalled'] = '이 확장 기능은 설치되어 있지 않습니다'; +$lang['alreadyenabled'] = '이 확장 기능이 이미 활성화되어 있습니다'; +$lang['alreadydisabled'] = '이 확장 기능이 이미 비활성화되어 있습니다'; +$lang['pluginlistsaveerror'] = '플러그인 목록을 저장하는 중 오류가 있었습니다'; +$lang['unknownauthor'] = '알 수 없는 저자'; $lang['unknownversion'] = '알 수 없는 버전'; $lang['btn_info'] = '정보 더 보기'; $lang['btn_update'] = '업데이트'; $lang['btn_uninstall'] = '제거'; -$lang['btn_enable'] = '활성'; -$lang['btn_disable'] = '비활성'; +$lang['btn_enable'] = '활성화'; +$lang['btn_disable'] = '비활성화'; $lang['btn_install'] = '설치'; -$lang['btn_reinstall'] = '재설치'; -$lang['js']['reallydel'] = '이 확장기능을 정말 제거 하시겠습니까?'; -$lang['search_for'] = '확장기능 찾기:'; +$lang['btn_reinstall'] = '다시 설치'; +$lang['js']['reallydel'] = '정말 이 확장 기능을 제거하겠습니까?'; +$lang['search_for'] = '확장 기능 검색:'; $lang['search'] = '검색'; +$lang['extensionby'] = '%s (저자 %s)'; +$lang['screenshot'] = '%s의 스크린샷'; +$lang['popularity'] = '인기: %s%%'; $lang['homepage_link'] = '문서'; $lang['bugs_features'] = '버그'; $lang['tags'] = '태그:'; -$lang['author_hint'] = '이 제작자로 확장기능 검색'; +$lang['author_hint'] = '이 저자로 확장 기능 검색'; $lang['installed'] = '설치됨:'; -$lang['downloadurl'] = '다운로드 주소:'; +$lang['downloadurl'] = '다운로드 URL:'; $lang['repository'] = '저장소:'; $lang['unknown'] = '알 수 없음'; $lang['installed_version'] = '설치된 버전:'; $lang['install_date'] = '마지막 업데이트:'; $lang['available_version'] = '가능한 버전:'; -$lang['repo_retry'] = '재시도'; +$lang['compatible'] = '다음과의 호환성:'; +$lang['depends'] = '다음에 의존:'; +$lang['similar'] = '다음과 비슷:'; +$lang['conflicts'] = '다음과 충돌:'; +$lang['donate'] = '이것이 좋나요?'; +$lang['donate_action'] = '저자에게 커피를 사주세요!'; +$lang['repo_retry'] = '다시 시도'; +$lang['provides'] = '제공:'; $lang['status'] = '상태:'; $lang['status_installed'] = '설치됨'; -$lang['status_not_installed'] = '설치 안됨'; +$lang['status_not_installed'] = '설치되지 않음'; $lang['status_protected'] = '보호됨'; -$lang['status_enabled'] = '활성됨'; -$lang['status_disabled'] = '비활성됨'; +$lang['status_enabled'] = '활성화됨'; +$lang['status_disabled'] = '비활성화됨'; +$lang['status_unmodifiable'] = '수정할 수 없음'; $lang['status_plugin'] = '플러그인'; $lang['status_template'] = '템플릿'; -$lang['msg_delete_success'] = '확장기능 제거됨'; -$lang['msg_upload_failed'] = '파일 업로딩 실패함'; -$lang['error_badurl'] = '주소는 http나 https로 시작해야 합니다'; +$lang['status_bundled'] = '포함'; +$lang['msg_enabled'] = '%s 플러그인이 활성화되었습니다'; +$lang['msg_disabled'] = '%s 플러그인이 비활성화되었습니다'; +$lang['msg_delete_success'] = '확장 기능이 제거되었습니다'; +$lang['msg_template_install_success'] = '%s 템플릿을 성공적으로 설치했습니다'; +$lang['msg_template_update_success'] = '%s 템플릿을 성공적으로 업데이트했습니다'; +$lang['msg_plugin_install_success'] = '%s 플러그인을 성공적으로 설치했습니다'; +$lang['msg_plugin_update_success'] = '%s 플러그인을 성공적으로 업데이트했습니다'; +$lang['msg_upload_failed'] = '파일 올리기에 실패했습니다'; +$lang['missing_dependency'] = '의존성을 잃었거나 비활성화되어 있습니다: %s'; +$lang['security_issue'] = '보안 문제: %s'; +$lang['security_warning'] = '보안 경고: %s'; +$lang['update_available'] = '업데이트: 새 버전 %s(을)를 사용할 수 있습니다.'; +$lang['wrong_folder'] = '플러그인이 올바르지 않게 설치됨: 플러그인 디렉터리를 "%s"에서 "%s"로 이름을 바꾸세요.'; +$lang['url_change'] = 'URL이 바뀜: 다운로드 URL이 최신 다운로드 이래 바뀌었습니다. 확장 기능을 업데이트하기 전에 새 URL이 올바른지 확인하세요.
    새 URL: %s
    오래된 URL: %s'; +$lang['error_badurl'] = 'URL은 http나 https로 시작해야 합니다'; +$lang['error_dircreate'] = '다운로드를 받을 임시 폴더를 만들 수 없습니다'; +$lang['error_download'] = '파일을 다운로드할 수 없습니다: %s'; +$lang['error_decompress'] = '다운로드한 파일의 압축을 풀 수 없습니다. 이는 아마도 잘못된 다운로드의 결과로, 이럴 경우 다시 시도해야 합니다; 또는 압축 형식을 알 수 없으며, 이럴 경우 수동으로 다운로드하고 설치해야 합니다.'; +$lang['error_findfolder'] = '확장 기능 디렉터리를 식별할 수 없습니다, 수동으로 다운로드하고 설치해야 합니다'; +$lang['error_copy'] = '%s 디렉터리에 파일을 설치하는 동안 파일 복사 오류가 발생했습니다: 디스크가 꽉 찼거나 파일 접근 권한이 잘못되었을 수도 있습니다. 플러그인 설치가 부분적으로 되었거나 불안정하게 위키 설치가 되었을 수 있습니다.'; +$lang['noperms'] = '확장 기능 디렉터리에 쓸 수 없습니다'; +$lang['notplperms'] = '임시 디렉터리에 쓸 수 없습니다'; +$lang['nopluginperms'] = '플러그인 디렉터리에 쓸 수 없습니다'; +$lang['git'] = '이 확장 기능은 git을 통해 설치되었으며, 여기에서 업데이트할 수 없을 수 있습니다.'; +$lang['install_url'] = 'URL에서 설치:'; +$lang['install_upload'] = '확장 기능 올리기:'; -- cgit v1.2.3 From 6dda14c94f6b8447a2c7f8e57cae0d1c536a9f35 Mon Sep 17 00:00:00 2001 From: Myeongjin Date: Sun, 27 Apr 2014 02:21:03 +0200 Subject: translation update --- lib/plugins/extension/lang/ko/lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ko/lang.php b/lib/plugins/extension/lang/ko/lang.php index eed84c2fa..db0a49aef 100644 --- a/lib/plugins/extension/lang/ko/lang.php +++ b/lib/plugins/extension/lang/ko/lang.php @@ -73,7 +73,7 @@ $lang['security_issue'] = '보안 문제: %s'; $lang['security_warning'] = '보안 경고: %s'; $lang['update_available'] = '업데이트: 새 버전 %s(을)를 사용할 수 있습니다.'; $lang['wrong_folder'] = '플러그인이 올바르지 않게 설치됨: 플러그인 디렉터리를 "%s"에서 "%s"로 이름을 바꾸세요.'; -$lang['url_change'] = 'URL이 바뀜: 다운로드 URL이 최신 다운로드 이래 바뀌었습니다. 확장 기능을 업데이트하기 전에 새 URL이 올바른지 확인하세요.
    새 URL: %s
    오래된 URL: %s'; +$lang['url_change'] = 'URL이 바뀜: 다운로드 URL이 최신 다운로드 이래로 바뀌었습니다. 확장 기능을 업데이트하기 전에 새 URL이 올바른지 확인하세요.
    새 URL: %s
    오래된 URL: %s'; $lang['error_badurl'] = 'URL은 http나 https로 시작해야 합니다'; $lang['error_dircreate'] = '다운로드를 받을 임시 폴더를 만들 수 없습니다'; $lang['error_download'] = '파일을 다운로드할 수 없습니다: %s'; -- cgit v1.2.3 From 3baf05bf65b65b4a1ecbf0ea7872630586ffa6b9 Mon Sep 17 00:00:00 2001 From: Hoisl Date: Tue, 6 May 2014 22:16:13 +0200 Subject: translation update --- lib/plugins/extension/lang/de/lang.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/de/lang.php b/lib/plugins/extension/lang/de/lang.php index 8068ce830..89c6b55b7 100644 --- a/lib/plugins/extension/lang/de/lang.php +++ b/lib/plugins/extension/lang/de/lang.php @@ -6,6 +6,7 @@ * @author H. Richard * @author Joerg * @author Simon + * @author Hoisl */ $lang['menu'] = 'Erweiterungen verwalten'; $lang['tab_plugins'] = 'Installierte Plugins'; @@ -74,6 +75,7 @@ $lang['security_issue'] = 'Sicherheitsproblem: %s'; $lang['security_warning'] = 'Sicherheitswarnung: %s'; $lang['update_available'] = 'Update: Version %s steht zum Download bereit.'; $lang['wrong_folder'] = 'Plugin wurde nicht korrekt installiert: Benennen Sie das Plugin-Verzeichnis "%s" in "%s" um.'; +$lang['url_change'] = 'URL geändert: Die Download URL wurde seit dem letzten Download geändert. Internetadresse vor Aktualisierung der Erweiterung auf Gültigkeit prüfen.
    Neu: %s
    Alt: %s'; $lang['error_badurl'] = 'URLs sollten mit http oder https beginnen'; $lang['error_dircreate'] = 'Temporären Ordner konnte nicht erstellt werden, um Download zu empfangen'; $lang['error_download'] = 'Download der Datei: %s nicht möglich.'; -- cgit v1.2.3 From bd0092a4db2ae72d5c564d383810c0b65c9b9ece Mon Sep 17 00:00:00 2001 From: Rene Date: Thu, 8 May 2014 13:11:03 +0200 Subject: translation update --- lib/plugins/extension/lang/nl/intro_search.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/nl/intro_search.txt b/lib/plugins/extension/lang/nl/intro_search.txt index 8fc3900ad..f0c8d7435 100644 --- a/lib/plugins/extension/lang/nl/intro_search.txt +++ b/lib/plugins/extension/lang/nl/intro_search.txt @@ -1 +1 @@ -Deze tab verschaft u toegang tot alle plugins en templates vervaardigd door derden en bestemd voor Dokuwiki. Houdt er rekening meel dat indien u Plugins van derden installeerd deze een **veiligheids risico ** kunnen bevatten, geadviseerd wordt om eerst te lezen [[doku>security#plugin_security|plugin security]]. \ No newline at end of file +Deze tab verschaft u toegang tot alle plugins en templates vervaardigd door derden en bestemd voor Dokuwiki. Houdt er rekening mee dat indien u Plugins van derden installeert deze een **veiligheids risico ** kunnen bevatten, geadviseerd wordt om eerst te lezen [[doku>security#plugin_security|plugin security]]. \ No newline at end of file -- cgit v1.2.3 From 90bedf259b8cdbaf36db4b77301e271d0865c642 Mon Sep 17 00:00:00 2001 From: Rene Date: Fri, 9 May 2014 21:22:20 +0200 Subject: translation update --- lib/plugins/extension/lang/nl/intro_plugins.txt | 2 +- lib/plugins/extension/lang/nl/intro_templates.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/nl/intro_plugins.txt b/lib/plugins/extension/lang/nl/intro_plugins.txt index 0077aca30..e12bdf0f8 100644 --- a/lib/plugins/extension/lang/nl/intro_plugins.txt +++ b/lib/plugins/extension/lang/nl/intro_plugins.txt @@ -1 +1 @@ -Dit zijn de momenteel in uw Dokuwiki geïnstalleerde plugins. U kunt deze hier aan of uitschakelen danwel geheel deïnstalleren. Plugin updates zijn hier ook opgenomen, lees de pluin documentatie voordat u update. \ No newline at end of file +Dit zijn de momenteel in uw Dokuwiki geïnstalleerde plugins. U kunt deze hier aan of uitschakelen danwel geheel deïnstalleren. Plugin updates zijn hier ook opgenomen, lees de plugin documentatie voordat u update. \ No newline at end of file diff --git a/lib/plugins/extension/lang/nl/intro_templates.txt b/lib/plugins/extension/lang/nl/intro_templates.txt index 5ef23dadf..52c96cef7 100644 --- a/lib/plugins/extension/lang/nl/intro_templates.txt +++ b/lib/plugins/extension/lang/nl/intro_templates.txt @@ -1 +1 @@ -Deze templates zijn thans in DokuWiki geïnstalleerd. U kent een template selecteren middels [[?do=admin&page=config|Configuration Manager]] . \ No newline at end of file +Deze templates zijn thans in DokuWiki geïnstalleerd. U kunt een template selecteren middels [[?do=admin&page=config|Configuration Manager]] . \ No newline at end of file -- cgit v1.2.3 From 436a2a19870a5c73575f574040be44d333f55409 Mon Sep 17 00:00:00 2001 From: Hideaki SAWADA Date: Sat, 10 May 2014 10:21:16 +0200 Subject: translation update --- lib/plugins/extension/lang/ja/lang.php | 39 ++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ja/lang.php b/lib/plugins/extension/lang/ja/lang.php index 0401d7630..b42e4aefd 100644 --- a/lib/plugins/extension/lang/ja/lang.php +++ b/lib/plugins/extension/lang/ja/lang.php @@ -8,6 +8,7 @@ $lang['menu'] = '拡張機能管理'; $lang['tab_plugins'] = 'インストール済プラグイン'; $lang['tab_templates'] = 'インストール済テンプレート'; +$lang['tab_search'] = '検索とインストール'; $lang['tab_install'] = '手動インストール'; $lang['notimplemented'] = 'この機能は未実装です。'; $lang['notinstalled'] = 'この拡張機能はインストールされていません。'; @@ -17,17 +18,38 @@ $lang['pluginlistsaveerror'] = 'プラグイン一覧の保存中にエラー $lang['unknownauthor'] = '作者不明'; $lang['unknownversion'] = 'バージョン不明'; $lang['btn_info'] = '詳細情報を表示する。'; -$lang['btn_update'] = 'アップデート'; +$lang['btn_update'] = '更新'; $lang['btn_uninstall'] = 'アンインストール'; $lang['btn_enable'] = '有効化'; $lang['btn_disable'] = '無効化'; $lang['btn_install'] = 'インストール'; $lang['btn_reinstall'] = '再インストール'; $lang['js']['reallydel'] = 'この拡張機能を本当にアンインストールしますか?'; +$lang['search_for'] = '拡張機能の検索:'; +$lang['search'] = '検索'; +$lang['extensionby'] = '%s 作者: %s'; +$lang['screenshot'] = '%s のスクリーンショット'; +$lang['popularity'] = '利用状況:%s%%'; +$lang['homepage_link'] = '解説'; +$lang['bugs_features'] = 'バグ'; +$lang['tags'] = 'タグ:'; +$lang['author_hint'] = 'この作者で拡張機能を検索'; +$lang['installed'] = 'インストール済:'; $lang['downloadurl'] = 'ダウンロード URL:'; $lang['repository'] = 'リポジトリ:'; +$lang['unknown'] = '不明'; +$lang['installed_version'] = 'インストール済バージョン:'; +$lang['install_date'] = '最終更新日:'; +$lang['available_version'] = '利用可能バージョン:'; +$lang['compatible'] = '互換:'; $lang['depends'] = '依存:'; $lang['similar'] = '類似:'; +$lang['conflicts'] = '競合:'; +$lang['donate'] = 'お気に入り?'; +$lang['donate_action'] = '寄付先'; +$lang['repo_retry'] = '再実行'; +$lang['provides'] = '提供:'; +$lang['status'] = '状態:'; $lang['status_installed'] = 'インストール済'; $lang['status_not_installed'] = '未インストール'; $lang['status_enabled'] = '有効'; @@ -39,16 +61,25 @@ $lang['msg_enabled'] = '%s プラグインを有効化しました。' $lang['msg_disabled'] = '%s プラグインを無効化しました。'; $lang['msg_delete_success'] = '拡張機能をアンインストールしました。'; $lang['msg_template_install_success'] = '%s テンプレートをインストールできました。'; -$lang['msg_template_update_success'] = '%s テンプレートをアップデートできました。'; +$lang['msg_template_update_success'] = '%s テンプレートを更新できました。'; $lang['msg_plugin_install_success'] = '%s プラグインをインストールできました。'; -$lang['msg_plugin_update_success'] = '%s プラグインをアップデートできました。'; +$lang['msg_plugin_update_success'] = '%s プラグインを更新できました。'; $lang['msg_upload_failed'] = 'ファイルのアップロードに失敗しました。'; +$lang['missing_dependency'] = '依存関係が欠落または無効: %s'; $lang['security_issue'] = 'セキュリティ問題: %s'; $lang['security_warning'] = 'セキュリティ警告: %s'; -$lang['update_available'] = 'アップデート:%sの新バージョンが利用可能です。 '; +$lang['update_available'] = '更新: %sの新バージョンが利用可能です。'; +$lang['wrong_folder'] = 'プラグインは正しくインストールされませんでした: プラグインのディレクトリを "%s" から "%s" へ変更して下さい。'; +$lang['url_change'] = 'URL が変更されました: 最後にダウンロードした後、ダウンロード URL が変更されました。拡張機能のアップデート前に新 URL が正しいかを確認して下さい。
    新:%s
    旧:%s'; $lang['error_badurl'] = 'URLはhttpかhttpsで始まる必要があります。'; $lang['error_dircreate'] = 'ダウンロード用の一時フォルダが作成できません。'; $lang['error_download'] = 'ファイルをダウンロードできません:%s'; +$lang['error_decompress'] = 'ダウンロードしたファイルを解凍できません。ダウンロードの失敗の結果であれば、再度試して下さい。圧縮形式が不明の場合は、手動でダウンロード・インストールしてください。'; +$lang['error_findfolder'] = '拡張機能ディレクトリを認識できません。手動でダウンロード・インストールしてください。'; +$lang['error_copy'] = '%s ディレクトリのファイルをインストールしようとした時、ファイルコピーエラーが発生しました:ディスクがいっぱいかもしれませんし、ファイルのアクセス権が正しくないかもしれません。プラグインが一部分インストールされ、wiki が不安定になるかもしれません。'; $lang['noperms'] = '拡張機能ディレクトリが書き込み不可です。'; $lang['notplperms'] = 'テンプレートディレクトリが書き込み不可です。'; $lang['nopluginperms'] = 'プラグインディレクトリが書き込み不可です。'; +$lang['git'] = 'この拡張機能は Git 経由でインストールされており、ここで更新すべきでないかもしれません。'; +$lang['install_url'] = 'URL からインストール:'; +$lang['install_upload'] = '拡張機能をアップロード:'; -- cgit v1.2.3 From bc34cd3821f87b31d4259fe33c4c853eb1245df8 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 10 May 2014 14:33:51 +0200 Subject: added missing translation string in extension manager --- lib/plugins/extension/lang/en/lang.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 5224f694a..72c9b9e2d 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -96,4 +96,6 @@ $lang['nopluginperms'] = 'Plugin directory is not writable'; $lang['git'] = 'This extension was installed via git, you may not want to update it here.'; $lang['install_url'] = 'Install from URL:'; -$lang['install_upload'] = 'Upload Extension:'; \ No newline at end of file +$lang['install_upload'] = 'Upload Extension:'; + +$lang['repo_error'] = 'The plugin repository could not be contacted. Make sure your server is allowed to contact www.dokuwiki.org and check your proxy settings.'; \ No newline at end of file -- cgit v1.2.3 From 52ab27d83d0fa4f6be37eb2d4d58d6c51b76e66f Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 10 May 2014 14:43:50 +0200 Subject: corrected german translation --- lib/plugins/extension/lang/de/lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/de/lang.php b/lib/plugins/extension/lang/de/lang.php index 89c6b55b7..b0e3b4ff7 100644 --- a/lib/plugins/extension/lang/de/lang.php +++ b/lib/plugins/extension/lang/de/lang.php @@ -85,6 +85,6 @@ $lang['error_copy'] = 'Beim Versuch Dateien in den Ordner %s $lang['noperms'] = 'Das Erweiterungs-Verzeichnis ist schreibgeschützt'; $lang['notplperms'] = 'Das Template-Verzeichnis ist schreibgeschützt'; $lang['nopluginperms'] = 'Das Plugin-Verzeichnis ist schreibgeschützt'; -$lang['git'] = 'Diese Erweiterung wurde über git installiert, daher kann diese nicht hier aktualisiert werden.'; +$lang['git'] = 'Diese Erweiterung wurde über git installiert und sollte daher nicht hier aktualisiert werden.'; $lang['install_url'] = 'Von Webadresse (URL) installieren'; $lang['install_upload'] = 'Erweiterung hochladen:'; -- cgit v1.2.3 From 811653d71565cce94ca1b27f4cdebc60769e2d11 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 10 May 2014 15:18:20 +0200 Subject: fix icon for plugins following templates in extension manager --- lib/plugins/extension/helper/extension.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 7958cd2da..43e4452c0 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -57,6 +57,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { if(substr($id, 0 , 9) == 'template:'){ $this->base = substr($id, 9); $this->is_template = true; + } else { + $this->is_template = false; } $this->localInfo = array(); -- cgit v1.2.3 From 227a9832a9d65a12d88704e2bf18db63dae1ad57 Mon Sep 17 00:00:00 2001 From: lainme Date: Tue, 13 May 2014 06:36:05 +0200 Subject: translation update --- lib/plugins/extension/lang/zh/lang.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/zh/lang.php b/lib/plugins/extension/lang/zh/lang.php index 4d40acc1d..0264f3e9c 100644 --- a/lib/plugins/extension/lang/zh/lang.php +++ b/lib/plugins/extension/lang/zh/lang.php @@ -6,6 +6,7 @@ * @author Cupen * @author xiqingongzi * @author qinghao + * @author lainme */ $lang['menu'] = '扩展管理器'; $lang['tab_plugins'] = '安装插件'; @@ -42,6 +43,7 @@ $lang['repository'] = '版本库:'; $lang['unknown'] = '未知的'; $lang['installed_version'] = '已安装版本:'; $lang['install_date'] = '您的最后一次升级:'; +$lang['available_version'] = '可用版本:'; $lang['compatible'] = '兼容于:'; $lang['depends'] = '依赖于:'; $lang['similar'] = '相似于:'; @@ -59,6 +61,7 @@ $lang['status_disabled'] = '禁用'; $lang['status_unmodifiable'] = '不可修改'; $lang['status_plugin'] = '插件'; $lang['status_template'] = '模板'; +$lang['status_bundled'] = '内建'; $lang['msg_enabled'] = '插件 %s 已启用'; $lang['msg_disabled'] = '插件 %s 已禁用'; $lang['msg_delete_success'] = '插件已经卸载'; @@ -70,3 +73,19 @@ $lang['msg_upload_failed'] = '上传文件失败'; $lang['missing_dependency'] = '缺少或者被禁用依赖: %s'; $lang['security_issue'] = '安全问题: %s'; $lang['security_warning'] = '安全警告: %s'; +$lang['update_available'] = '更新:新版本 %s 已经可用。'; +$lang['wrong_folder'] = '插件安装不正确:重命名插件目录 "%s" 为 "%s"。'; +$lang['url_change'] = 'URL已改变:自上次下载以来的下载 URL 已经改变。请在更新扩展前检查新 URL 是否有效。
    新的:%s
    旧的:%s'; +$lang['error_badurl'] = 'URL 应当以 http 或者 https 作为开头'; +$lang['error_dircreate'] = '无法创建用于保存下载的临时文件夹'; +$lang['error_download'] = '无法下载文件:%s'; +$lang['error_decompress'] = '无法解压下载的文件。这可能是由于文件损坏,在这种情况下您可以重试。这也可能是由于压缩格式是未知的,在这种情况下您需要手动下载并且安装。'; +$lang['error_findfolder'] = '无法识别扩展目录,您需要手动下载和安装'; +$lang['error_copy'] = '在尝试安装文件到目录 %s 时出现文件复制错误:磁盘可能已满或者文件访问权限不正确。这可能导致插件被部分安装并使您的维基处在不稳定状态'; +$lang['noperms'] = '扩展目录不可写'; +$lang['notplperms'] = '模板目录不可写'; +$lang['nopluginperms'] = '插件目录不可写'; +$lang['git'] = '这个扩展是通过 git 安装的,您可能不想在这里升级它'; +$lang['install_url'] = '从 URL 安装:'; +$lang['install_upload'] = '上传扩展:'; +$lang['repo_error'] = '无法连接到插件仓库。请确定您的服务器可以连接 www.dokuwiki.org 并检查您的代理设置。'; -- cgit v1.2.3 From b5638884124386a376237d025d6a68583e61e1e4 Mon Sep 17 00:00:00 2001 From: Rene Date: Tue, 13 May 2014 12:56:02 +0200 Subject: translation update --- lib/plugins/extension/lang/nl/lang.php | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/nl/lang.php b/lib/plugins/extension/lang/nl/lang.php index 2983f9fee..f1dc125da 100644 --- a/lib/plugins/extension/lang/nl/lang.php +++ b/lib/plugins/extension/lang/nl/lang.php @@ -5,7 +5,7 @@ * * @author Rene */ -$lang['menu'] = 'Extension Manager (Uitbreidings Beheerder)'; +$lang['menu'] = 'Uitbreidings Beheerder'; $lang['tab_plugins'] = 'Geïnstalleerde Plugins'; $lang['tab_templates'] = 'Geïnstalleerde Templates'; $lang['tab_search'] = 'Zoek en installeer'; @@ -24,7 +24,7 @@ $lang['btn_enable'] = 'Schakel aan'; $lang['btn_disable'] = 'Schakel uit'; $lang['btn_install'] = 'Installeer'; $lang['btn_reinstall'] = 'Her-installeer'; -$lang['js']['reallydel'] = 'Wilt u deze uitbreiding deinstalleren ?'; +$lang['js']['reallydel'] = 'Wilt u deze uitbreiding deinstalleren?'; $lang['search_for'] = 'Zoek Uitbreiding:'; $lang['search'] = 'Zoek'; $lang['extensionby'] = '%s by %s'; @@ -36,16 +36,16 @@ $lang['tags'] = 'Tags:'; $lang['author_hint'] = 'Zoek uitbreidingen van deze auteur:'; $lang['installed'] = 'Geinstalleerd:'; $lang['downloadurl'] = 'Download URL:'; -$lang['repository'] = 'Repository ( centrale opslag)'; +$lang['repository'] = 'Centrale opslag:'; $lang['unknown'] = 'onbekend'; -$lang['installed_version'] = 'Geïnstalleerde versie'; -$lang['install_date'] = 'Uw laatste update :'; +$lang['installed_version'] = 'Geïnstalleerde versie:'; +$lang['install_date'] = 'Uw laatste update:'; $lang['available_version'] = 'Beschikbare versie:'; -$lang['compatible'] = 'Compatible met :'; -$lang['depends'] = 'Afhankelijk van :'; -$lang['similar'] = 'Soortgelijk :'; -$lang['conflicts'] = 'Conflicteerd met :'; -$lang['donate'] = 'Vindt u dit leuk ?'; +$lang['compatible'] = 'Compatible met:'; +$lang['depends'] = 'Afhankelijk van:'; +$lang['similar'] = 'Soortgelijk:'; +$lang['conflicts'] = 'Conflicteerd met:'; +$lang['donate'] = 'Vindt u dit leuk?'; $lang['donate_action'] = 'Koop een kop koffie voor de auteur!'; $lang['repo_retry'] = 'Herhaal'; $lang['provides'] = 'Zorgt voor:'; @@ -85,3 +85,4 @@ $lang['nopluginperms'] = 'Plugin directory is niet schrijfbaar'; $lang['git'] = 'De uitbreiding werd geïnstalleerd via git, u wilt deze hier wellicht niet aanpassen.'; $lang['install_url'] = 'Installeer vanaf URL:'; $lang['install_upload'] = 'Upload Uitbreiding:'; +$lang['repo_error'] = 'Er kon geen verbinding worden gemaakt met de centrale plugin opslag. Controleer of de server verbinding mag maken met www.dokuwiki.org en controleer de proxy instellingen.'; -- cgit v1.2.3 From 4862797473d3fb509669a7ded14059f3a412bb15 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Tue, 13 May 2014 18:41:02 +0200 Subject: translation update --- lib/plugins/extension/lang/nl/lang.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/nl/lang.php b/lib/plugins/extension/lang/nl/lang.php index f1dc125da..524c2b2e7 100644 --- a/lib/plugins/extension/lang/nl/lang.php +++ b/lib/plugins/extension/lang/nl/lang.php @@ -4,6 +4,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Rene + * @author Gerrit Uitslag */ $lang['menu'] = 'Uitbreidings Beheerder'; $lang['tab_plugins'] = 'Geïnstalleerde Plugins'; @@ -30,7 +31,7 @@ $lang['search'] = 'Zoek'; $lang['extensionby'] = '%s by %s'; $lang['screenshot'] = 'Schermafdruk bij %s'; $lang['popularity'] = 'Populariteit:%s%%'; -$lang['homepage_link'] = 'Dokumenten'; +$lang['homepage_link'] = 'Documentatie'; $lang['bugs_features'] = 'Bugs'; $lang['tags'] = 'Tags:'; $lang['author_hint'] = 'Zoek uitbreidingen van deze auteur:'; -- cgit v1.2.3 From c0d17c851c1bf4371e550a105c91a17644de6b29 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Tue, 13 May 2014 18:39:04 +0200 Subject: removed another case of superflous multiple cache invalidation --- lib/plugins/extension/helper/extension.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 43e4452c0..a4736a850 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -597,11 +597,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { $path = $this->download($url); $installed = $this->installArchive($path, true); - // purge caches - foreach($installed as $ext => $info){ - $this->setExtension($ext); - $this->purgeCache(); - } + // purge cache + $this->purgeCache(); }catch (Exception $e){ throw $e; } -- cgit v1.2.3 From 59d6be95449db272ee0a6b6d437f535246f795c9 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Tue, 13 May 2014 19:42:05 +0200 Subject: update manager.dat correctly on install. closes #704 --- lib/plugins/extension/helper/extension.php | 39 ++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index a4736a850..2aca0e218 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -292,7 +292,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { */ public function getUpdateDate() { if (!empty($this->managerData['updated'])) return $this->managerData['updated']; - return false; + return $this->getInstallDate(); } /** @@ -577,6 +577,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { try { $installed = $this->installArchive("$tmp/upload.archive", true, $basename); + $this->updateManagerData('', $installed); // purge cache $this->purgeCache(); }catch (Exception $e){ @@ -596,6 +597,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { try { $path = $this->download($url); $installed = $this->installArchive($path, true); + $this->updateManagerData($url, $installed); // purge cache $this->purgeCache(); @@ -612,8 +614,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * @return array The list of installed extensions */ public function installOrUpdate() { - $path = $this->download($this->getDownloadURL()); + $url = $this->getDownloadURL(); + $path = $this->download($url); $installed = $this->installArchive($path, $this->isInstalled(), $this->getBase()); + $this->updateManagerData($url, $installed); // refresh extension information if (!isset($installed[$this->getID()])) { @@ -727,6 +731,37 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { } } + /** + * Save the given URL and current datetime in the manager.dat file of all installed extensions + * + * @param string $url Where the extension was downloaded from. (empty for manual installs via upload) + * @param array $installed Optional list of installed plugins + */ + protected function updateManagerData($url = '', $installed = null) { + $origID = $this->getID(); + + if(is_null($installed)) { + $installed = array($origID); + } + + foreach($installed as $ext => $info) { + if($this->getID() != $ext) $this->setExtension($ext); + if($url) { + $this->managerData['downloadurl'] = $url; + } elseif(isset($this->managerData['downloadurl'])) { + unset($this->managerData['downloadurl']); + } + if(isset($this->managerData['installed'])) { + $this->managerData['updated'] = date('r'); + } else { + $this->managerData['installed'] = date('r'); + } + $this->writeManagerData(); + } + + if($this->getID() != $origID) $this->setExtension($origID); + } + /** * Read the manager.dat file */ -- cgit v1.2.3 From 1b4623e76a474977d730f37c3c54ff1cf66489ac Mon Sep 17 00:00:00 2001 From: Mati Date: Wed, 14 May 2014 07:45:56 +0200 Subject: translation update --- lib/plugins/extension/lang/pl/lang.php | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 lib/plugins/extension/lang/pl/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/pl/lang.php b/lib/plugins/extension/lang/pl/lang.php new file mode 100644 index 000000000..4fdca79c9 --- /dev/null +++ b/lib/plugins/extension/lang/pl/lang.php @@ -0,0 +1,39 @@ + + */ +$lang['menu'] = 'Menedżer rozszerzeń'; +$lang['tab_plugins'] = 'Zainstalowane dodatki'; +$lang['tab_search'] = 'Znajdź i zainstaluj'; +$lang['notinstalled'] = 'Te rozszerzenie nie zostało zainstalowane'; +$lang['alreadyenabled'] = 'Te rozszerzenie jest już uruchomione'; +$lang['unknownauthor'] = 'Nieznany autor'; +$lang['unknownversion'] = 'Nieznana wersja'; +$lang['btn_info'] = 'Pokaż więcej informacji'; +$lang['btn_enable'] = 'Uruchom'; +$lang['btn_disable'] = 'Wyłącz'; +$lang['btn_reinstall'] = 'Ponowna instalacja'; +$lang['js']['reallydel'] = 'Naprawdę odinstalować te rozszerzenie?'; +$lang['search'] = 'Szukaj'; +$lang['bugs_features'] = 'Błędy'; +$lang['tags'] = 'Tagi:'; +$lang['installed'] = 'Zainstalowano:'; +$lang['repository'] = 'Repozytorium'; +$lang['installed_version'] = 'Zainstalowana wersja:'; +$lang['install_date'] = 'Twoja ostatnia aktualizacja:'; +$lang['available_version'] = 'Dostępna wersja:'; +$lang['depends'] = 'Zależy od:'; +$lang['conflicts'] = 'Konflikt z:'; +$lang['donate'] = 'Lubisz to?'; +$lang['donate_action'] = 'Kup autorowi kawę!'; +$lang['repo_retry'] = 'Ponów'; +$lang['status'] = 'Status:'; +$lang['status_installed'] = 'zainstalowano'; +$lang['status_not_installed'] = 'nie zainstalowano'; +$lang['status_enabled'] = 'uruchomione'; +$lang['status_disabled'] = 'wyłączone'; +$lang['status_plugin'] = 'dodatek'; +$lang['msg_delete_success'] = 'Rozszerzenie odinstalowane'; -- cgit v1.2.3 From b9b1fa3cc0cbb48e6e911f62909871bb8c72c71d Mon Sep 17 00:00:00 2001 From: Francesco Date: Wed, 14 May 2014 21:30:56 +0200 Subject: translation update --- lib/plugins/extension/lang/it/lang.php | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 lib/plugins/extension/lang/it/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/it/lang.php b/lib/plugins/extension/lang/it/lang.php new file mode 100644 index 000000000..fbf163d57 --- /dev/null +++ b/lib/plugins/extension/lang/it/lang.php @@ -0,0 +1,41 @@ + + */ +$lang['btn_enable'] = 'Abilita'; +$lang['btn_disable'] = 'Disabilita'; +$lang['btn_install'] = 'Installa'; +$lang['btn_reinstall'] = 'Reinstalla'; +$lang['search'] = 'Cerca'; +$lang['homepage_link'] = 'Documenti'; +$lang['bugs_features'] = 'Bug'; +$lang['tags'] = 'Tag:'; +$lang['author_hint'] = 'Cerca estensioni per questo autore'; +$lang['installed'] = 'Installato:'; +$lang['downloadurl'] = 'URL download:'; +$lang['repository'] = 'Repository'; +$lang['installed_version'] = 'Versione installata'; +$lang['install_date'] = 'Il tuo ultimo aggiornamento:'; +$lang['available_version'] = 'Versione disponibile:'; +$lang['compatible'] = 'Compatibile con:'; +$lang['similar'] = 'Simile a:'; +$lang['donate'] = 'Simile a questo?'; +$lang['repo_retry'] = 'Riprova'; +$lang['status'] = 'Status:'; +$lang['status_installed'] = 'installato'; +$lang['status_not_installed'] = 'non installato'; +$lang['status_protected'] = 'protetto'; +$lang['status_enabled'] = 'abilitato'; +$lang['status_disabled'] = 'disabilitato'; +$lang['status_unmodifiable'] = 'inmodificabile'; +$lang['status_plugin'] = 'plugin'; +$lang['status_template'] = 'modello'; +$lang['error_badurl'] = 'URLs deve iniziare con http o https'; +$lang['error_dircreate'] = 'Impossibile creare una cartella temporanea per ricevere il download'; +$lang['error_download'] = 'Impossibile scaricare il file: %s'; +$lang['notplperms'] = 'Il modello di cartella non è scrivibile'; +$lang['nopluginperms'] = 'La cartella plugin non è scrivibile'; +$lang['install_url'] = 'Installa da URL:'; -- cgit v1.2.3 From e151bd73ba8b0f385b128cfe70c6d6e0eb4b7360 Mon Sep 17 00:00:00 2001 From: Hideaki SAWADA Date: Sat, 17 May 2014 08:11:01 +0200 Subject: translation update --- lib/plugins/extension/lang/ja/intro_install.txt | 2 +- lib/plugins/extension/lang/ja/intro_plugins.txt | 2 +- lib/plugins/extension/lang/ja/intro_templates.txt | 2 +- lib/plugins/extension/lang/ja/lang.php | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ja/intro_install.txt b/lib/plugins/extension/lang/ja/intro_install.txt index 889ed6879..9f99b8202 100644 --- a/lib/plugins/extension/lang/ja/intro_install.txt +++ b/lib/plugins/extension/lang/ja/intro_install.txt @@ -1 +1 @@ -ここでは、アップロードするかダウンロードURLを指定して、手動でプラグインやテンプレートをインストールできます。 +アップロードするかダウンロードURLを指定して、手動でプラグインやテンプレートをインストールできます。 diff --git a/lib/plugins/extension/lang/ja/intro_plugins.txt b/lib/plugins/extension/lang/ja/intro_plugins.txt index 9bfc68431..b8251c7e8 100644 --- a/lib/plugins/extension/lang/ja/intro_plugins.txt +++ b/lib/plugins/extension/lang/ja/intro_plugins.txt @@ -1 +1 @@ -このDokuWikiに現在インストールされているプラグインです。ここでは、これらプラグインを有効化、無効化、アンインストールすることができます。同様にプラグインのアップデートも表示されます。アップデート前に、プラグインのマニュアルをお読みください。 \ No newline at end of file +このDokuWikiに現在インストールされているプラグインです。これらプラグインを有効化、無効化、アンインストールできます。更新はできる場合のみ表示されます。更新前に、プラグインの解説をお読みください。 \ No newline at end of file diff --git a/lib/plugins/extension/lang/ja/intro_templates.txt b/lib/plugins/extension/lang/ja/intro_templates.txt index f97694aaa..5de6d2f0d 100644 --- a/lib/plugins/extension/lang/ja/intro_templates.txt +++ b/lib/plugins/extension/lang/ja/intro_templates.txt @@ -1 +1 @@ -このDokuWikiに現在インストールされているテンプレートです。[[?do=admin&page=config|設定管理]]で使用するテンプレートを選択できます。 \ No newline at end of file +このDokuWikiに現在インストールされているテンプレートです。使用するテンプレートは[[?do=admin&page=config|設定管理]]で選択できます。 \ No newline at end of file diff --git a/lib/plugins/extension/lang/ja/lang.php b/lib/plugins/extension/lang/ja/lang.php index b42e4aefd..f1a95f7a2 100644 --- a/lib/plugins/extension/lang/ja/lang.php +++ b/lib/plugins/extension/lang/ja/lang.php @@ -83,3 +83,4 @@ $lang['nopluginperms'] = 'プラグインディレクトリが書き込 $lang['git'] = 'この拡張機能は Git 経由でインストールされており、ここで更新すべきでないかもしれません。'; $lang['install_url'] = 'URL からインストール:'; $lang['install_upload'] = '拡張機能をアップロード:'; +$lang['repo_error'] = 'プラグインのリポジトリに接続できません。サーバーが www.dokuwiki.org に接続できることやプロキシの設定を確認して下さい。'; -- cgit v1.2.3 From 5aa1e6b571d748ca5b0c7684ec6116c9e5f299d4 Mon Sep 17 00:00:00 2001 From: Rene Date: Sat, 17 May 2014 09:36:32 +0200 Subject: translation update --- lib/plugins/extension/lang/nl/lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/nl/lang.php b/lib/plugins/extension/lang/nl/lang.php index 524c2b2e7..c1c72e812 100644 --- a/lib/plugins/extension/lang/nl/lang.php +++ b/lib/plugins/extension/lang/nl/lang.php @@ -6,7 +6,7 @@ * @author Rene * @author Gerrit Uitslag */ -$lang['menu'] = 'Uitbreidings Beheerder'; +$lang['menu'] = 'Uitbreidingen'; $lang['tab_plugins'] = 'Geïnstalleerde Plugins'; $lang['tab_templates'] = 'Geïnstalleerde Templates'; $lang['tab_search'] = 'Zoek en installeer'; -- cgit v1.2.3 From f88adfe0b3b6ae718cb4a99c6f8363042c7b0b6e Mon Sep 17 00:00:00 2001 From: PzF_X Date: Sun, 18 May 2014 13:56:03 +0200 Subject: translation update --- lib/plugins/extension/lang/ja/lang.php | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ja/lang.php b/lib/plugins/extension/lang/ja/lang.php index f1a95f7a2..dec46d629 100644 --- a/lib/plugins/extension/lang/ja/lang.php +++ b/lib/plugins/extension/lang/ja/lang.php @@ -4,6 +4,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Hideaki SAWADA + * @author PzF_X */ $lang['menu'] = '拡張機能管理'; $lang['tab_plugins'] = 'インストール済プラグイン'; @@ -52,8 +53,10 @@ $lang['provides'] = '提供:'; $lang['status'] = '状態:'; $lang['status_installed'] = 'インストール済'; $lang['status_not_installed'] = '未インストール'; +$lang['status_protected'] = '保護されています'; $lang['status_enabled'] = '有効'; $lang['status_disabled'] = '無効'; +$lang['status_unmodifiable'] = '編集不可'; $lang['status_plugin'] = 'プラグイン'; $lang['status_template'] = 'テンプレート'; $lang['status_bundled'] = '同梱'; -- cgit v1.2.3 From 776b1195ea652eae3a1c5f206d5fe07f3cc2cc67 Mon Sep 17 00:00:00 2001 From: Marton Sebok Date: Tue, 20 May 2014 17:06:16 +0200 Subject: translation update --- lib/plugins/extension/lang/hu/intro_install.txt | 1 + lib/plugins/extension/lang/hu/intro_plugins.txt | 1 + lib/plugins/extension/lang/hu/intro_search.txt | 1 + lib/plugins/extension/lang/hu/intro_templates.txt | 1 + lib/plugins/extension/lang/hu/lang.php | 88 +++++++++++++++++++++++ 5 files changed, 92 insertions(+) create mode 100644 lib/plugins/extension/lang/hu/intro_install.txt create mode 100644 lib/plugins/extension/lang/hu/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/hu/intro_search.txt create mode 100644 lib/plugins/extension/lang/hu/intro_templates.txt create mode 100644 lib/plugins/extension/lang/hu/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/hu/intro_install.txt b/lib/plugins/extension/lang/hu/intro_install.txt new file mode 100644 index 000000000..8427e7dc6 --- /dev/null +++ b/lib/plugins/extension/lang/hu/intro_install.txt @@ -0,0 +1 @@ +Itt új modulokat és sablonokat telepíthetsz feltöltéssel vagy a csomagra hivatkozó URL megadásával. \ No newline at end of file diff --git a/lib/plugins/extension/lang/hu/intro_plugins.txt b/lib/plugins/extension/lang/hu/intro_plugins.txt new file mode 100644 index 000000000..8a3e92ddb --- /dev/null +++ b/lib/plugins/extension/lang/hu/intro_plugins.txt @@ -0,0 +1 @@ +A DokuWiki rendszerben telepített modulok az alábbiak. Engedélyezheted, letilthatod vagy teljesen le is törölheted ezeket. A modulokhoz tartozó frissítések is itt láthatók, viszont frissítés előtt mindenképp olvasd el az utasításokat a modul dokumentációjában is! \ No newline at end of file diff --git a/lib/plugins/extension/lang/hu/intro_search.txt b/lib/plugins/extension/lang/hu/intro_search.txt new file mode 100644 index 000000000..87a2a5d64 --- /dev/null +++ b/lib/plugins/extension/lang/hu/intro_search.txt @@ -0,0 +1 @@ +Ezen a fülön harmadik fél által készített modulokat és sablonokat találsz a DokuWiki-hez. Ne feledd, hogy a harmadik féltől származó kódok **biztonsági kockázatot** jelenthetnek, ennek a [[doku>security#plugin_security|modulok biztonsága]] oldalon olvashatsz utána a telepítés előtt. \ No newline at end of file diff --git a/lib/plugins/extension/lang/hu/intro_templates.txt b/lib/plugins/extension/lang/hu/intro_templates.txt new file mode 100644 index 000000000..c0ad92b35 --- /dev/null +++ b/lib/plugins/extension/lang/hu/intro_templates.txt @@ -0,0 +1 @@ +A DokuWiki rendszerben telepített sablonok az alábbiak. A használt sablont a [[?do=admin&page=config|Beállítóközpontban]] választhatod ki. \ No newline at end of file diff --git a/lib/plugins/extension/lang/hu/lang.php b/lib/plugins/extension/lang/hu/lang.php new file mode 100644 index 000000000..a27b5a307 --- /dev/null +++ b/lib/plugins/extension/lang/hu/lang.php @@ -0,0 +1,88 @@ + + */ +$lang['menu'] = 'Bővítménykezelő'; +$lang['tab_plugins'] = 'Telepített modulok'; +$lang['tab_templates'] = 'Telepített sablonok'; +$lang['tab_search'] = 'Keresés és telepítés'; +$lang['tab_install'] = 'Kézi telepítés'; +$lang['notimplemented'] = 'Ez a funkció még nincs implementálva'; +$lang['notinstalled'] = 'Ez a bővítmény nincs telepítve'; +$lang['alreadyenabled'] = 'Ez a bővítmény már engedélyezve van'; +$lang['alreadydisabled'] = 'Ez a bővítmény már le van tiltva'; +$lang['pluginlistsaveerror'] = 'Hiba történt a modulok listájának mentésekor'; +$lang['unknownauthor'] = 'Ismeretlen szerző'; +$lang['unknownversion'] = 'Ismeretlen verzió'; +$lang['btn_info'] = 'További információk megjelenítése'; +$lang['btn_update'] = 'Frissítés'; +$lang['btn_uninstall'] = 'Törlés'; +$lang['btn_enable'] = 'Engedélyezés'; +$lang['btn_disable'] = 'Letiltás'; +$lang['btn_install'] = 'Telepítés'; +$lang['btn_reinstall'] = 'Újratelepítés'; +$lang['js']['reallydel'] = 'Biztosan törlöd ezt a bővítményt?'; +$lang['search_for'] = 'Bővítmények keresése:'; +$lang['search'] = 'Keresés'; +$lang['extensionby'] = '%s, %s szerzőtől'; +$lang['screenshot'] = '%s képernyőképe'; +$lang['popularity'] = 'Népszerűség: %s%%'; +$lang['homepage_link'] = 'Dokumentáció'; +$lang['bugs_features'] = 'Hibák'; +$lang['tags'] = 'Címkék:'; +$lang['author_hint'] = 'Bővítmények keresése ettől a szerzőtől'; +$lang['installed'] = 'Telepítve:'; +$lang['downloadurl'] = 'Csomag URL:'; +$lang['repository'] = 'Repository:'; +$lang['unknown'] = 'ismeretlen'; +$lang['installed_version'] = 'Telepített verzió:'; +$lang['install_date'] = 'Utoljára frissítve:'; +$lang['available_version'] = 'Elérhető verzió:'; +$lang['compatible'] = 'Kompatibilis rendszerek:'; +$lang['depends'] = 'Függőségek:'; +$lang['similar'] = 'Hasonló bővítmények:'; +$lang['conflicts'] = 'Ütközést okozó bővítmények:'; +$lang['donate'] = 'Tetszik?'; +$lang['donate_action'] = 'Hívd meg a szerzőjét egy kávéra!'; +$lang['repo_retry'] = 'Újra'; +$lang['provides'] = 'Szolgáltatások:'; +$lang['status'] = 'Állapot:'; +$lang['status_installed'] = 'telepítve'; +$lang['status_not_installed'] = 'nincs telepítve'; +$lang['status_protected'] = 'védett'; +$lang['status_enabled'] = 'engedélyezve'; +$lang['status_disabled'] = 'letiltva'; +$lang['status_unmodifiable'] = 'nem lehet módosítani'; +$lang['status_plugin'] = 'modul'; +$lang['status_template'] = 'sablon'; +$lang['status_bundled'] = 'beépített'; +$lang['msg_enabled'] = 'A(z) %s modul engedélyezve'; +$lang['msg_disabled'] = 'A(z) %s modul letiltva'; +$lang['msg_delete_success'] = 'A bővítmény törölve'; +$lang['msg_template_install_success'] = 'A(z) %s sablon sikeresen telepítve'; +$lang['msg_template_update_success'] = 'A(z) %s sablon sikeresen frissítve'; +$lang['msg_plugin_install_success'] = 'A(z) %s modul sikeresen telepítve'; +$lang['msg_plugin_update_success'] = 'A(z) %s modul sikeresen frissítve'; +$lang['msg_upload_failed'] = 'A fájl feltöltése sikertelen'; +$lang['missing_dependency'] = 'Hiányzó vagy letiltott függőség: %s'; +$lang['security_issue'] = 'Biztonsági probléma: %s'; +$lang['security_warning'] = 'Biztonsági figyelmeztetés: %s'; +$lang['update_available'] = 'Frissítés: Elérhető %s új verziója.'; +$lang['wrong_folder'] = 'A modul telepítése sikertelen: Nevezd át a modul könyvtárát "%s" névről "%s" névre!'; +$lang['url_change'] = 'Az URL megváltozott: A csomag URL-je megváltozott az utolsó letöltés óta. A bővítmény frissítése előtt ellenőrizd az új URL helyességét!
    Új: %s
    Régi: %s'; +$lang['error_badurl'] = 'Az URL-nek "http"-vel vagy "https"-sel kell kezdődnie'; +$lang['error_dircreate'] = 'A letöltéshez az ideiglenes könyvtár létrehozása sikertelen'; +$lang['error_download'] = 'A(z) %s fájl letöltése sikertelen'; +$lang['error_decompress'] = 'A letöltött fájlt nem lehet kicsomagolni. Ezt okozhatja a fájl sérülése (ebben az esetben próbáld újra letölteni) vagy egy ismeretlen tömörítési formátum használata (ilyenkor kézzel kell telepítened).'; +$lang['error_findfolder'] = 'A bővítményhez tartozó könyvtárat nem sikerült megállapítani, kézzel kell letöltened és telepítened'; +$lang['error_copy'] = 'Egy fájl másolása közben hiba történt a %s könyvtárban: lehet, hogy a lemez megtelt vagy nincsenek megfelelő írási jogaid. A telepítés megszakadása a modul hibás működését eredményezheti és instabil állapotba hozhatja a wikit'; +$lang['noperms'] = 'A bővítmény könyvtára nem írható'; +$lang['notplperms'] = 'A sablon könyvtára nem írható'; +$lang['nopluginperms'] = 'A modul könyvtára nem írható'; +$lang['git'] = 'Ezt a bővítményt git-tel telepítették, lehet, hogy nem itt célszerű frissíteni'; +$lang['install_url'] = 'Telepítés erről az URL-ről:'; +$lang['install_upload'] = 'Bővítmény feltöltése:'; +$lang['repo_error'] = 'A modul repository-ja nem érhető el. Bizonyosodj meg róla, hogy a szervereden engedélyezett a www.dokuwiki.org cím elérése és ellenőrizd a proxy beállításaidat!'; -- cgit v1.2.3 From d4837e2388a7e698d70fc8451c687f0c7ec439a6 Mon Sep 17 00:00:00 2001 From: Johan Vervloet Date: Thu, 22 May 2014 13:56:02 +0200 Subject: translation update --- lib/plugins/extension/lang/nl/lang.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/nl/lang.php b/lib/plugins/extension/lang/nl/lang.php index c1c72e812..a54924e93 100644 --- a/lib/plugins/extension/lang/nl/lang.php +++ b/lib/plugins/extension/lang/nl/lang.php @@ -5,6 +5,7 @@ * * @author Rene * @author Gerrit Uitslag + * @author Johan Vervloet */ $lang['menu'] = 'Uitbreidingen'; $lang['tab_plugins'] = 'Geïnstalleerde Plugins'; @@ -64,16 +65,16 @@ $lang['msg_enabled'] = 'Plugin %s ingeschakeld'; $lang['msg_disabled'] = 'Plugin %s uitgeschakeld'; $lang['msg_delete_success'] = 'Uitbreiding gedeinstalleerd'; $lang['msg_template_install_success'] = 'Template %s werd succesvol geïnstalleerd'; -$lang['msg_template_update_success'] = 'Template %s werd succesvol ge-update'; +$lang['msg_template_update_success'] = 'Template %s werd succesvol geüpdatet'; $lang['msg_plugin_install_success'] = 'Plugin %s werd succesvol geïnstalleerd'; -$lang['msg_plugin_update_success'] = 'Plugin %s werd succesvol ge-update'; +$lang['msg_plugin_update_success'] = 'Plugin %s werd succesvol geüpdatet'; $lang['msg_upload_failed'] = 'Uploaden van het bestand is mislukt'; $lang['missing_dependency'] = 'niet aanwezige of uitgeschakelde afhankelijkheid %s'; $lang['security_issue'] = 'Veiligheids kwestie: %s'; $lang['security_warning'] = 'Veiligheids Waarschuwing %s'; $lang['update_available'] = 'Update: Nieuwe versie %s is beschikbaar.'; $lang['wrong_folder'] = 'Plugin onjuist geïnstalleerd: Hernoem de plugin directory van "%s" naar"%s"'; -$lang['url_change'] = 'URL gewijzigd: Download URL is gewijzigd sinds de laatste download. Controleer of de nieuwe URL juist is voordat u de uitbreiding update.
    Nieuw:%s
    Vorig: %s'; +$lang['url_change'] = 'URL gewijzigd: Download URL is gewijzigd sinds de laatste download. Controleer of de nieuwe URL juist is voordat u de uitbreiding updatet.
    Nieuw:%s
    Vorig: %s'; $lang['error_badurl'] = 'URLs moeten beginnen met http of https'; $lang['error_dircreate'] = 'De tijdelijke map kon niet worden gemaakt om de download te ontvangen'; $lang['error_download'] = 'Het is niet mogelijk het bestand te downloaden: %s'; -- cgit v1.2.3 From 95955792a0c7a7e7f74b563af841f25fd4466d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Schplurtz=20le=20D=C3=A9boulonn=C3=A9?= Date: Mon, 26 May 2014 01:26:39 +0200 Subject: translation update --- lib/plugins/extension/lang/fr/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/fr/lang.php b/lib/plugins/extension/lang/fr/lang.php index c2dae0fc9..8e4997f12 100644 --- a/lib/plugins/extension/lang/fr/lang.php +++ b/lib/plugins/extension/lang/fr/lang.php @@ -85,3 +85,4 @@ $lang['nopluginperms'] = 'Impossible d\'écrire dans le dossier des gref $lang['git'] = 'Cette extension a été installé via git, vous voudrez peut-être ne pas la mettre à jour ici.'; $lang['install_url'] = 'Installez depuis l\'URL :'; $lang['install_upload'] = 'Téléversez l\'extension :'; +$lang['repo_error'] = 'L\'entrepôt d\'extensions est injoignable. Veuillez vous assurer que le server web est autorisé à contacter www.dokuwiki.org et vérifier les réglages de proxy.'; -- cgit v1.2.3 From f35c7beb388b7c878104dc83f9cf604beb79ea88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Schplurtz=20le=20D=C3=A9boulonn=C3=A9?= Date: Mon, 26 May 2014 02:06:12 +0200 Subject: translation update --- lib/plugins/extension/lang/fr/intro_install.txt | 2 +- lib/plugins/extension/lang/fr/intro_templates.txt | 2 +- lib/plugins/extension/lang/fr/lang.php | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/fr/intro_install.txt b/lib/plugins/extension/lang/fr/intro_install.txt index 6f68a2606..5d287b818 100644 --- a/lib/plugins/extension/lang/fr/intro_install.txt +++ b/lib/plugins/extension/lang/fr/intro_install.txt @@ -1 +1 @@ -Ici, vous pouvez installer des extensions, greffons et modèles. Soit en les téléversant, soit en indiquant un URL de téléchargement. \ No newline at end of file +Ici, vous pouvez installer des extensions, greffons et thèmes. Soit en les téléversant, soit en indiquant un URL de téléchargement. \ No newline at end of file diff --git a/lib/plugins/extension/lang/fr/intro_templates.txt b/lib/plugins/extension/lang/fr/intro_templates.txt index fefdb5538..a0a1336ea 100644 --- a/lib/plugins/extension/lang/fr/intro_templates.txt +++ b/lib/plugins/extension/lang/fr/intro_templates.txt @@ -1 +1 @@ -Voici la liste des modèles actuellement installés. Le [[?do=admin&page=config|gestionnaire de configuration]] vous permet de choisir le modèle à utiliser. \ No newline at end of file +Voici la liste des thèmes actuellement installés. Le [[?do=admin&page=config|gestionnaire de configuration]] vous permet de choisir le thème à utiliser. \ No newline at end of file diff --git a/lib/plugins/extension/lang/fr/lang.php b/lib/plugins/extension/lang/fr/lang.php index c2dae0fc9..f060ff465 100644 --- a/lib/plugins/extension/lang/fr/lang.php +++ b/lib/plugins/extension/lang/fr/lang.php @@ -7,7 +7,7 @@ */ $lang['menu'] = 'Gestionnaire d\'extension'; $lang['tab_plugins'] = 'Greffons installés'; -$lang['tab_templates'] = 'Modèles installés'; +$lang['tab_templates'] = 'Thèmes installés'; $lang['tab_search'] = 'Rechercher et installer'; $lang['tab_install'] = 'Installation manuelle'; $lang['notimplemented'] = 'Cette fonctionnalité n\'est pas encore installée'; @@ -57,13 +57,13 @@ $lang['status_enabled'] = 'activé'; $lang['status_disabled'] = 'désactivé'; $lang['status_unmodifiable'] = 'non modifiable'; $lang['status_plugin'] = 'greffon'; -$lang['status_template'] = 'modèle'; +$lang['status_template'] = 'thème'; $lang['status_bundled'] = 'fourni'; $lang['msg_enabled'] = 'Greffon %s activé'; $lang['msg_disabled'] = 'Greffon %s désactivé'; $lang['msg_delete_success'] = 'Extension désinstallée'; -$lang['msg_template_install_success'] = 'Modèle %s installée avec succès'; -$lang['msg_template_update_success'] = 'Modèle %s mis à jour avec succès'; +$lang['msg_template_install_success'] = 'Thème %s installée avec succès'; +$lang['msg_template_update_success'] = 'Thème %s mis à jour avec succès'; $lang['msg_plugin_install_success'] = 'Greffon %s installé avec succès'; $lang['msg_plugin_update_success'] = 'Greffon %s mis à jour avec succès'; $lang['msg_upload_failed'] = 'Téléversement échoué'; @@ -80,7 +80,7 @@ $lang['error_decompress'] = 'Impossible de décompresser le fichier téléc $lang['error_findfolder'] = 'Impossible d\'idnetifier le dossier de l\'extension. vous devez procéder à une installation manuelle.'; $lang['error_copy'] = 'Une erreur de copie de fichier s\'est produite lors de l\'installation des fichiers dans le dossier %s. Il se peut que le disque soit plein, ou que les permissions d\'accès aux fichiers soient incorrectes. Il est possible que le greffon soit partiellement installé et que cela laisse votre installation de DoluWiki instable.'; $lang['noperms'] = 'Impossible d\'écrire dans le dossier des extensions.'; -$lang['notplperms'] = 'Impossible d\'écrire dans le dossier des modèles.'; +$lang['notplperms'] = 'Impossible d\'écrire dans le dossier des thèmes.'; $lang['nopluginperms'] = 'Impossible d\'écrire dans le dossier des greffons.'; $lang['git'] = 'Cette extension a été installé via git, vous voudrez peut-être ne pas la mettre à jour ici.'; $lang['install_url'] = 'Installez depuis l\'URL :'; -- cgit v1.2.3 From 3e5c46655be43b0d32ccbec276c6abdea1080b95 Mon Sep 17 00:00:00 2001 From: Antonio Castilla Date: Thu, 29 May 2014 13:21:31 +0200 Subject: translation update --- lib/plugins/extension/lang/es/intro_install.txt | 1 + lib/plugins/extension/lang/es/intro_templates.txt | 1 + lib/plugins/extension/lang/es/lang.php | 14 ++++++++++++++ 3 files changed, 16 insertions(+) create mode 100644 lib/plugins/extension/lang/es/intro_install.txt create mode 100644 lib/plugins/extension/lang/es/intro_templates.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/es/intro_install.txt b/lib/plugins/extension/lang/es/intro_install.txt new file mode 100644 index 000000000..533396b27 --- /dev/null +++ b/lib/plugins/extension/lang/es/intro_install.txt @@ -0,0 +1 @@ +Aquí se puede instalar manualmente los plugins y las plantillas, ya sea cargándolos o dando una URL de descarga directa. \ No newline at end of file diff --git a/lib/plugins/extension/lang/es/intro_templates.txt b/lib/plugins/extension/lang/es/intro_templates.txt new file mode 100644 index 000000000..4ede9a1a9 --- /dev/null +++ b/lib/plugins/extension/lang/es/intro_templates.txt @@ -0,0 +1 @@ +Estas son las plantillas actualmente instalados en su DokuWiki. Puede seleccionar la plantilla que se utilizará en [[?do=admin&page=config|Configuration Manager]] \ No newline at end of file diff --git a/lib/plugins/extension/lang/es/lang.php b/lib/plugins/extension/lang/es/lang.php index 7de2f5265..16e87f587 100644 --- a/lib/plugins/extension/lang/es/lang.php +++ b/lib/plugins/extension/lang/es/lang.php @@ -4,14 +4,17 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Antonio Bueno + * @author Antonio Castilla */ $lang['tab_plugins'] = 'Plugins instalados'; $lang['tab_templates'] = 'Plantillas instaladas'; $lang['tab_search'] = 'Buscar e instalar'; $lang['tab_install'] = 'Instalación manual'; +$lang['notimplemented'] = 'Esta característica no se ha implementado aún'; $lang['notinstalled'] = 'Esta expensión no está instalada'; $lang['alreadyenabled'] = 'Esta extensión ya había sido activada'; $lang['alreadydisabled'] = 'Esta extensión ya había sido desactivada'; +$lang['pluginlistsaveerror'] = 'Se ha producido un error al guardar la lista de plugins'; $lang['unknownauthor'] = 'autor desconocido'; $lang['unknownversion'] = 'versión desconocida'; $lang['btn_info'] = 'Mostrar más información'; @@ -21,17 +24,28 @@ $lang['btn_enable'] = 'Activar'; $lang['btn_disable'] = 'Desactivar'; $lang['btn_install'] = 'Instalar'; $lang['btn_reinstall'] = 'Reinstalar'; +$lang['js']['reallydel'] = '¿Realmente quiere desinstalar esta extensión?'; +$lang['search_for'] = 'Extensión de búsqueda :'; $lang['search'] = 'Buscar'; +$lang['extensionby'] = '%s por %s'; +$lang['screenshot'] = 'Captura de %s'; +$lang['popularity'] = 'Popularidad:%s%%'; $lang['homepage_link'] = 'Documentos'; $lang['bugs_features'] = 'Bugs'; $lang['tags'] = 'Etiquetas:'; +$lang['author_hint'] = 'Buscar extensiones de este autor'; $lang['installed'] = 'Instalado:'; $lang['downloadurl'] = 'URL de descarga:'; $lang['repository'] = 'Repositorio:'; +$lang['unknown'] = 'desconocido'; $lang['installed_version'] = 'Versión instalada:'; +$lang['install_date'] = 'Tú última actualización:'; $lang['available_version'] = 'Versión disponible:'; $lang['compatible'] = 'Compatible con:'; $lang['depends'] = 'Dependencias:'; +$lang['similar'] = 'Similar a:'; +$lang['conflicts'] = 'Conflictos con:'; +$lang['donate'] = '¿Cómo está?'; $lang['donate_action'] = '¡Págale un café al autor!'; $lang['status'] = 'Estado:'; $lang['status_installed'] = 'instalado'; -- cgit v1.2.3 From 9a72776194fc27b31238ade37ba590b4e0217cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0lker=20R=2E=20Kapa=C3=A7?= Date: Sat, 31 May 2014 00:11:23 +0200 Subject: translation update --- lib/plugins/extension/lang/tr/lang.php | 60 ++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 lib/plugins/extension/lang/tr/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/tr/lang.php b/lib/plugins/extension/lang/tr/lang.php new file mode 100644 index 000000000..dfabfa715 --- /dev/null +++ b/lib/plugins/extension/lang/tr/lang.php @@ -0,0 +1,60 @@ + + */ +$lang['menu'] = 'Genişletme Yöneticisi'; +$lang['tab_plugins'] = 'Kurulmuş Eklentiler'; +$lang['tab_templates'] = 'Kurulmuş Şablonlar'; +$lang['tab_search'] = 'Ara ve Kur'; +$lang['tab_install'] = 'Elle Kurulum'; +$lang['notimplemented'] = 'Bu özellik henüz uygulamaya geçmemiştir'; +$lang['notinstalled'] = 'Bu genişletme yüklü değildir'; +$lang['alreadyenabled'] = 'Bu genişletme zaten etkinleştirilmiştir.'; +$lang['alreadydisabled'] = 'Bu genişletme zaten pasifleştirilmiştir'; +$lang['pluginlistsaveerror'] = 'Eklenti listesini kaydederken bir hata oluştu.'; +$lang['unknownauthor'] = 'Bilinmeyen yazar'; +$lang['unknownversion'] = 'Bilinmeyen sürüm'; +$lang['btn_info'] = 'Daha fazla bilgi göster'; +$lang['btn_update'] = 'Güncelle'; +$lang['btn_uninstall'] = 'Kaldır'; +$lang['btn_enable'] = 'Etkinleştir'; +$lang['btn_disable'] = 'Pasifleştir'; +$lang['btn_install'] = 'Kur'; +$lang['btn_reinstall'] = 'Yeniden kur'; +$lang['js']['reallydel'] = 'Genişletme gerçekten kaldırılsın mı?'; +$lang['search_for'] = 'Genişletme Ara:'; +$lang['search'] = 'Ara'; +$lang['extensionby'] = '%s tarafından %s'; +$lang['screenshot'] = '%s ekran görüntüsü'; +$lang['popularity'] = 'Rağbet: %s%%'; +$lang['homepage_link'] = 'Belgeler'; +$lang['bugs_features'] = 'Hatalar'; +$lang['tags'] = 'Etiketler:'; +$lang['author_hint'] = 'Bu yazarın genişletmelerini ara.'; +$lang['installed'] = 'Kurulu:'; +$lang['downloadurl'] = 'İndirme bağlantısı:'; +$lang['repository'] = 'Veri havuzu:'; +$lang['unknown'] = 'bilinmeyen'; +$lang['installed_version'] = 'Kurulu sürüm:'; +$lang['install_date'] = 'Son güncellemeniz:'; +$lang['available_version'] = 'Müsait sürüm:'; +$lang['compatible'] = 'Şununla uyumlu:'; +$lang['depends'] = 'Şuna bağımlı'; +$lang['similar'] = 'Şununla benzer'; +$lang['conflicts'] = 'Şununla çelişir'; +$lang['donate'] = 'Beğendiniz mi?'; +$lang['donate_action'] = 'Yazara bir kahve ısmarlayın!'; +$lang['repo_retry'] = 'Yeniden dene'; +$lang['provides'] = 'Sağlar:'; +$lang['status'] = 'Durum:'; +$lang['status_installed'] = 'kurulu'; +$lang['status_not_installed'] = 'kurulu değil'; +$lang['status_protected'] = 'korunmuş'; +$lang['status_enabled'] = 'etkin'; +$lang['status_disabled'] = 'hizmet dışı'; +$lang['status_unmodifiable'] = 'değiştirilemez'; +$lang['status_plugin'] = 'eklenti'; +$lang['status_template'] = 'şablon'; -- cgit v1.2.3 From abcba964d86c82f5cbf2c365420cdb4ffdbe5d7c Mon Sep 17 00:00:00 2001 From: Myeongjin Date: Sun, 1 Jun 2014 10:11:34 +0200 Subject: translation update --- lib/plugins/extension/lang/ko/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ko/lang.php b/lib/plugins/extension/lang/ko/lang.php index db0a49aef..53c9b4481 100644 --- a/lib/plugins/extension/lang/ko/lang.php +++ b/lib/plugins/extension/lang/ko/lang.php @@ -86,3 +86,4 @@ $lang['nopluginperms'] = '플러그인 디렉터리에 쓸 수 없습니 $lang['git'] = '이 확장 기능은 git을 통해 설치되었으며, 여기에서 업데이트할 수 없을 수 있습니다.'; $lang['install_url'] = 'URL에서 설치:'; $lang['install_upload'] = '확장 기능 올리기:'; +$lang['repo_error'] = '플러그인 저장소에 연결할 수 없습니다. 서버가 www.dokuwiki.org에 연결할 수 있는지 확인하고 프록시 설정을 확인하세요.'; -- cgit v1.2.3 From e1f856bac8f154dbb5a51c739630e38115fbbe0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aivars=20Mi=C5=A1ka?= Date: Tue, 10 Jun 2014 16:51:41 +0200 Subject: translation update --- lib/plugins/extension/lang/lv/intro_templates.txt | 1 + lib/plugins/extension/lang/lv/lang.php | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 lib/plugins/extension/lang/lv/intro_templates.txt create mode 100644 lib/plugins/extension/lang/lv/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/lv/intro_templates.txt b/lib/plugins/extension/lang/lv/intro_templates.txt new file mode 100644 index 000000000..1014c7c1e --- /dev/null +++ b/lib/plugins/extension/lang/lv/intro_templates.txt @@ -0,0 +1 @@ +DokuWiki ir instalēti šādi šabloni. Lietojamo šablonu var norādīt [[?do=admin&page=config|Konfigurācijas lapā]]. \ No newline at end of file diff --git a/lib/plugins/extension/lang/lv/lang.php b/lib/plugins/extension/lang/lv/lang.php new file mode 100644 index 000000000..e7e9bdfd9 --- /dev/null +++ b/lib/plugins/extension/lang/lv/lang.php @@ -0,0 +1,8 @@ + + */ +$lang['msg_delete_success'] = 'Papildinājums atinstalēts'; -- cgit v1.2.3 From d96ca44fc9a1ee346cfda97d7a66b8d7716e6031 Mon Sep 17 00:00:00 2001 From: Tanguy Ortolo Date: Sun, 8 Jun 2014 19:10:25 +0200 Subject: Replace two non-free icons by free alternatives --- lib/plugins/extension/images/disabled.png | Bin 1486 -> 1396 bytes lib/plugins/extension/images/enabled.png | Bin 1231 -> 1398 bytes lib/plugins/extension/images/license.txt | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/images/disabled.png b/lib/plugins/extension/images/disabled.png index 7a0dbb3b5..93a813642 100644 Binary files a/lib/plugins/extension/images/disabled.png and b/lib/plugins/extension/images/disabled.png differ diff --git a/lib/plugins/extension/images/enabled.png b/lib/plugins/extension/images/enabled.png index 7c051cda1..92d958802 100644 Binary files a/lib/plugins/extension/images/enabled.png and b/lib/plugins/extension/images/enabled.png differ diff --git a/lib/plugins/extension/images/license.txt b/lib/plugins/extension/images/license.txt index 254b9cdf6..44e176ac9 100644 --- a/lib/plugins/extension/images/license.txt +++ b/lib/plugins/extension/images/license.txt @@ -1,4 +1,4 @@ -enabled.png - CC-BY-ND, (c) Emey87 http://www.iconfinder.com/icondetails/65590/48/lightbulb_icon -disabled.png - CC-BY-ND, (c) Emey87 http://www.iconfinder.com/icondetails/65589/48/idea_lightbulb_off_icon +enabled.png - CC0, (c) Tanguy Ortolo +disabled.png - public domain, (c) Tango Desktop Project http://commons.wikimedia.org/wiki/File:Dialog-information.svg plugin.png - public domain, (c) nicubunu, http://openclipart.org/detail/15093/blue-jigsaw-piece-07-by-nicubunu template.png - public domain, (c) mathec, http://openclipart.org/detail/166596/palette-by-mathec -- cgit v1.2.3 From f5ff3ceb78b35e5a23887a9948f761457a4ab9cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20Hern=C3=A1ndez?= Date: Fri, 4 Jul 2014 08:20:59 +0200 Subject: translation update --- lib/plugins/extension/lang/es/lang.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/es/lang.php b/lib/plugins/extension/lang/es/lang.php index 16e87f587..63742c3b3 100644 --- a/lib/plugins/extension/lang/es/lang.php +++ b/lib/plugins/extension/lang/es/lang.php @@ -5,7 +5,9 @@ * * @author Antonio Bueno * @author Antonio Castilla + * @author Jonathan Hernández */ +$lang['menu'] = 'Administrador de Extensiones '; $lang['tab_plugins'] = 'Plugins instalados'; $lang['tab_templates'] = 'Plantillas instaladas'; $lang['tab_search'] = 'Buscar e instalar'; @@ -47,6 +49,8 @@ $lang['similar'] = 'Similar a:'; $lang['conflicts'] = 'Conflictos con:'; $lang['donate'] = '¿Cómo está?'; $lang['donate_action'] = '¡Págale un café al autor!'; +$lang['repo_retry'] = 'Trate otra vez'; +$lang['provides'] = 'Provee: '; $lang['status'] = 'Estado:'; $lang['status_installed'] = 'instalado'; $lang['status_not_installed'] = 'no instalado'; @@ -56,6 +60,7 @@ $lang['status_disabled'] = 'desactivado'; $lang['status_unmodifiable'] = 'no modificable'; $lang['status_plugin'] = 'plugin'; $lang['status_template'] = 'plantilla'; +$lang['status_bundled'] = 'agrupado'; $lang['msg_enabled'] = 'Plugin %s activado'; $lang['msg_disabled'] = 'Plugin %s desactivado'; $lang['msg_delete_success'] = 'Extensión desinstalada'; @@ -64,3 +69,16 @@ $lang['msg_template_update_success'] = 'Plantilla %s actualizada con éxito'; $lang['msg_plugin_install_success'] = 'Plugin %s instalado con éxito'; $lang['msg_plugin_update_success'] = 'Plugin %s actualizado con éxito'; $lang['msg_upload_failed'] = 'Falló la carga del archivo'; +$lang['missing_dependency'] = 'Dependencia deshabilitada o perdida: %s'; +$lang['security_issue'] = 'Problema de seguridad: %s'; +$lang['security_warning'] = 'Aviso de seguridad: %s'; +$lang['update_available'] = 'Actualizar: Nueva versión %s disponible.'; +$lang['wrong_folder'] = '"Plugin" instalado incorrectamente: Cambie el nombre del directorio del plugin "%s" a "%s".'; +$lang['url_change'] = 'URL actualizada: El Download URL ha cambiado desde el último download. Verifica si el nuevo URL es valido antes de actualizar la extensión .
    Nuevo: %s
    Viejo: %s'; +$lang['error_badurl'] = 'URLs deberían empezar con http o https'; +$lang['error_dircreate'] = 'No es posible de crear un directorio temporero para poder recibir el download'; +$lang['error_download'] = 'No es posible descargar el documento: %s'; +$lang['git'] = 'Esta extensión fue instalada a través de git, quizás usted no quiera actualizarla aquí mismo.'; +$lang['install_url'] = 'Instalar desde URL:'; +$lang['install_upload'] = 'Subir Extensión:'; +$lang['repo_error'] = 'El repositorio de plugins no puede ser contactado. Asegúrese que su servidor pueda contactar www.dokuwiki.org y verificar la configuración de su proxy.'; -- cgit v1.2.3 From 19accab588843292613a1e12b22b773f07b511ba Mon Sep 17 00:00:00 2001 From: Davor Turkalj Date: Thu, 10 Jul 2014 13:46:11 +0200 Subject: translation update --- lib/plugins/extension/lang/hr/intro_install.txt | 1 + lib/plugins/extension/lang/hr/intro_plugins.txt | 1 + lib/plugins/extension/lang/hr/intro_search.txt | 1 + lib/plugins/extension/lang/hr/intro_templates.txt | 1 + lib/plugins/extension/lang/hr/lang.php | 16 ++++++++++++++++ 5 files changed, 20 insertions(+) create mode 100644 lib/plugins/extension/lang/hr/intro_install.txt create mode 100644 lib/plugins/extension/lang/hr/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/hr/intro_search.txt create mode 100644 lib/plugins/extension/lang/hr/intro_templates.txt create mode 100644 lib/plugins/extension/lang/hr/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/hr/intro_install.txt b/lib/plugins/extension/lang/hr/intro_install.txt new file mode 100644 index 000000000..fc2d22f52 --- /dev/null +++ b/lib/plugins/extension/lang/hr/intro_install.txt @@ -0,0 +1 @@ +Ovdje možete ručno instalirati dodatak (plugin) i predložak (template) bilo učitavanjem ili specificiranjem URL-a za direktno učitavanje. \ No newline at end of file diff --git a/lib/plugins/extension/lang/hr/intro_plugins.txt b/lib/plugins/extension/lang/hr/intro_plugins.txt new file mode 100644 index 000000000..fdc629d62 --- /dev/null +++ b/lib/plugins/extension/lang/hr/intro_plugins.txt @@ -0,0 +1 @@ +Ovo su dodaci (plugin) trenutno instalirani na Vašem DokuWiku-u. Možete ih omogućiti, onemogućiti ili u potpunosti deinstalirati. Nadogradnje dodataka su također prikazane, obavezno pročitajte dokumentaciju dodatka prije nadogradnje. \ No newline at end of file diff --git a/lib/plugins/extension/lang/hr/intro_search.txt b/lib/plugins/extension/lang/hr/intro_search.txt new file mode 100644 index 000000000..93bf4b000 --- /dev/null +++ b/lib/plugins/extension/lang/hr/intro_search.txt @@ -0,0 +1 @@ +Ovaj tab vam pruža pristup dostupnim dodatcima i predlošcima za DokuWiki od treće strane. Molimo budite svjesni da instaliranje koda od treće strane može biti **sigurnosni rizik**, možda želite prvo pročitati o [[doku>security#plugin_security|sigurnosti dodataka]]. \ No newline at end of file diff --git a/lib/plugins/extension/lang/hr/intro_templates.txt b/lib/plugins/extension/lang/hr/intro_templates.txt new file mode 100644 index 000000000..968906cf9 --- /dev/null +++ b/lib/plugins/extension/lang/hr/intro_templates.txt @@ -0,0 +1 @@ +Ovo su predlošci trenutno instalirani na Vašem DokuWiki-u. Možete odabrati koji se predložak koristi na [[?do=admin&page=config|Upravitelju postavki]]. \ No newline at end of file diff --git a/lib/plugins/extension/lang/hr/lang.php b/lib/plugins/extension/lang/hr/lang.php new file mode 100644 index 000000000..7bf483e39 --- /dev/null +++ b/lib/plugins/extension/lang/hr/lang.php @@ -0,0 +1,16 @@ + + */ +$lang['menu'] = 'Upravitelj dodataka'; +$lang['tab_plugins'] = 'Instalirani dodatci'; +$lang['tab_templates'] = 'Instalirani predlošci'; +$lang['tab_search'] = 'Potraži i instaliraj'; +$lang['tab_install'] = 'Ručno instaliranje'; +$lang['notimplemented'] = 'Ova mogućnost još nije napravljena'; +$lang['notinstalled'] = 'Dodatak nije instaliran'; +$lang['alreadyenabled'] = 'Ovaj dodatak je već omogućen'; +$lang['alreadydisabled'] = 'Ovaj dodatak je već onemogućen'; -- cgit v1.2.3 From a66a710866174a0572419cbec805d5b3a01cc630 Mon Sep 17 00:00:00 2001 From: Davor Turkalj Date: Thu, 17 Jul 2014 12:26:20 +0200 Subject: translation update --- lib/plugins/extension/lang/hr/lang.php | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/hr/lang.php b/lib/plugins/extension/lang/hr/lang.php index 7bf483e39..890681301 100644 --- a/lib/plugins/extension/lang/hr/lang.php +++ b/lib/plugins/extension/lang/hr/lang.php @@ -14,3 +14,29 @@ $lang['notimplemented'] = 'Ova mogućnost još nije napravljena'; $lang['notinstalled'] = 'Dodatak nije instaliran'; $lang['alreadyenabled'] = 'Ovaj dodatak je već omogućen'; $lang['alreadydisabled'] = 'Ovaj dodatak je već onemogućen'; +$lang['pluginlistsaveerror'] = 'Dogodila se greška pri snimanju liste dodataka'; +$lang['unknownauthor'] = 'Nepoznat autor'; +$lang['unknownversion'] = 'Nepoznata inačica'; +$lang['btn_info'] = 'Prikaži više informacija'; +$lang['btn_update'] = 'Ažuriraj'; +$lang['btn_uninstall'] = 'Ukloni'; +$lang['btn_enable'] = 'Omogući'; +$lang['btn_disable'] = 'Onemogući'; +$lang['btn_install'] = 'Postavi'; +$lang['btn_reinstall'] = 'Ponovno postavi'; +$lang['js']['reallydel'] = 'Zaista ukloniti ovo proširenje?'; +$lang['search_for'] = 'Pretraži proširenja'; +$lang['search'] = 'Pretraži'; +$lang['extensionby'] = '%s po %s'; +$lang['screenshot'] = 'Slika zaslona od %s'; +$lang['popularity'] = 'Popularnost: %s%%'; +$lang['homepage_link'] = 'Upute'; +$lang['bugs_features'] = 'Greške'; +$lang['tags'] = 'Oznake:'; +$lang['author_hint'] = 'Potraži dodatke od ovog autora'; +$lang['installed'] = 'Postavljeno:'; +$lang['downloadurl'] = 'URL adresa preuzimanja:'; +$lang['repository'] = 'Repozitorij:'; +$lang['unknown'] = 'nepoznat'; +$lang['installed_version'] = 'Postavljena inačica:'; +$lang['install_date'] = 'Vaše zadnje osvježavanje:'; -- cgit v1.2.3 From c1bfccada3ae3c14f8d097eba8b76826a2b72e15 Mon Sep 17 00:00:00 2001 From: Dominik Mahr Date: Fri, 1 Aug 2014 12:46:32 +0200 Subject: translation update --- lib/plugins/extension/lang/de/lang.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/de/lang.php b/lib/plugins/extension/lang/de/lang.php index b0e3b4ff7..ce5495e24 100644 --- a/lib/plugins/extension/lang/de/lang.php +++ b/lib/plugins/extension/lang/de/lang.php @@ -7,6 +7,7 @@ * @author Joerg * @author Simon * @author Hoisl + * @author Dominik Mahr */ $lang['menu'] = 'Erweiterungen verwalten'; $lang['tab_plugins'] = 'Installierte Plugins'; @@ -88,3 +89,4 @@ $lang['nopluginperms'] = 'Das Plugin-Verzeichnis ist schreibgeschützt'; $lang['git'] = 'Diese Erweiterung wurde über git installiert und sollte daher nicht hier aktualisiert werden.'; $lang['install_url'] = 'Von Webadresse (URL) installieren'; $lang['install_upload'] = 'Erweiterung hochladen:'; +$lang['repo_error'] = 'Es konnte keine Verbindung zum Plugin-Verzeichnis hergestellt werden. Stellen sie sicher das der Server Verbindung mit www.dokuwiki.org aufnehmen darf und überprüfen sie ihre Proxy Einstellungen.'; -- cgit v1.2.3 From 6d8e3ea1634ecdd794e663fa1f7c802f2fd8914f Mon Sep 17 00:00:00 2001 From: Stan Date: Sat, 2 Aug 2014 10:06:00 +0200 Subject: translation update --- lib/plugins/extension/lang/zh-tw/lang.php | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 lib/plugins/extension/lang/zh-tw/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/zh-tw/lang.php b/lib/plugins/extension/lang/zh-tw/lang.php new file mode 100644 index 000000000..304aed5ee --- /dev/null +++ b/lib/plugins/extension/lang/zh-tw/lang.php @@ -0,0 +1,11 @@ + + */ +$lang['tab_templates'] = '已安裝裝模版 +'; +$lang['tab_search'] = '搜尋與安裝'; +$lang['btn_update'] = '更新'; -- cgit v1.2.3 From 75112fc56c5237220d4fe1b104317f62eda8a561 Mon Sep 17 00:00:00 2001 From: Anika Henke Date: Sat, 2 Aug 2014 12:19:38 +0100 Subject: updated dates in info.txt of various plugins and template --- lib/plugins/extension/plugin.info.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/plugin.info.txt b/lib/plugins/extension/plugin.info.txt index ef16d78a1..ee9830628 100644 --- a/lib/plugins/extension/plugin.info.txt +++ b/lib/plugins/extension/plugin.info.txt @@ -1,7 +1,7 @@ base extension author Michael Hamann email michael@content-space.de -date 2013-08-01 +date 2014-06-15 name Extension Manager desc Allows managing and installing plugins and templates url https://www.dokuwiki.org/plugin:extension -- cgit v1.2.3 From 3e217a362fe66ee0dba6351d0c748290cdbb992e Mon Sep 17 00:00:00 2001 From: Satoshi Sahara Date: Wed, 6 Aug 2014 21:41:02 +0900 Subject: Last Update Date info of extension fix This request makes "Your last update" of the extension info shown when clicking more info triangle mark. The first installed date of the extension may not be necessary for local site admin work. --- lib/plugins/extension/helper/list.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 47edca8c1..9b1988d84 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -387,7 +387,8 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= '
    '; $return .= hsc($extension->getInstalledVersion()); $return .= '
    '; - } else { + } + if (!$extension->isBundled()) { $return .= '
    '.$this->getLang('install_date').'
    '; $return .= '
    '; $return .= ($extension->getUpdateDate() ? hsc($extension->getUpdateDate()) : $this->getLang('unknown')); @@ -401,13 +402,6 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= '
    '; } - if($extension->getInstallDate()) { - $return .= '
    '.$this->getLang('installed').'
    '; - $return .= '
    '; - $return .= hsc($extension->getInstallDate()); - $return .= '
    '; - } - $return .= '
    '.$this->getLang('provides').'
    '; $return .= '
    '; $return .= ($extension->getTypes() ? hsc(implode(', ', $extension->getTypes())) : $default); -- cgit v1.2.3 From badde455c15d7bd65b7f52072f15259db28a0df9 Mon Sep 17 00:00:00 2001 From: Igor Degraf Date: Thu, 7 Aug 2014 04:45:58 +0200 Subject: translation update --- lib/plugins/extension/lang/ru/lang.php | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php index d524f072b..fa1625f28 100644 --- a/lib/plugins/extension/lang/ru/lang.php +++ b/lib/plugins/extension/lang/ru/lang.php @@ -4,6 +4,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Aleksandr Selivanov + * @author Igor Degraf */ $lang['menu'] = 'Управление дополнениями'; $lang['tab_plugins'] = 'Установленные плагины'; @@ -58,3 +59,10 @@ $lang['msg_template_install_success'] = 'Шаблон %s успешно уста $lang['msg_template_update_success'] = 'Шаблон %s успешно обновлён'; $lang['msg_plugin_install_success'] = 'Плагин %s успешно установлен'; $lang['msg_plugin_update_success'] = 'Плагин %s успешно обновлён'; +$lang['noperms'] = 'Папка для расширений не доступна на запись'; +$lang['notplperms'] = 'Папка для шаблонов не доступна на запись'; +$lang['nopluginperms'] = 'Папка плагинов не доступна на запись'; +$lang['git'] = 'Это расширение было установлено через git, Вы не можете обновить его тут.'; +$lang['install_url'] = 'Установить с адреса URL:'; +$lang['install_upload'] = 'Скачать расширение:'; +$lang['repo_error'] = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org и также проверьте настройки соединения прокси.'; -- cgit v1.2.3 From 41b835a453f94a5109088ca8e9f804154b83442c Mon Sep 17 00:00:00 2001 From: Fabio Date: Sat, 9 Aug 2014 12:51:05 +0200 Subject: translation update --- lib/plugins/extension/lang/it/lang.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/it/lang.php b/lib/plugins/extension/lang/it/lang.php index fbf163d57..7dff6c5b2 100644 --- a/lib/plugins/extension/lang/it/lang.php +++ b/lib/plugins/extension/lang/it/lang.php @@ -4,6 +4,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Francesco + * @author Fabio */ $lang['btn_enable'] = 'Abilita'; $lang['btn_disable'] = 'Disabilita'; @@ -36,6 +37,7 @@ $lang['status_template'] = 'modello'; $lang['error_badurl'] = 'URLs deve iniziare con http o https'; $lang['error_dircreate'] = 'Impossibile creare una cartella temporanea per ricevere il download'; $lang['error_download'] = 'Impossibile scaricare il file: %s'; +$lang['noperms'] = 'La directory Extension non è scrivibile'; $lang['notplperms'] = 'Il modello di cartella non è scrivibile'; $lang['nopluginperms'] = 'La cartella plugin non è scrivibile'; $lang['install_url'] = 'Installa da URL:'; -- cgit v1.2.3 From 1349d49f50efbb15c0d6fff1f9d2a0e85b9d2df0 Mon Sep 17 00:00:00 2001 From: Felipe Castro Date: Wed, 27 Aug 2014 14:21:01 +0200 Subject: translation update --- lib/plugins/extension/lang/pt-br/intro_install.txt | 1 + lib/plugins/extension/lang/pt-br/intro_plugins.txt | 1 + lib/plugins/extension/lang/pt-br/intro_search.txt | 1 + .../extension/lang/pt-br/intro_templates.txt | 1 + lib/plugins/extension/lang/pt-br/lang.php | 75 ++++++++++++++++++++++ 5 files changed, 79 insertions(+) create mode 100644 lib/plugins/extension/lang/pt-br/intro_install.txt create mode 100644 lib/plugins/extension/lang/pt-br/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/pt-br/intro_search.txt create mode 100644 lib/plugins/extension/lang/pt-br/intro_templates.txt create mode 100644 lib/plugins/extension/lang/pt-br/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/pt-br/intro_install.txt b/lib/plugins/extension/lang/pt-br/intro_install.txt new file mode 100644 index 000000000..08527b0f6 --- /dev/null +++ b/lib/plugins/extension/lang/pt-br/intro_install.txt @@ -0,0 +1 @@ +Aqui você pode instalar extensões e modelos manualmente, ou subindo eles ou submetendo uma URL de baixar diretamente. \ No newline at end of file diff --git a/lib/plugins/extension/lang/pt-br/intro_plugins.txt b/lib/plugins/extension/lang/pt-br/intro_plugins.txt new file mode 100644 index 000000000..e0a8c7f3f --- /dev/null +++ b/lib/plugins/extension/lang/pt-br/intro_plugins.txt @@ -0,0 +1 @@ +Estas são as extensões instaladas atualmente no seu DokuWiki. Você pode habilitar ou desabilitar ou desinstalar completamente elas aqui. Atualizações das extensões também são mostradas, certifique-se de ler a documentação da extensão antes de atualizá-la. \ No newline at end of file diff --git a/lib/plugins/extension/lang/pt-br/intro_search.txt b/lib/plugins/extension/lang/pt-br/intro_search.txt new file mode 100644 index 000000000..f2101d73b --- /dev/null +++ b/lib/plugins/extension/lang/pt-br/intro_search.txt @@ -0,0 +1 @@ +Esta aba lhe dá acesso a extensões e modelos disponibilizados por terceiros para o DokuWiki. Favor ter cuidado pois instalar código de terceiros pode acarretar um **risco de segurança**, você poderia ler sobre [[doku>security#plugin_security|segurança de extensões]] primeiramente. \ No newline at end of file diff --git a/lib/plugins/extension/lang/pt-br/intro_templates.txt b/lib/plugins/extension/lang/pt-br/intro_templates.txt new file mode 100644 index 000000000..aa3e07f0c --- /dev/null +++ b/lib/plugins/extension/lang/pt-br/intro_templates.txt @@ -0,0 +1 @@ +Estes são os modelos instalados atualmente no seu DokuWiki. Você pode selecionar o modelo a ser usado no [[?do=admin&page=config|Configuration Manager]]. \ No newline at end of file diff --git a/lib/plugins/extension/lang/pt-br/lang.php b/lib/plugins/extension/lang/pt-br/lang.php new file mode 100644 index 000000000..0d897616a --- /dev/null +++ b/lib/plugins/extension/lang/pt-br/lang.php @@ -0,0 +1,75 @@ + + */ +$lang['menu'] = 'Gerenciador de extensões'; +$lang['tab_plugins'] = 'Extensões instaladas'; +$lang['tab_templates'] = 'Modelos instalados'; +$lang['tab_search'] = 'Procurar e instalar'; +$lang['tab_install'] = 'Instalar manualmente'; +$lang['notimplemented'] = 'Esta função ainda não foi implementada'; +$lang['notinstalled'] = 'Esta extensão não está instalada'; +$lang['alreadyenabled'] = 'Esta extensão já foi habilitada'; +$lang['alreadydisabled'] = 'Esta extensão já foi desabilitada'; +$lang['pluginlistsaveerror'] = 'Houve um erro ao salvar a lista de extensões'; +$lang['unknownauthor'] = 'Autor desconhecido'; +$lang['unknownversion'] = 'Versão desconhecida'; +$lang['btn_info'] = 'Mostrar mais informações'; +$lang['btn_update'] = 'Atualizar'; +$lang['btn_uninstall'] = 'Desinstalar'; +$lang['btn_enable'] = 'Habilitar'; +$lang['btn_disable'] = 'Desabilitar'; +$lang['btn_install'] = 'Instalar'; +$lang['btn_reinstall'] = 'Re-instalar'; +$lang['js']['reallydel'] = 'Quer mesmo desinstalar esta extensão?'; +$lang['search_for'] = 'Procurar extensão:'; +$lang['search'] = 'Procurar'; +$lang['extensionby'] = '%s de %s'; +$lang['screenshot'] = 'Tela congelada de %s'; +$lang['popularity'] = 'Popularidade: %s%%'; +$lang['homepage_link'] = 'Docs'; +$lang['bugs_features'] = 'Erros'; +$lang['tags'] = 'Etiquetas:'; +$lang['author_hint'] = 'Procurar extensões deste autor'; +$lang['installed'] = 'Instalado:'; +$lang['downloadurl'] = 'URL para baixar:'; +$lang['repository'] = 'Repositório:'; +$lang['unknown'] = 'desconhecido'; +$lang['installed_version'] = 'Versão instalada:'; +$lang['install_date'] = 'Sua última atualização:'; +$lang['available_version'] = 'Versão disponível:'; +$lang['compatible'] = 'Compatível com:'; +$lang['depends'] = 'Depende de:'; +$lang['similar'] = 'Similar a:'; +$lang['conflicts'] = 'Colide com:'; +$lang['donate'] = 'Gostou deste?'; +$lang['donate_action'] = 'Pague um café ao autor!'; +$lang['repo_retry'] = 'Tentar de novo'; +$lang['provides'] = 'Disponibiliza:'; +$lang['status'] = 'Estado:'; +$lang['status_installed'] = 'instalado'; +$lang['status_not_installed'] = 'não instalado'; +$lang['status_protected'] = 'protegido'; +$lang['status_enabled'] = 'habilitado'; +$lang['status_disabled'] = 'desabilitado'; +$lang['status_unmodifiable'] = 'não modificável'; +$lang['status_plugin'] = 'extensão'; +$lang['status_template'] = 'modelo'; +$lang['status_bundled'] = 'agrupado'; +$lang['msg_enabled'] = 'Extensão %s habilitada'; +$lang['msg_disabled'] = 'Extensão %s desabilitada'; +$lang['msg_delete_success'] = 'Extensão desinstalada'; +$lang['msg_template_install_success'] = 'Modelo %s instalado com sucesso'; +$lang['msg_template_update_success'] = 'Modelo %s atualizado com sucesso'; +$lang['msg_plugin_install_success'] = 'Extensão %s instalada com sucesso'; +$lang['msg_plugin_update_success'] = 'Extensão %s atualizada com sucesso'; +$lang['msg_upload_failed'] = 'Subida do arquivo falhou'; +$lang['missing_dependency'] = 'Dependência faltante ou desabilitada: %s'; +$lang['security_issue'] = 'Problema com segurança: %s'; +$lang['security_warning'] = 'Aviso sobre segurança: %s'; +$lang['update_available'] = 'Atualização: Nova versão %s está disponível.'; +$lang['wrong_folder'] = 'Extensão instalada incorretamente: Renomeie o diretório de extensões "%s" para "%s".'; +$lang['url_change'] = 'URL mudou: A URL para baixar mudou desde a última baixada. Verifique se a nova URL é válida antes de atualizar a extensão.
    Novo: %s
    Velho: %s'; -- cgit v1.2.3 From c3dd5e61641701501b845f71f894380966d71151 Mon Sep 17 00:00:00 2001 From: Davor Turkalj Date: Mon, 8 Sep 2014 12:56:14 +0200 Subject: translation update --- lib/plugins/extension/lang/hr/lang.php | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/hr/lang.php b/lib/plugins/extension/lang/hr/lang.php index 890681301..1bc214056 100644 --- a/lib/plugins/extension/lang/hr/lang.php +++ b/lib/plugins/extension/lang/hr/lang.php @@ -40,3 +40,49 @@ $lang['repository'] = 'Repozitorij:'; $lang['unknown'] = 'nepoznat'; $lang['installed_version'] = 'Postavljena inačica:'; $lang['install_date'] = 'Vaše zadnje osvježavanje:'; +$lang['available_version'] = 'Dostupna inačica'; +$lang['compatible'] = 'Kompatibilan s:'; +$lang['depends'] = 'Zavisi o:'; +$lang['similar'] = 'Sličan s:'; +$lang['conflicts'] = 'U sukobu s:'; +$lang['donate'] = 'Poput ovog?'; +$lang['donate_action'] = 'Kupite autoru kavu!'; +$lang['repo_retry'] = 'Ponovi'; +$lang['provides'] = 'Osigurava:'; +$lang['status'] = 'Status:'; +$lang['status_installed'] = 'ugrađen'; +$lang['status_not_installed'] = 'nije ugrađen'; +$lang['status_protected'] = 'zaštićen'; +$lang['status_enabled'] = 'omogućen'; +$lang['status_disabled'] = 'onemogućen'; +$lang['status_unmodifiable'] = 'neizmjenjiv'; +$lang['status_plugin'] = 'dodatak'; +$lang['status_template'] = 'predložak'; +$lang['status_bundled'] = 'ugrađen'; +$lang['msg_enabled'] = 'Dodatak %s omogućen'; +$lang['msg_disabled'] = 'Dodatak %s onemogućen'; +$lang['msg_delete_success'] = 'Proširenje uklonjeno'; +$lang['msg_template_install_success'] = 'Predložak %s uspješno ugrađen'; +$lang['msg_template_update_success'] = 'Predložak %s uspješno nadograđen'; +$lang['msg_plugin_install_success'] = 'Dodatak %s uspješno ugrađen'; +$lang['msg_plugin_update_success'] = 'Dodatak %s uspješno nadograđen'; +$lang['msg_upload_failed'] = 'Učitavanje datoteke nije uspjelo'; +$lang['missing_dependency'] = 'Nedostaje ili onemogućena zavisnost: %s'; +$lang['security_issue'] = 'Sigurnosno pitanje: %s'; +$lang['security_warning'] = 'Sigurnosno upozorenje: %s'; +$lang['update_available'] = 'Nadogranja: Nova inačica %s je dostupna.'; +$lang['wrong_folder'] = 'Dodatak neispravno ugrađen: Preimenujte mapu dodatka iz "%s" u "%s".'; +$lang['url_change'] = 'URL izmijenjen: Adresa za preuzimanje je promijenjena od zadnjeg preuzimanja. Provjerite da li je novu URL valjan prije nadogradnje proširenja.
    Novi: %s
    Stari: %s'; +$lang['error_badurl'] = 'URL adrese trebaju započinjati sa http ili https'; +$lang['error_dircreate'] = 'Ne mogu napraviti privremenu mapu za prihvat preuzimanja'; +$lang['error_download'] = 'Ne mogu preuzeti datoteku: %s'; +$lang['error_decompress'] = 'Ne mogu raspakirati preuzetu datoteku. To može biti rezultati lošeg preuzimanja i tada treba pokušati ponovo; ili format sažimanja je nepoznat i u tom slučaju treba datoteku ručno preuzeti i ugraditi.'; +$lang['error_findfolder'] = 'Ne mogu odrediti mapu proširenja, trebate ga ručno preuzeti i ugraditi'; +$lang['error_copy'] = 'Dogodila se greška pri kopiranju dok je pokušavanja ugradnja datoteka u mapu %s: disk može biti pun ili dozvole pristupa nisu dobre. Ovo može rezultirati djelomično ugrađenim dodatkom i može učiniti Vaš wiki nestabilnim'; +$lang['noperms'] = 'Nije moguće pisati u mapu proširanja'; +$lang['notplperms'] = 'Nije moguće pisati u mapu predloška'; +$lang['nopluginperms'] = 'Nije moguće pisati u mapu dodatka'; +$lang['git'] = 'Proširenje je ugrađeno preko Git-a, možda ga ne želite nadograđivati ovdje.'; +$lang['install_url'] = 'Ugradi s URL-a:'; +$lang['install_upload'] = 'Učitaj proširenje:'; +$lang['repo_error'] = 'Repozitorij dodataka nije dostupan. Budite sigurni da server može pristupiti www.dokuwiki.org i provjerite proxy postavke.'; -- cgit v1.2.3 From 2c917972fa1601d7765e56a079884f4a24a69a7e Mon Sep 17 00:00:00 2001 From: Mohamad Mehdi Habibi Date: Wed, 10 Sep 2014 09:50:56 +0200 Subject: translation update --- lib/plugins/extension/lang/fa/lang.php | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 lib/plugins/extension/lang/fa/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/fa/lang.php b/lib/plugins/extension/lang/fa/lang.php new file mode 100644 index 000000000..95c3e9652 --- /dev/null +++ b/lib/plugins/extension/lang/fa/lang.php @@ -0,0 +1,40 @@ + + */ +$lang['menu'] = 'مدیریت افزونه ها'; +$lang['tab_plugins'] = 'پلاگین های نصب شده'; +$lang['tab_templates'] = 'قالب های نصب شده'; +$lang['tab_search'] = 'جستجو و نصب'; +$lang['tab_install'] = 'نصب دستی'; +$lang['notinstalled'] = 'این افزونه نصب نشده است'; +$lang['alreadyenabled'] = 'این افزونه فعال شده است'; +$lang['alreadydisabled'] = 'این افزونه غیرفعال شده است'; +$lang['unknownversion'] = 'نسخه ناشناخته'; +$lang['btn_info'] = 'نمایش اطلاعات بیشتر'; +$lang['btn_update'] = 'به روز رسانی'; +$lang['btn_enable'] = 'فعال'; +$lang['btn_disable'] = 'غیرفعال'; +$lang['btn_install'] = 'نصب'; +$lang['btn_reinstall'] = 'نصب مجدد'; +$lang['search_for'] = 'جستجوی افزونه:'; +$lang['search'] = 'جستجو'; +$lang['tags'] = 'برچسب ها:'; +$lang['installed_version'] = 'نسخه نصب شده:'; +$lang['available_version'] = 'نسخه در دسترس:'; +$lang['repo_retry'] = 'دوباره'; +$lang['status'] = 'وضعیت'; +$lang['status_installed'] = 'نصب شده'; +$lang['status_not_installed'] = 'نصب نشده'; +$lang['status_enabled'] = 'فعال'; +$lang['status_disabled'] = 'غیرفعال'; +$lang['status_plugin'] = 'پلاگین'; +$lang['status_template'] = 'قالب'; +$lang['noperms'] = 'پوشه افزونه ها قابل نوشتن نیست'; +$lang['notplperms'] = 'پوشه قالب ها قابل نوشتن نیست'; +$lang['nopluginperms'] = 'پوشه پلاگین ها قابل نوشتن نیست'; +$lang['install_url'] = 'نصب از آدرس:'; +$lang['install_upload'] = 'بارگذاری افزونه:'; -- cgit v1.2.3 From 505d947e52392dcc03b5d45fb8c441288d1258e0 Mon Sep 17 00:00:00 2001 From: June-Hao Hou Date: Sat, 13 Sep 2014 10:26:06 +0200 Subject: translation update --- lib/plugins/extension/lang/zh-tw/intro_install.txt | 1 + lib/plugins/extension/lang/zh-tw/lang.php | 39 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 lib/plugins/extension/lang/zh-tw/intro_install.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/zh-tw/intro_install.txt b/lib/plugins/extension/lang/zh-tw/intro_install.txt new file mode 100644 index 000000000..3ba93f5f8 --- /dev/null +++ b/lib/plugins/extension/lang/zh-tw/intro_install.txt @@ -0,0 +1 @@ +在此你可以透過檔案上傳或提供下載網址的方式,進行手動安裝外掛與版型風格。 \ No newline at end of file diff --git a/lib/plugins/extension/lang/zh-tw/lang.php b/lib/plugins/extension/lang/zh-tw/lang.php index 304aed5ee..a86364d7a 100644 --- a/lib/plugins/extension/lang/zh-tw/lang.php +++ b/lib/plugins/extension/lang/zh-tw/lang.php @@ -4,8 +4,47 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Stan + * @author June-Hao Hou */ +$lang['menu'] = '延伸功能管理'; +$lang['tab_plugins'] = '已安裝外掛'; $lang['tab_templates'] = '已安裝裝模版 '; $lang['tab_search'] = '搜尋與安裝'; +$lang['tab_install'] = '手動安裝'; +$lang['notimplemented'] = '此功能尚未完成'; +$lang['notinstalled'] = '此延伸功能尚未安裝'; +$lang['alreadyenabled'] = '此延伸功能已經安裝'; +$lang['alreadydisabled'] = '此延伸功能停用'; +$lang['unknownauthor'] = '作者未知'; +$lang['unknownversion'] = '版本未知'; +$lang['btn_info'] = '顯示更多訊息'; $lang['btn_update'] = '更新'; +$lang['btn_uninstall'] = '移除安裝'; +$lang['btn_enable'] = '啟用'; +$lang['btn_disable'] = '停用'; +$lang['btn_install'] = '安裝'; +$lang['btn_reinstall'] = '重新安裝'; +$lang['js']['reallydel'] = '確定要移除此延伸功能?'; +$lang['search_for'] = '搜尋延伸功能:'; +$lang['search'] = '搜尋'; +$lang['tags'] = '標籤:'; +$lang['author_hint'] = '搜尋相同作者的延伸功能'; +$lang['installed'] = '已安裝:'; +$lang['downloadurl'] = '下載網址:'; +$lang['installed_version'] = '已安裝版本:'; +$lang['available_version'] = '可用版本:'; +$lang['compatible'] = '相容於:'; +$lang['repo_retry'] = '再試一次'; +$lang['status'] = '狀態:'; +$lang['status_installed'] = '已安裝'; +$lang['status_not_installed'] = '未安裝'; +$lang['status_enabled'] = '作用中'; +$lang['status_disabled'] = '停用中'; +$lang['status_plugin'] = '外掛'; +$lang['noperms'] = '延伸功能資料夾無法寫入'; +$lang['notplperms'] = '版型資料夾無法寫入'; +$lang['nopluginperms'] = '外掛資料夾無法寫入'; +$lang['git'] = '此延伸功能是透過git安裝的,最好不要用上傳方式。'; +$lang['install_url'] = '透過網址安裝:'; +$lang['install_upload'] = '上傳延伸功能:'; -- cgit v1.2.3 From 616de5f5944160b7aa9472ed1dea84b302018055 Mon Sep 17 00:00:00 2001 From: Viktor Zavadil Date: Mon, 15 Sep 2014 10:46:00 +0200 Subject: translation update --- lib/plugins/extension/lang/cs/lang.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 lib/plugins/extension/lang/cs/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/cs/lang.php b/lib/plugins/extension/lang/cs/lang.php new file mode 100644 index 000000000..2a643c338 --- /dev/null +++ b/lib/plugins/extension/lang/cs/lang.php @@ -0,0 +1,19 @@ + + */ +$lang['menu'] = 'Manager rozšíření'; +$lang['tab_plugins'] = 'Instalované moduly'; +$lang['tab_templates'] = 'Instalované šablony'; +$lang['tab_search'] = 'Vyhledej a instaluj'; +$lang['tab_install'] = 'Ruční instalování'; +$lang['notimplemented'] = 'Tato vychytávka není dosud implementována'; +$lang['notinstalled'] = 'Toto rozšíření není instalováno'; +$lang['alreadyenabled'] = 'Toto rozšíření je již povoleno'; +$lang['alreadydisabled'] = 'Toto rozšíření je již vypnuto'; +$lang['unknownauthor'] = 'Neznámý autor'; +$lang['unknownversion'] = 'Neznámá verze'; +$lang['btn_info'] = 'Zobrazit více informací'; -- cgit v1.2.3 From ba6828f27e91bee04d1c8eeb65711a70a20ccebe Mon Sep 17 00:00:00 2001 From: Davor Turkalj Date: Fri, 19 Sep 2014 11:11:03 +0200 Subject: translation update --- lib/plugins/extension/lang/hr/lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/hr/lang.php b/lib/plugins/extension/lang/hr/lang.php index 1bc214056..4905fe864 100644 --- a/lib/plugins/extension/lang/hr/lang.php +++ b/lib/plugins/extension/lang/hr/lang.php @@ -18,7 +18,7 @@ $lang['pluginlistsaveerror'] = 'Dogodila se greška pri snimanju liste dodatak $lang['unknownauthor'] = 'Nepoznat autor'; $lang['unknownversion'] = 'Nepoznata inačica'; $lang['btn_info'] = 'Prikaži više informacija'; -$lang['btn_update'] = 'Ažuriraj'; +$lang['btn_update'] = 'Dopuni'; $lang['btn_uninstall'] = 'Ukloni'; $lang['btn_enable'] = 'Omogući'; $lang['btn_disable'] = 'Onemogući'; -- cgit v1.2.3 From 2c99198de3e2c36f9df1cd8897770ced395e3b8a Mon Sep 17 00:00:00 2001 From: Jaroslav Lichtblau Date: Sat, 20 Sep 2014 11:21:00 +0200 Subject: translation update --- lib/plugins/extension/lang/cs/intro_install.txt | 1 + lib/plugins/extension/lang/cs/lang.php | 38 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 lib/plugins/extension/lang/cs/intro_install.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/cs/intro_install.txt b/lib/plugins/extension/lang/cs/intro_install.txt new file mode 100644 index 000000000..b274959b9 --- /dev/null +++ b/lib/plugins/extension/lang/cs/intro_install.txt @@ -0,0 +1 @@ +Zde můžete ručně instalovat zásuvné moduly a šablony vzhledu, buď nahráním, nebo zadáním přímé URL pro stažení. \ No newline at end of file diff --git a/lib/plugins/extension/lang/cs/lang.php b/lib/plugins/extension/lang/cs/lang.php index 2a643c338..27b3a94a3 100644 --- a/lib/plugins/extension/lang/cs/lang.php +++ b/lib/plugins/extension/lang/cs/lang.php @@ -4,6 +4,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Viktor Zavadil + * @author Jaroslav Lichtblau */ $lang['menu'] = 'Manager rozšíření'; $lang['tab_plugins'] = 'Instalované moduly'; @@ -17,3 +18,40 @@ $lang['alreadydisabled'] = 'Toto rozšíření je již vypnuto'; $lang['unknownauthor'] = 'Neznámý autor'; $lang['unknownversion'] = 'Neznámá verze'; $lang['btn_info'] = 'Zobrazit více informací'; +$lang['btn_update'] = 'Aktualizovat'; +$lang['btn_uninstall'] = 'Odinstalovat'; +$lang['btn_enable'] = 'Povolit'; +$lang['btn_disable'] = 'Zakázat'; +$lang['btn_install'] = 'Instalovat'; +$lang['btn_reinstall'] = 'Přeinstalovat'; +$lang['js']['reallydel'] = 'Opravdu odinstalovat toto rozšíření?'; +$lang['search_for'] = 'Hledat rozšíření:'; +$lang['search'] = 'Hledat'; +$lang['popularity'] = 'Popularita: %s%%'; +$lang['homepage_link'] = 'Dokumenty'; +$lang['bugs_features'] = 'Chyby'; +$lang['tags'] = 'Štítky:'; +$lang['author_hint'] = 'Vyhledat rozšíření podle tohoto autora'; +$lang['installed'] = 'Nainstalováno:'; +$lang['repository'] = 'Repozitář:'; +$lang['unknown'] = 'neznámý'; +$lang['installed_version'] = 'Nainstalovaná verze:'; +$lang['install_date'] = 'Poslední aktualizace'; +$lang['available_version'] = 'Dostupná verze:'; +$lang['compatible'] = 'Kompatibilní s:'; +$lang['depends'] = 'Závisí na:'; +$lang['similar'] = 'Podobný jako:'; +$lang['donate'] = 'Líbí se ti to?'; +$lang['donate_action'] = 'Kup autorovi kávu!'; +$lang['repo_retry'] = 'Opakovat'; +$lang['provides'] = 'Poskytuje:'; +$lang['status'] = 'Stav:'; +$lang['status_installed'] = 'instalovaný'; +$lang['status_not_installed'] = 'nenainstalovaný'; +$lang['status_protected'] = 'chráněný'; +$lang['status_enabled'] = 'povolený'; +$lang['status_disabled'] = 'zakázaný'; +$lang['status_unmodifiable'] = 'neměnný'; +$lang['status_plugin'] = 'zásuvný modul'; +$lang['status_template'] = 'šablona'; +$lang['msg_delete_success'] = 'Rozšíření odinstalováno'; -- cgit v1.2.3 From 9d7d72dc83bc9b2cb23ec14fdc83c0c665e8039d Mon Sep 17 00:00:00 2001 From: Davor Turkalj Date: Tue, 30 Sep 2014 22:26:03 +0200 Subject: translation update --- lib/plugins/extension/lang/hr/lang.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/hr/lang.php b/lib/plugins/extension/lang/hr/lang.php index 4905fe864..f43defcb1 100644 --- a/lib/plugins/extension/lang/hr/lang.php +++ b/lib/plugins/extension/lang/hr/lang.php @@ -6,24 +6,24 @@ * @author Davor Turkalj */ $lang['menu'] = 'Upravitelj dodataka'; -$lang['tab_plugins'] = 'Instalirani dodatci'; -$lang['tab_templates'] = 'Instalirani predlošci'; -$lang['tab_search'] = 'Potraži i instaliraj'; -$lang['tab_install'] = 'Ručno instaliranje'; +$lang['tab_plugins'] = 'Ugrađeni dodatci'; +$lang['tab_templates'] = 'Ugrađeni predlošci'; +$lang['tab_search'] = 'Potraži i ugradi'; +$lang['tab_install'] = 'Ručna ugradnja'; $lang['notimplemented'] = 'Ova mogućnost još nije napravljena'; -$lang['notinstalled'] = 'Dodatak nije instaliran'; +$lang['notinstalled'] = 'Dodatak nije ugrađen'; $lang['alreadyenabled'] = 'Ovaj dodatak je već omogućen'; $lang['alreadydisabled'] = 'Ovaj dodatak je već onemogućen'; $lang['pluginlistsaveerror'] = 'Dogodila se greška pri snimanju liste dodataka'; $lang['unknownauthor'] = 'Nepoznat autor'; $lang['unknownversion'] = 'Nepoznata inačica'; $lang['btn_info'] = 'Prikaži više informacija'; -$lang['btn_update'] = 'Dopuni'; +$lang['btn_update'] = 'Dogradi'; $lang['btn_uninstall'] = 'Ukloni'; $lang['btn_enable'] = 'Omogući'; $lang['btn_disable'] = 'Onemogući'; -$lang['btn_install'] = 'Postavi'; -$lang['btn_reinstall'] = 'Ponovno postavi'; +$lang['btn_install'] = 'Ugradi'; +$lang['btn_reinstall'] = 'Ponovno ugradi'; $lang['js']['reallydel'] = 'Zaista ukloniti ovo proširenje?'; $lang['search_for'] = 'Pretraži proširenja'; $lang['search'] = 'Pretraži'; @@ -34,11 +34,11 @@ $lang['homepage_link'] = 'Upute'; $lang['bugs_features'] = 'Greške'; $lang['tags'] = 'Oznake:'; $lang['author_hint'] = 'Potraži dodatke od ovog autora'; -$lang['installed'] = 'Postavljeno:'; +$lang['installed'] = 'Ugrađeno:'; $lang['downloadurl'] = 'URL adresa preuzimanja:'; $lang['repository'] = 'Repozitorij:'; $lang['unknown'] = 'nepoznat'; -$lang['installed_version'] = 'Postavljena inačica:'; +$lang['installed_version'] = 'Ugrađena inačica:'; $lang['install_date'] = 'Vaše zadnje osvježavanje:'; $lang['available_version'] = 'Dostupna inačica'; $lang['compatible'] = 'Kompatibilan s:'; -- cgit v1.2.3 From aecab027b93163e5323c66056fa5da665beef091 Mon Sep 17 00:00:00 2001 From: Rainbow Spike Date: Wed, 1 Oct 2014 21:06:29 +1100 Subject: Update lang.php Microfix --- lib/plugins/extension/lang/ru/lang.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php index fa1625f28..7fb39b3e9 100644 --- a/lib/plugins/extension/lang/ru/lang.php +++ b/lib/plugins/extension/lang/ru/lang.php @@ -25,7 +25,7 @@ $lang['js']['reallydel'] = 'Действительно удалить эт $lang['search_for'] = 'Поиск дополнения:'; $lang['search'] = 'Найти'; $lang['extensionby'] = '%s — %s'; -$lang['popularity'] = 'Попоулярность: %s%%'; +$lang['popularity'] = 'Популярность: %s%%'; $lang['bugs_features'] = 'Ошибки'; $lang['tags'] = 'Метки:'; $lang['author_hint'] = 'Найти дополнения этого автора'; @@ -46,23 +46,23 @@ $lang['repo_retry'] = 'Повторить'; $lang['status_installed'] = 'установлено'; $lang['status_not_installed'] = 'не установлено'; $lang['status_protected'] = 'защищено'; -$lang['status_enabled'] = 'включен'; +$lang['status_enabled'] = 'включён'; $lang['status_disabled'] = 'отключено'; $lang['status_unmodifiable'] = 'неизменяемо'; $lang['status_plugin'] = 'плагин'; $lang['status_template'] = 'шаблон'; $lang['status_bundled'] = 'в комплекте'; -$lang['msg_enabled'] = 'Плагин %s включен'; -$lang['msg_disabled'] = 'Плагин %s отключен'; +$lang['msg_enabled'] = 'Плагин %s включён'; +$lang['msg_disabled'] = 'Плагин %s отключён'; $lang['msg_delete_success'] = 'Дополнение удалено'; $lang['msg_template_install_success'] = 'Шаблон %s успешно установлен'; $lang['msg_template_update_success'] = 'Шаблон %s успешно обновлён'; $lang['msg_plugin_install_success'] = 'Плагин %s успешно установлен'; $lang['msg_plugin_update_success'] = 'Плагин %s успешно обновлён'; -$lang['noperms'] = 'Папка для расширений не доступна на запись'; -$lang['notplperms'] = 'Папка для шаблонов не доступна на запись'; -$lang['nopluginperms'] = 'Папка плагинов не доступна на запись'; +$lang['noperms'] = 'Папка для расширений не доступна для записи'; +$lang['notplperms'] = 'Папка для шаблонов не доступна для записи'; +$lang['nopluginperms'] = 'Папка плагинов не доступна для записи'; $lang['git'] = 'Это расширение было установлено через git, Вы не можете обновить его тут.'; $lang['install_url'] = 'Установить с адреса URL:'; $lang['install_upload'] = 'Скачать расширение:'; -$lang['repo_error'] = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org и также проверьте настройки соединения прокси.'; +$lang['repo_error'] = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org, а также проверьте настройки соединения с Интернет.'; -- cgit v1.2.3 From 253d4b48ec708eb42033862dc15c8576f44a48ed Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Wed, 1 Oct 2014 15:32:05 +0200 Subject: more PHPDocs, unused var, small bit code reformatting --- lib/plugins/extension/helper/extension.php | 8 ++++++-- lib/plugins/extension/helper/list.php | 1 - 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index 2aca0e218..dfa624907 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -799,7 +799,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * * The directory is registered for cleanup when the class is destroyed * - * @return bool|string + * @return false|string */ protected function mkTmpDir(){ $dir = io_mktmpdir(); @@ -1079,7 +1079,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { * * @author Andreas Gohr * @param string $file The file to analyze - * @return string|bool false if the file can't be read, otherwise an "extension" + * @return string|false false if the file can't be read, otherwise an "extension" */ private function guess_archive($file) { $fh = fopen($file, 'rb'); @@ -1095,6 +1095,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { /** * Copy with recursive sub-directory support + * + * @param string $src filename path to file + * @param string $dst filename path to file + * @return bool|int|string */ private function dircopy($src, $dst) { global $conf; diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 9b1988d84..6fc8c63b1 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -333,7 +333,6 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { * Shortens the URL for display * * @param string $url - * * @return string HTML link */ function shortlink($url){ -- cgit v1.2.3 From 7e8500eea1e53b1de0e0f70400664afa442cd08d Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Thu, 2 Oct 2014 14:55:24 +0200 Subject: PHPDocs and some improvements --- lib/plugins/extension/admin.php | 6 +++--- lib/plugins/extension/helper/repository.php | 6 +++--- lib/plugins/extension/lang/en/lang.php | 3 ++- lib/plugins/extension/lang/nl/lang.php | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index 99c74848b..de4992937 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -75,10 +75,10 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { case 'uninstall': $extension->setExtension($extname); $status = $extension->uninstall(); - if($status !== true) { - msg($status, -1); - } else { + if($status) { msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getDisplayName())), 1); + } else { + msg(sprintf($this->getLang('msg_delete_failed'), hsc($extension->getDisplayName())), -1); } break; case 'enable'; diff --git a/lib/plugins/extension/helper/repository.php b/lib/plugins/extension/helper/repository.php index 6ffe89eb7..5dc2707cf 100644 --- a/lib/plugins/extension/helper/repository.php +++ b/lib/plugins/extension/helper/repository.php @@ -32,7 +32,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { $request_needed = false; foreach ($list as $name) { $cache = new cache('##extension_manager##'.$name, '.repo'); - $result = null; + if (!isset($this->loaded_extensions[$name]) && $this->hasAccess() && !$cache->useCache(array('age' => 3600 * 24))) { $this->loaded_extensions[$name] = true; $request_data['ext'][] = $name; @@ -64,7 +64,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { public function hasAccess() { if ($this->has_access === null) { $cache = new cache('##extension_manager###hasAccess', '.repo'); - $result = null; + if (!$cache->useCache(array('age' => 3600 * 24, 'purge'=>1))) { $httpclient = new DokuHTTPClient(); $httpclient->timeout = 5; @@ -91,7 +91,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin { */ public function getData($name) { $cache = new cache('##extension_manager##'.$name, '.repo'); - $result = null; + if (!isset($this->loaded_extensions[$name]) && $this->hasAccess() && !$cache->useCache(array('age' => 3600 * 24))) { $this->loaded_extensions[$name] = true; $httpclient = new DokuHTTPClient(); diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 72c9b9e2d..4da41a2fd 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -69,7 +69,8 @@ $lang['status_bundled'] = 'bundled'; $lang['msg_enabled'] = 'Plugin %s enabled'; $lang['msg_disabled'] = 'Plugin %s disabled'; -$lang['msg_delete_success'] = 'Extension uninstalled'; +$lang['msg_delete_success'] = 'Extension %s uninstalled'; +$lang['msg_delete_failed'] = 'Uninstalling Extension %s failed'; $lang['msg_template_install_success'] = 'Template %s installed successfully'; $lang['msg_template_update_success'] = 'Template %s updated successfully'; $lang['msg_plugin_install_success'] = 'Plugin %s installed successfully'; diff --git a/lib/plugins/extension/lang/nl/lang.php b/lib/plugins/extension/lang/nl/lang.php index a54924e93..f75f78121 100644 --- a/lib/plugins/extension/lang/nl/lang.php +++ b/lib/plugins/extension/lang/nl/lang.php @@ -63,7 +63,7 @@ $lang['status_template'] = 'template'; $lang['status_bundled'] = 'Gebundeld'; $lang['msg_enabled'] = 'Plugin %s ingeschakeld'; $lang['msg_disabled'] = 'Plugin %s uitgeschakeld'; -$lang['msg_delete_success'] = 'Uitbreiding gedeinstalleerd'; +$lang['msg_delete_success'] = 'Uitbreiding %s gedeinstalleerd'; $lang['msg_template_install_success'] = 'Template %s werd succesvol geïnstalleerd'; $lang['msg_template_update_success'] = 'Template %s werd succesvol geüpdatet'; $lang['msg_plugin_install_success'] = 'Plugin %s werd succesvol geïnstalleerd'; -- cgit v1.2.3 From a1298aeaa8cf1dc3bba3fb7ecadb0d989afc42cf Mon Sep 17 00:00:00 2001 From: Aleksandr Selivanov Date: Sat, 18 Oct 2014 18:25:58 +0200 Subject: translation update --- lib/plugins/extension/lang/ru/lang.php | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php index 7fb39b3e9..24e6fe224 100644 --- a/lib/plugins/extension/lang/ru/lang.php +++ b/lib/plugins/extension/lang/ru/lang.php @@ -26,7 +26,8 @@ $lang['search_for'] = 'Поиск дополнения:'; $lang['search'] = 'Найти'; $lang['extensionby'] = '%s — %s'; $lang['popularity'] = 'Популярность: %s%%'; -$lang['bugs_features'] = 'Ошибки'; +$lang['homepage_link'] = 'Описание'; +$lang['bugs_features'] = 'Баг-трекер'; $lang['tags'] = 'Метки:'; $lang['author_hint'] = 'Найти дополнения этого автора'; $lang['installed'] = 'Установлено:'; @@ -43,6 +44,8 @@ $lang['conflicts'] = 'Конфликтует с:'; $lang['donate'] = 'Нравится?'; $lang['donate_action'] = 'Купить автору кофе!'; $lang['repo_retry'] = 'Повторить'; +$lang['provides'] = 'Предоставляет:'; +$lang['status'] = 'Статус:'; $lang['status_installed'] = 'установлено'; $lang['status_not_installed'] = 'не установлено'; $lang['status_protected'] = 'защищено'; @@ -59,10 +62,12 @@ $lang['msg_template_install_success'] = 'Шаблон %s успешно уста $lang['msg_template_update_success'] = 'Шаблон %s успешно обновлён'; $lang['msg_plugin_install_success'] = 'Плагин %s успешно установлен'; $lang['msg_plugin_update_success'] = 'Плагин %s успешно обновлён'; -$lang['noperms'] = 'Папка для расширений не доступна для записи'; -$lang['notplperms'] = 'Папка для шаблонов не доступна для записи'; -$lang['nopluginperms'] = 'Папка плагинов не доступна для записи'; -$lang['git'] = 'Это расширение было установлено через git, Вы не можете обновить его тут.'; +$lang['update_available'] = 'Обновление: доступна новая версия %s.'; +$lang['error_badurl'] = 'Ссылки должны начинаться с http или https'; +$lang['noperms'] = 'Папка для расширений недоступна для записи'; +$lang['notplperms'] = 'Папка для шаблонов недоступна для записи'; +$lang['nopluginperms'] = 'Папка плагинов недоступна для записи'; +$lang['git'] = 'Это расширение было установлено через git. Вы не можете обновить его тут.'; $lang['install_url'] = 'Установить с адреса URL:'; $lang['install_upload'] = 'Скачать расширение:'; -$lang['repo_error'] = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org, а также проверьте настройки соединения с Интернет.'; +$lang['repo_error'] = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org, а также проверьте настройки соединения с Интернетом.'; -- cgit v1.2.3 From 17bc1e4f530dbbc74ad4ba9067782f248d003045 Mon Sep 17 00:00:00 2001 From: Jaroslav Lichtblau Date: Wed, 22 Oct 2014 13:01:09 +0200 Subject: translation update --- lib/plugins/extension/lang/cs/lang.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/cs/lang.php b/lib/plugins/extension/lang/cs/lang.php index 27b3a94a3..783b488ea 100644 --- a/lib/plugins/extension/lang/cs/lang.php +++ b/lib/plugins/extension/lang/cs/lang.php @@ -55,3 +55,5 @@ $lang['status_unmodifiable'] = 'neměnný'; $lang['status_plugin'] = 'zásuvný modul'; $lang['status_template'] = 'šablona'; $lang['msg_delete_success'] = 'Rozšíření odinstalováno'; +$lang['msg_plugin_install_success'] = 'Zásuvný modul %s úspěšně nainstalován.'; +$lang['msg_plugin_update_success'] = 'Zásuvný modul %s úspěšně aktualizován.'; -- cgit v1.2.3 From ae6f2c31087f39c5c677957200a306b1911c990c Mon Sep 17 00:00:00 2001 From: lioujheyu Date: Mon, 27 Oct 2014 04:16:14 +0100 Subject: translation update --- lib/plugins/extension/lang/zh-tw/intro_plugins.txt | 1 + lib/plugins/extension/lang/zh-tw/lang.php | 30 ++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 lib/plugins/extension/lang/zh-tw/intro_plugins.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/zh-tw/intro_plugins.txt b/lib/plugins/extension/lang/zh-tw/intro_plugins.txt new file mode 100644 index 000000000..b5b77a267 --- /dev/null +++ b/lib/plugins/extension/lang/zh-tw/intro_plugins.txt @@ -0,0 +1 @@ +已經有一些外掛套件被安裝在你的DokuWiki之中。你可以在這裡啟用、禁用,甚至是完全移除它們。如外掛可更新也同時會顯示在這裡,請確保在更新前先閱讀過該套件之文件。 \ No newline at end of file diff --git a/lib/plugins/extension/lang/zh-tw/lang.php b/lib/plugins/extension/lang/zh-tw/lang.php index a86364d7a..79657ffeb 100644 --- a/lib/plugins/extension/lang/zh-tw/lang.php +++ b/lib/plugins/extension/lang/zh-tw/lang.php @@ -5,6 +5,7 @@ * * @author Stan * @author June-Hao Hou + * @author lioujheyu */ $lang['menu'] = '延伸功能管理'; $lang['tab_plugins'] = '已安裝外掛'; @@ -28,20 +29,49 @@ $lang['btn_reinstall'] = '重新安裝'; $lang['js']['reallydel'] = '確定要移除此延伸功能?'; $lang['search_for'] = '搜尋延伸功能:'; $lang['search'] = '搜尋'; +$lang['homepage_link'] = '文件'; $lang['tags'] = '標籤:'; $lang['author_hint'] = '搜尋相同作者的延伸功能'; $lang['installed'] = '已安裝:'; $lang['downloadurl'] = '下載網址:'; +$lang['unknown'] = '未知'; $lang['installed_version'] = '已安裝版本:'; +$lang['install_date'] = '你最後一次更新: '; $lang['available_version'] = '可用版本:'; $lang['compatible'] = '相容於:'; +$lang['depends'] = '依賴於: '; +$lang['similar'] = '類似於: '; +$lang['conflicts'] = '相衝突於: '; +$lang['donate'] = '像這樣?'; +$lang['donate_action'] = '請作者一杯咖啡!'; $lang['repo_retry'] = '再試一次'; $lang['status'] = '狀態:'; $lang['status_installed'] = '已安裝'; $lang['status_not_installed'] = '未安裝'; +$lang['status_protected'] = '已保護'; $lang['status_enabled'] = '作用中'; $lang['status_disabled'] = '停用中'; +$lang['status_unmodifiable'] = '不可更動'; $lang['status_plugin'] = '外掛'; +$lang['status_template'] = '模板'; +$lang['status_bundled'] = '已綑綁內附'; +$lang['msg_enabled'] = '外掛 %s 已啟用'; +$lang['msg_disabled'] = '外掛 %s 已禁用'; +$lang['msg_delete_success'] = '附加元件已移除'; +$lang['msg_template_install_success'] = '模板 %s 以成功安裝'; +$lang['msg_template_update_success'] = '模板 %s 以成功更新'; +$lang['msg_plugin_install_success'] = '外掛 %s 以成功安裝'; +$lang['msg_plugin_update_success'] = '外掛 %s 以成功更新'; +$lang['msg_upload_failed'] = '上傳檔案失敗'; +$lang['missing_dependency'] = '遺失或禁用相依性套件: %s'; +$lang['security_issue'] = '安全性問題: %s'; +$lang['security_warning'] = '安全問題警告: %s'; +$lang['update_available'] = '更新: 已可取得 %s 的新版本'; +$lang['wrong_folder'] = '外掛安裝不正確: 將外掛資料夾從 "%s" 更名至 "%s"。'; +$lang['url_change'] = '網址已變更: 自從上次下載後下載網址已變更。在更新延伸功能前請先檢查新網址是否可用。
    新: %s
    舊: %s'; +$lang['error_download'] = '無法下載檔案:%s'; +$lang['error_decompress'] = '無法解壓縮檔案。這可能是下載品質不佳所致,在這個情況下你應該再試一次;也有可能是因為無法辨識的壓縮格式,在這個情況下你應該自行下載並手動安裝'; +$lang['error_findfolder'] = '無法辨認延伸功能資料夾,你必須自行下載並手動安裝'; $lang['noperms'] = '延伸功能資料夾無法寫入'; $lang['notplperms'] = '版型資料夾無法寫入'; $lang['nopluginperms'] = '外掛資料夾無法寫入'; -- cgit v1.2.3 From 52f0afd3e452404cf4792276479346237787e636 Mon Sep 17 00:00:00 2001 From: Jaroslav Lichtblau Date: Fri, 21 Nov 2014 21:56:39 +0100 Subject: translation update --- lib/plugins/extension/lang/cs/intro_templates.txt | 1 + lib/plugins/extension/lang/cs/lang.php | 24 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 lib/plugins/extension/lang/cs/intro_templates.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/cs/intro_templates.txt b/lib/plugins/extension/lang/cs/intro_templates.txt new file mode 100644 index 000000000..45abe952c --- /dev/null +++ b/lib/plugins/extension/lang/cs/intro_templates.txt @@ -0,0 +1 @@ +Toto jsou šablony, které jsou momentálně nainstalovány v této DokuWiki. Aktuálně používanu šablonu lze vybrat ve [[?do=admin&page=config|Správci rozšíření]]. \ No newline at end of file diff --git a/lib/plugins/extension/lang/cs/lang.php b/lib/plugins/extension/lang/cs/lang.php index 783b488ea..f6db2b153 100644 --- a/lib/plugins/extension/lang/cs/lang.php +++ b/lib/plugins/extension/lang/cs/lang.php @@ -15,6 +15,7 @@ $lang['notimplemented'] = 'Tato vychytávka není dosud implementována'; $lang['notinstalled'] = 'Toto rozšíření není instalováno'; $lang['alreadyenabled'] = 'Toto rozšíření je již povoleno'; $lang['alreadydisabled'] = 'Toto rozšíření je již vypnuto'; +$lang['pluginlistsaveerror'] = 'Došlo k chybě při ukládání seznamu zásuvných modulů'; $lang['unknownauthor'] = 'Neznámý autor'; $lang['unknownversion'] = 'Neznámá verze'; $lang['btn_info'] = 'Zobrazit více informací'; @@ -27,12 +28,15 @@ $lang['btn_reinstall'] = 'Přeinstalovat'; $lang['js']['reallydel'] = 'Opravdu odinstalovat toto rozšíření?'; $lang['search_for'] = 'Hledat rozšíření:'; $lang['search'] = 'Hledat'; +$lang['extensionby'] = '%s od %s'; +$lang['screenshot'] = 'Screenshot %s'; $lang['popularity'] = 'Popularita: %s%%'; $lang['homepage_link'] = 'Dokumenty'; $lang['bugs_features'] = 'Chyby'; $lang['tags'] = 'Štítky:'; $lang['author_hint'] = 'Vyhledat rozšíření podle tohoto autora'; $lang['installed'] = 'Nainstalováno:'; +$lang['downloadurl'] = 'URL stahování:'; $lang['repository'] = 'Repozitář:'; $lang['unknown'] = 'neznámý'; $lang['installed_version'] = 'Nainstalovaná verze:'; @@ -41,6 +45,7 @@ $lang['available_version'] = 'Dostupná verze:'; $lang['compatible'] = 'Kompatibilní s:'; $lang['depends'] = 'Závisí na:'; $lang['similar'] = 'Podobný jako:'; +$lang['conflicts'] = 'Koliduje s:'; $lang['donate'] = 'Líbí se ti to?'; $lang['donate_action'] = 'Kup autorovi kávu!'; $lang['repo_retry'] = 'Opakovat'; @@ -54,6 +59,25 @@ $lang['status_disabled'] = 'zakázaný'; $lang['status_unmodifiable'] = 'neměnný'; $lang['status_plugin'] = 'zásuvný modul'; $lang['status_template'] = 'šablona'; +$lang['status_bundled'] = 'svázaný'; +$lang['msg_enabled'] = 'Zásuvný modul %s povolen'; +$lang['msg_disabled'] = 'Zásuvný modul %s zakázán'; $lang['msg_delete_success'] = 'Rozšíření odinstalováno'; +$lang['msg_template_install_success'] = 'Šablona %s úspěšně nainstalována'; +$lang['msg_template_update_success'] = 'Šablona %s úspěšně aktualizována'; $lang['msg_plugin_install_success'] = 'Zásuvný modul %s úspěšně nainstalován.'; $lang['msg_plugin_update_success'] = 'Zásuvný modul %s úspěšně aktualizován.'; +$lang['msg_upload_failed'] = 'Nahrávání souboru selhalo'; +$lang['missing_dependency'] = 'Chybějící nebo zakázaná závislost: %s'; +$lang['security_issue'] = 'Bezpečnostní problém: %s'; +$lang['security_warning'] = 'Bezpečnostní varování: %s'; +$lang['update_available'] = 'Aktualizace: Je dostupná nová verze %s.'; +$lang['wrong_folder'] = 'Zásuvný modul nesprávně nainstalován: Přejmenujte adresár modulu "%s" na "%s".'; +$lang['error_badurl'] = 'Adresy URL by měly začínat s http nebo https'; +$lang['error_dircreate'] = 'Nelze vytvořit dočasný adresář pro přijetí stahování'; +$lang['error_download'] = 'Nelze stáhnout soubor: %s'; +$lang['error_findfolder'] = 'Nelze rozpoznat adresář pro rozšíření, je třeba stáhnout a instalovat ručně'; +$lang['noperms'] = 'Nelze zapisovat do adresáře pro rozšíření'; +$lang['notplperms'] = 'Nelze zapisovat do odkládacího adresáře'; +$lang['nopluginperms'] = 'Nelze zapisovat do adresáře se zásuvnými moduly'; +$lang['git'] = 'Toto rozšíření bylo nainstalováno přes git, nejspíš ho tady aktualizovat nechcete.'; -- cgit v1.2.3 From 48b5d5e92851161ee3b3ebc7bf5b6ae6d1f0914d Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Wed, 3 Dec 2014 16:50:16 +0100 Subject: warn about enabled, but not used auth plugins --- lib/plugins/extension/helper/list.php | 5 +++++ lib/plugins/extension/lang/en/lang.php | 1 + 2 files changed, 6 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 9b1988d84..f7e6eb2ca 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -461,6 +461,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { * @return string The HTML code */ function make_actions(helper_plugin_extension_extension $extension) { + global $conf; $return = ''; $errors = ''; @@ -492,6 +493,10 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $errors .= '

    '.$this->getLang('git').'

    '; } + if ($extension->isEnabled() && in_array('Auth', $extension->getTypes()) && $conf['auth'] != $extension->getID()) { + $errors .= '

    '.$this->getLang('auth').'

    '; + } + }else{ if (($canmod = $extension->canModify()) === true) { if ($extension->getDownloadURL()) { diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index 72c9b9e2d..fc8860c5d 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -94,6 +94,7 @@ $lang['noperms'] = 'Extension directory is not writable'; $lang['notplperms'] = 'Template directory is not writable'; $lang['nopluginperms'] = 'Plugin directory is not writable'; $lang['git'] = 'This extension was installed via git, you may not want to update it here.'; +$lang['auth'] = 'This auth plugin is not enabled in configuration, consider disabling it.'; $lang['install_url'] = 'Install from URL:'; $lang['install_upload'] = 'Upload Extension:'; -- cgit v1.2.3 From 4b5834378cc09b182f926aa21a58b50842719f77 Mon Sep 17 00:00:00 2001 From: Torpedo Date: Tue, 9 Dec 2014 23:16:25 +0100 Subject: translation update --- lib/plugins/extension/lang/it/lang.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/it/lang.php b/lib/plugins/extension/lang/it/lang.php index 7dff6c5b2..1aa658e0f 100644 --- a/lib/plugins/extension/lang/it/lang.php +++ b/lib/plugins/extension/lang/it/lang.php @@ -5,11 +5,18 @@ * * @author Francesco * @author Fabio + * @author Torpedo */ +$lang['unknownauthor'] = 'Autore sconosciuto'; +$lang['unknownversion'] = 'Revisione sconosciuta'; +$lang['btn_info'] = 'Mostra maggiori informazioni'; +$lang['btn_update'] = 'Aggiorna'; +$lang['btn_uninstall'] = 'Disinstalla'; $lang['btn_enable'] = 'Abilita'; $lang['btn_disable'] = 'Disabilita'; $lang['btn_install'] = 'Installa'; $lang['btn_reinstall'] = 'Reinstalla'; +$lang['js']['reallydel'] = 'Sicuro di disinstallare questa estensione?'; $lang['search'] = 'Cerca'; $lang['homepage_link'] = 'Documenti'; $lang['bugs_features'] = 'Bug'; @@ -18,13 +25,18 @@ $lang['author_hint'] = 'Cerca estensioni per questo autore'; $lang['installed'] = 'Installato:'; $lang['downloadurl'] = 'URL download:'; $lang['repository'] = 'Repository'; +$lang['unknown'] = 'sconosciuto'; $lang['installed_version'] = 'Versione installata'; $lang['install_date'] = 'Il tuo ultimo aggiornamento:'; $lang['available_version'] = 'Versione disponibile:'; $lang['compatible'] = 'Compatibile con:'; +$lang['depends'] = 'Dipende da:'; $lang['similar'] = 'Simile a:'; +$lang['conflicts'] = 'Conflitto con:'; $lang['donate'] = 'Simile a questo?'; +$lang['donate_action'] = 'Paga un caffè all\'autore!'; $lang['repo_retry'] = 'Riprova'; +$lang['provides'] = 'Fornisce:'; $lang['status'] = 'Status:'; $lang['status_installed'] = 'installato'; $lang['status_not_installed'] = 'non installato'; @@ -34,6 +46,15 @@ $lang['status_disabled'] = 'disabilitato'; $lang['status_unmodifiable'] = 'inmodificabile'; $lang['status_plugin'] = 'plugin'; $lang['status_template'] = 'modello'; +$lang['msg_enabled'] = 'Plugin %s abilitato'; +$lang['msg_disabled'] = 'Plugin %s disabilitato'; +$lang['msg_delete_success'] = 'Estensione %s disinstallata'; +$lang['msg_plugin_install_success'] = 'Plugin %s installato con successo'; +$lang['msg_plugin_update_success'] = 'Plugin %s aggiornato con successo'; +$lang['msg_upload_failed'] = 'Caricamento del file fallito'; +$lang['missing_dependency'] = 'Dipendenza mancante o disabilitata: %s'; +$lang['update_available'] = 'Aggiornamento: Nuova versione %s disponibile.'; +$lang['wrong_folder'] = 'Plugin non installato correttamente: rinomina la directory del plugin "%s" in "%s".'; $lang['error_badurl'] = 'URLs deve iniziare con http o https'; $lang['error_dircreate'] = 'Impossibile creare una cartella temporanea per ricevere il download'; $lang['error_download'] = 'Impossibile scaricare il file: %s'; -- cgit v1.2.3 From 85c59bdbad852d23519e5f77c0e2d7f7ec60121f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Birk?= Date: Thu, 11 Dec 2014 11:15:57 +0100 Subject: translation update --- lib/plugins/extension/lang/da/lang.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 lib/plugins/extension/lang/da/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/da/lang.php b/lib/plugins/extension/lang/da/lang.php new file mode 100644 index 000000000..c341bc5f9 --- /dev/null +++ b/lib/plugins/extension/lang/da/lang.php @@ -0,0 +1,24 @@ + + */ +$lang['update_available'] = 'Opdatering: Ny version %s er tilgængelig.'; +$lang['wrong_folder'] = 'Plugin ikke installeret korrekt: Omdøb plugin-mappe "%s" til "%s".'; +$lang['url_change'] = 'URL ændret: Download-URL er blevet ændret siden sidste download. Kontrollér om den nye URL er valid, inden udvidelsen opdateres.
    Ny: %s
    Gammel: %s'; +$lang['error_badurl'] = 'URL\'er skal starte med http eller https'; +$lang['error_dircreate'] = 'Ikke i stand til at oprette midlertidig mappe til modtagelse af download'; +$lang['error_download'] = 'Ikke i stand til at downloade filen: %s'; +$lang['error_decompress'] = 'Ikke i stand til at dekomprimere den downloadede fil. Dette kan være et resultat af en dårlig download, hvor du i så fald bør du prøve igen; eller komprimeringsformatet kan være ukendt, hvor du i så fald bliver nød til at downloade og installere manuelt.'; +$lang['error_findfolder'] = 'Ikke i stand til at identificere udvidelsesmappe - du bliver nød til at downloade og installere manuelt.'; +$lang['error_copy'] = 'Der opstod en kopieringsfejl under installation af filer til mappen %s: disken kan være fuld, eller mangel på fil-tilladelser. Dette kan have resulteret i et delvist installeret plugin, og efterladt din wiki-installation ustabil.'; +$lang['noperms'] = 'Udvidelsesmappe er ikke skrivbar'; +$lang['notplperms'] = 'Skabelonmappe er ikke skrivbar'; +$lang['nopluginperms'] = 'Pluginmappe er ikke skrivbar'; +$lang['git'] = 'Udvidelsen blev installeret via git - du vil muligvis ikke opdatere herfra.'; +$lang['auth'] = 'Auth-plugin er ikke aktiveret i konfigurationen - overvej at deaktivere den.'; +$lang['install_url'] = 'Installér fra URL:'; +$lang['install_upload'] = 'Upload Udvidelse:'; +$lang['repo_error'] = 'Plugin-arkivet kunne ikke kontaktes. Kontrollér at din server kan kontakte www.dokuwiki.org kontrollér dine proxy-indstillinger.'; -- cgit v1.2.3 From 1ec86040f8d873bffe71d0acacf7e9750804f0f4 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Thu, 11 Dec 2014 21:19:10 +0100 Subject: check for SSL support in the extension manager --- lib/plugins/extension/admin.php | 4 ++++ lib/plugins/extension/lang/en/lang.php | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php index de4992937..71257cf43 100644 --- a/lib/plugins/extension/admin.php +++ b/lib/plugins/extension/admin.php @@ -54,6 +54,10 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin { msg($this->getLang('repo_error').' ['.$this->getLang('repo_retry').']', -1); } + if(!in_array('ssl', stream_get_transports())) { + msg($this->getLang('nossl'), -1); + } + /* @var helper_plugin_extension_extension $extension */ $extension = $this->loadHelper('extension_extension'); diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php index d7541b422..f545b6da3 100644 --- a/lib/plugins/extension/lang/en/lang.php +++ b/lib/plugins/extension/lang/en/lang.php @@ -100,4 +100,5 @@ $lang['auth'] = 'This auth plugin is not enabled in conf $lang['install_url'] = 'Install from URL:'; $lang['install_upload'] = 'Upload Extension:'; -$lang['repo_error'] = 'The plugin repository could not be contacted. Make sure your server is allowed to contact www.dokuwiki.org and check your proxy settings.'; \ No newline at end of file +$lang['repo_error'] = 'The plugin repository could not be contacted. Make sure your server is allowed to contact www.dokuwiki.org and check your proxy settings.'; +$lang['nossl'] = 'Your PHP seems to miss SSL support. Downloading will not work for many DokuWiki extensions.'; \ No newline at end of file -- cgit v1.2.3 From 903f0494e8d0b7fbbda7072ee9fa8aef2ea72cb1 Mon Sep 17 00:00:00 2001 From: Satoshi Sahara Date: Fri, 12 Dec 2014 11:41:28 +0100 Subject: translation update --- lib/plugins/extension/lang/ja/lang.php | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ja/lang.php b/lib/plugins/extension/lang/ja/lang.php index dec46d629..5264bfb09 100644 --- a/lib/plugins/extension/lang/ja/lang.php +++ b/lib/plugins/extension/lang/ja/lang.php @@ -5,6 +5,7 @@ * * @author Hideaki SAWADA * @author PzF_X + * @author Satoshi Sahara */ $lang['menu'] = '拡張機能管理'; $lang['tab_plugins'] = 'インストール済プラグイン'; @@ -63,6 +64,7 @@ $lang['status_bundled'] = '同梱'; $lang['msg_enabled'] = '%s プラグインを有効化しました。'; $lang['msg_disabled'] = '%s プラグインを無効化しました。'; $lang['msg_delete_success'] = '拡張機能をアンインストールしました。'; +$lang['msg_delete_failed'] = '拡張機能 %s のアンインストールに失敗しました。'; $lang['msg_template_install_success'] = '%s テンプレートをインストールできました。'; $lang['msg_template_update_success'] = '%s テンプレートを更新できました。'; $lang['msg_plugin_install_success'] = '%s プラグインをインストールできました。'; @@ -84,6 +86,8 @@ $lang['noperms'] = '拡張機能ディレクトリが書き込み $lang['notplperms'] = 'テンプレートディレクトリが書き込み不可です。'; $lang['nopluginperms'] = 'プラグインディレクトリが書き込み不可です。'; $lang['git'] = 'この拡張機能は Git 経由でインストールされており、ここで更新すべきでないかもしれません。'; +$lang['auth'] = 'この認証プラグインは設定管理画面で無効化されています。'; $lang['install_url'] = 'URL からインストール:'; $lang['install_upload'] = '拡張機能をアップロード:'; $lang['repo_error'] = 'プラグインのリポジトリに接続できません。サーバーが www.dokuwiki.org に接続できることやプロキシの設定を確認して下さい。'; +$lang['nossl'] = 'PHP機能がSSLをサポートしていないため、拡張機能のダウンロードが正常に動作しません。'; -- cgit v1.2.3 From ab6ac843b05c4030087d58182c1bcea3dcc4e0af Mon Sep 17 00:00:00 2001 From: Jussi Takala Date: Fri, 12 Dec 2014 12:15:55 +0100 Subject: translation update --- lib/plugins/extension/lang/fi/lang.php | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/plugins/extension/lang/fi/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/fi/lang.php b/lib/plugins/extension/lang/fi/lang.php new file mode 100644 index 000000000..a154f2563 --- /dev/null +++ b/lib/plugins/extension/lang/fi/lang.php @@ -0,0 +1,37 @@ + + */ +$lang['tab_plugins'] = 'Asennetut liitännäiset'; +$lang['tab_search'] = 'Etsi ja asenna'; +$lang['tab_install'] = 'Manuaalinen asennus'; +$lang['notimplemented'] = 'Tätä ominaisuutta ei ole vielä toteutettu'; +$lang['notinstalled'] = 'Tätä laajennusta ei ole asennettu'; +$lang['alreadyenabled'] = 'Tämä laajennus on jo käytössä'; +$lang['alreadydisabled'] = 'Tämä laajennus on jo otettu pois käytöstä'; +$lang['pluginlistsaveerror'] = 'Tapahtui virhe tallentaessa liitännäislistaa'; +$lang['unknownauthor'] = 'Tuntematon tekijä'; +$lang['unknownversion'] = 'Tuntematon versio'; +$lang['btn_info'] = 'Näytä lisää tietoa'; +$lang['btn_update'] = 'Päivitä'; +$lang['btn_enable'] = 'Ota käyttöön'; +$lang['btn_disable'] = 'Poista käytöstä'; +$lang['btn_install'] = 'Asenna'; +$lang['btn_reinstall'] = 'Uudelleenasenna'; +$lang['js']['reallydel'] = 'Haluatko varmasti poistaa tämän laajennuksen?'; +$lang['search_for'] = 'Etsi laajennusta:'; +$lang['search'] = 'Etsi'; +$lang['downloadurl'] = 'Lataa URL-osoite'; +$lang['installed_version'] = 'Asennettu versio'; +$lang['install_date'] = 'Sinun viimeinen päivitys:'; +$lang['available_version'] = 'Saatavissa oleva versio:'; +$lang['status_installed'] = 'asennettu'; +$lang['status_protected'] = 'suojattu'; +$lang['status_enabled'] = 'otettu käyttöön'; +$lang['status_disabled'] = 'otettu pois käytöstä'; +$lang['status_plugin'] = 'liitännäinen'; +$lang['install_url'] = 'Asenna URL-osoitteesta:'; +$lang['install_upload'] = 'Ladattu laajennus:'; -- cgit v1.2.3 From 4645078a2700c1e5e5fe989d5e45ca4d79bc5279 Mon Sep 17 00:00:00 2001 From: Jaroslav Lichtblau Date: Fri, 12 Dec 2014 13:16:14 +0100 Subject: translation update --- lib/plugins/extension/lang/cs/lang.php | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/cs/lang.php b/lib/plugins/extension/lang/cs/lang.php index f6db2b153..c8fd583c4 100644 --- a/lib/plugins/extension/lang/cs/lang.php +++ b/lib/plugins/extension/lang/cs/lang.php @@ -63,6 +63,7 @@ $lang['status_bundled'] = 'svázaný'; $lang['msg_enabled'] = 'Zásuvný modul %s povolen'; $lang['msg_disabled'] = 'Zásuvný modul %s zakázán'; $lang['msg_delete_success'] = 'Rozšíření odinstalováno'; +$lang['msg_delete_failed'] = 'Odinstalování rozšíření %s selhalo'; $lang['msg_template_install_success'] = 'Šablona %s úspěšně nainstalována'; $lang['msg_template_update_success'] = 'Šablona %s úspěšně aktualizována'; $lang['msg_plugin_install_success'] = 'Zásuvný modul %s úspěšně nainstalován.'; @@ -73,6 +74,7 @@ $lang['security_issue'] = 'Bezpečnostní problém: %s'; $lang['security_warning'] = 'Bezpečnostní varování: %s'; $lang['update_available'] = 'Aktualizace: Je dostupná nová verze %s.'; $lang['wrong_folder'] = 'Zásuvný modul nesprávně nainstalován: Přejmenujte adresár modulu "%s" na "%s".'; +$lang['url_change'] = 'URL se změnila: URL pro stahování se změnila od poslední aktualizace. Před další aktualizací tohoto rozšíření ověřte správnost nové URL.
    Nová: %s
    Stará: %s'; $lang['error_badurl'] = 'Adresy URL by měly začínat s http nebo https'; $lang['error_dircreate'] = 'Nelze vytvořit dočasný adresář pro přijetí stahování'; $lang['error_download'] = 'Nelze stáhnout soubor: %s'; @@ -81,3 +83,8 @@ $lang['noperms'] = 'Nelze zapisovat do adresáře pro rozšířen $lang['notplperms'] = 'Nelze zapisovat do odkládacího adresáře'; $lang['nopluginperms'] = 'Nelze zapisovat do adresáře se zásuvnými moduly'; $lang['git'] = 'Toto rozšíření bylo nainstalováno přes git, nejspíš ho tady aktualizovat nechcete.'; +$lang['auth'] = 'Tento ověřovací zásuvný modul není povolen v nastavení, zvažte jeho deaktivaci.'; +$lang['install_url'] = 'Nainstalovat z URL:'; +$lang['install_upload'] = 'Nahrát rozšíření:'; +$lang['repo_error'] = 'Nelze kontaktovat repozitář se zásuvnými moduly. Ujistěte se, že váš server může kontaktovat www.dokuwiki.org a zkontrolujte nastavení proxy.'; +$lang['nossl'] = 'Použité PHP pravděpodobně nepodporuje SSL. Stažení mnoha DokuWiki rozšíření nebude fungovat.'; -- cgit v1.2.3 From d52dfa3a1a992c5cbc5517cc2fc9e947d3a54ee4 Mon Sep 17 00:00:00 2001 From: Jaroslav Lichtblau Date: Sat, 13 Dec 2014 12:56:08 +0100 Subject: translation update --- lib/plugins/extension/lang/cs/lang.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/cs/lang.php b/lib/plugins/extension/lang/cs/lang.php index c8fd583c4..dc38afd52 100644 --- a/lib/plugins/extension/lang/cs/lang.php +++ b/lib/plugins/extension/lang/cs/lang.php @@ -73,16 +73,18 @@ $lang['missing_dependency'] = 'Chybějící nebo zakázaná závislos $lang['security_issue'] = 'Bezpečnostní problém: %s'; $lang['security_warning'] = 'Bezpečnostní varování: %s'; $lang['update_available'] = 'Aktualizace: Je dostupná nová verze %s.'; -$lang['wrong_folder'] = 'Zásuvný modul nesprávně nainstalován: Přejmenujte adresár modulu "%s" na "%s".'; +$lang['wrong_folder'] = 'Zásuvný modul nesprávně nainstalován: Přejmenujte adresář modulu "%s" na "%s".'; $lang['url_change'] = 'URL se změnila: URL pro stahování se změnila od poslední aktualizace. Před další aktualizací tohoto rozšíření ověřte správnost nové URL.
    Nová: %s
    Stará: %s'; $lang['error_badurl'] = 'Adresy URL by měly začínat s http nebo https'; $lang['error_dircreate'] = 'Nelze vytvořit dočasný adresář pro přijetí stahování'; $lang['error_download'] = 'Nelze stáhnout soubor: %s'; +$lang['error_decompress'] = 'Selhalo rozbalení staženého souboru. Toto je nejspíš důsledek poškození souboru při přenosu, zkuste soubor stáhnout znovu; případně nemusel být rozpoznán formát sbaleného souboru a bude třeba přistoupit k ruční instalaci. '; $lang['error_findfolder'] = 'Nelze rozpoznat adresář pro rozšíření, je třeba stáhnout a instalovat ručně'; +$lang['error_copy'] = 'Došlo k chybě kopírování souborů při pokusu nainstalovat soubory do adresáře %s: může být plný disk nebo špatně nastavena přístupová práva. Tato chyba mohla zapříčinit pouze částečnou instalaci zásuvného modulu a uvést wiki do nestabilního stavu.'; $lang['noperms'] = 'Nelze zapisovat do adresáře pro rozšíření'; $lang['notplperms'] = 'Nelze zapisovat do odkládacího adresáře'; $lang['nopluginperms'] = 'Nelze zapisovat do adresáře se zásuvnými moduly'; -$lang['git'] = 'Toto rozšíření bylo nainstalováno přes git, nejspíš ho tady aktualizovat nechcete.'; +$lang['git'] = 'Toto rozšíření bylo nainstalováno přes git. Touto cestou ho nejspíš tady aktualizovat nechcete.'; $lang['auth'] = 'Tento ověřovací zásuvný modul není povolen v nastavení, zvažte jeho deaktivaci.'; $lang['install_url'] = 'Nainstalovat z URL:'; $lang['install_upload'] = 'Nahrát rozšíření:'; -- cgit v1.2.3 From e9e4d4669dcc75b110847c78bdf6b80a0f47628b Mon Sep 17 00:00:00 2001 From: Type-kun Date: Sat, 13 Dec 2014 17:20:59 +0100 Subject: translation update --- lib/plugins/extension/lang/ru/lang.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php index 24e6fe224..8e9e10b95 100644 --- a/lib/plugins/extension/lang/ru/lang.php +++ b/lib/plugins/extension/lang/ru/lang.php @@ -5,6 +5,7 @@ * * @author Aleksandr Selivanov * @author Igor Degraf + * @author Type-kun */ $lang['menu'] = 'Управление дополнениями'; $lang['tab_plugins'] = 'Установленные плагины'; @@ -12,6 +13,9 @@ $lang['tab_templates'] = 'Установленные шаблоны'; $lang['tab_search'] = 'Поиск и установка'; $lang['tab_install'] = 'Ручная установка'; $lang['notinstalled'] = 'Это дополнение не установлено'; +$lang['alreadyenabled'] = 'Это расширение уже включено'; +$lang['alreadydisabled'] = 'Это расширение уже выключено'; +$lang['pluginlistsaveerror'] = 'Ошибка при сохранении списка плагинов'; $lang['unknownauthor'] = 'Автор неизвестен'; $lang['unknownversion'] = 'Версия неизвестна'; $lang['btn_info'] = 'Отобразить доп. информацию'; @@ -25,6 +29,7 @@ $lang['js']['reallydel'] = 'Действительно удалить эт $lang['search_for'] = 'Поиск дополнения:'; $lang['search'] = 'Найти'; $lang['extensionby'] = '%s — %s'; +$lang['screenshot'] = 'Скриншот: %s'; $lang['popularity'] = 'Популярность: %s%%'; $lang['homepage_link'] = 'Описание'; $lang['bugs_features'] = 'Баг-трекер'; @@ -58,12 +63,21 @@ $lang['status_bundled'] = 'в комплекте'; $lang['msg_enabled'] = 'Плагин %s включён'; $lang['msg_disabled'] = 'Плагин %s отключён'; $lang['msg_delete_success'] = 'Дополнение удалено'; +$lang['msg_delete_failed'] = 'Не удалось удалить расширение %s'; $lang['msg_template_install_success'] = 'Шаблон %s успешно установлен'; $lang['msg_template_update_success'] = 'Шаблон %s успешно обновлён'; $lang['msg_plugin_install_success'] = 'Плагин %s успешно установлен'; $lang['msg_plugin_update_success'] = 'Плагин %s успешно обновлён'; +$lang['msg_upload_failed'] = 'Не удалось загрузить файл'; $lang['update_available'] = 'Обновление: доступна новая версия %s.'; +$lang['wrong_folder'] = 'Плагин установлен неправильно: Переименуйте директорию "%s" в "%s".'; +$lang['url_change'] = 'Ссылка изменилась: Ссылка для загрузки изменилась с прошлого раза. Проверьте новую ссылку прежде чем обновлять расширение.
    Новая: %s
    Старая: %s'; $lang['error_badurl'] = 'Ссылки должны начинаться с http или https'; +$lang['error_dircreate'] = 'Не удалось создать временную директорию для загрузки'; +$lang['error_download'] = 'Не удалось загрузить файл: %s'; +$lang['error_decompress'] = 'Не удалось распаковать загруженный файл. Возможно, файл был повреждён при загрузке - тогда нужно попробовать ещё раз. Либо неизвестен формат архива - тогда загрузку и установку надо произвести вручную.'; +$lang['error_findfolder'] = 'Не удалось определить директорию для расширения, загрузку и установку надо произвести вручную.'; +$lang['error_copy'] = 'Возникла ошибка копирования файлов в директорию %s: возможно, диск переполнен, или неверно выставлены права доступа. Это могло привести к неполной установке плагина и нарушить работу вашей вики.'; $lang['noperms'] = 'Папка для расширений недоступна для записи'; $lang['notplperms'] = 'Папка для шаблонов недоступна для записи'; $lang['nopluginperms'] = 'Папка плагинов недоступна для записи'; -- cgit v1.2.3 From d3b0952c873788602821d953e654ba66008117f2 Mon Sep 17 00:00:00 2001 From: Myeongjin Date: Sun, 14 Dec 2014 14:21:03 +0100 Subject: translation update --- lib/plugins/extension/lang/ko/lang.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ko/lang.php b/lib/plugins/extension/lang/ko/lang.php index 53c9b4481..5dc5d8269 100644 --- a/lib/plugins/extension/lang/ko/lang.php +++ b/lib/plugins/extension/lang/ko/lang.php @@ -62,7 +62,8 @@ $lang['status_template'] = '템플릿'; $lang['status_bundled'] = '포함'; $lang['msg_enabled'] = '%s 플러그인이 활성화되었습니다'; $lang['msg_disabled'] = '%s 플러그인이 비활성화되었습니다'; -$lang['msg_delete_success'] = '확장 기능이 제거되었습니다'; +$lang['msg_delete_success'] = '%s 확장 기능이 제거되었습니다'; +$lang['msg_delete_failed'] = '%s 확장 기능 제거에 실패했습니다'; $lang['msg_template_install_success'] = '%s 템플릿을 성공적으로 설치했습니다'; $lang['msg_template_update_success'] = '%s 템플릿을 성공적으로 업데이트했습니다'; $lang['msg_plugin_install_success'] = '%s 플러그인을 성공적으로 설치했습니다'; @@ -79,11 +80,13 @@ $lang['error_dircreate'] = '다운로드를 받을 임시 폴더를 만들 $lang['error_download'] = '파일을 다운로드할 수 없습니다: %s'; $lang['error_decompress'] = '다운로드한 파일의 압축을 풀 수 없습니다. 이는 아마도 잘못된 다운로드의 결과로, 이럴 경우 다시 시도해야 합니다; 또는 압축 형식을 알 수 없으며, 이럴 경우 수동으로 다운로드하고 설치해야 합니다.'; $lang['error_findfolder'] = '확장 기능 디렉터리를 식별할 수 없습니다, 수동으로 다운로드하고 설치해야 합니다'; -$lang['error_copy'] = '%s 디렉터리에 파일을 설치하는 동안 파일 복사 오류가 발생했습니다: 디스크가 꽉 찼거나 파일 접근 권한이 잘못되었을 수도 있습니다. 플러그인 설치가 부분적으로 되었거나 불안정하게 위키 설치가 되었을 수 있습니다.'; +$lang['error_copy'] = '%s 디렉터리에 파일을 설치하는 동안 파일 복사 오류가 발생했습니다: 디스크가 꽉 찼거나 파일 접근 권한이 잘못되었을 수도 있습니다. 플러그인이 부분적으로 설치되어 위키가 불안정할지도 모릅니다'; $lang['noperms'] = '확장 기능 디렉터리에 쓸 수 없습니다'; $lang['notplperms'] = '임시 디렉터리에 쓸 수 없습니다'; $lang['nopluginperms'] = '플러그인 디렉터리에 쓸 수 없습니다'; -$lang['git'] = '이 확장 기능은 git을 통해 설치되었으며, 여기에서 업데이트할 수 없을 수 있습니다.'; +$lang['git'] = '이 확장 기능은 git를 통해 설치되었으며, 여기에서 업데이트할 수 없을 수 있습니다.'; +$lang['auth'] = '이 인증 플러그인은 환경 설정에서 활성화할 수 없습니다, 그것을 비활성화하는 것을 고려하세요.'; $lang['install_url'] = 'URL에서 설치:'; $lang['install_upload'] = '확장 기능 올리기:'; $lang['repo_error'] = '플러그인 저장소에 연결할 수 없습니다. 서버가 www.dokuwiki.org에 연결할 수 있는지 확인하고 프록시 설정을 확인하세요.'; +$lang['nossl'] = 'PHP가 SSL 지원을 하지 않는 것으로 보입니다. 많은 도쿠위키 확장 기능의 다운로드가 작동하지 않을 것입니다.'; -- cgit v1.2.3 From e88b0b78dca1024132a36f217b59c9e73a9cc338 Mon Sep 17 00:00:00 2001 From: Vitaly Filatenko Date: Mon, 15 Dec 2014 22:36:37 +0100 Subject: translation update --- lib/plugins/extension/lang/ru/intro_install.txt | 1 + lib/plugins/extension/lang/ru/intro_plugins.txt | 1 + lib/plugins/extension/lang/ru/intro_search.txt | 1 + lib/plugins/extension/lang/ru/intro_templates.txt | 1 + lib/plugins/extension/lang/ru/lang.php | 5 +++++ 5 files changed, 9 insertions(+) create mode 100644 lib/plugins/extension/lang/ru/intro_install.txt create mode 100644 lib/plugins/extension/lang/ru/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/ru/intro_search.txt create mode 100644 lib/plugins/extension/lang/ru/intro_templates.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ru/intro_install.txt b/lib/plugins/extension/lang/ru/intro_install.txt new file mode 100644 index 000000000..7b8ac661b --- /dev/null +++ b/lib/plugins/extension/lang/ru/intro_install.txt @@ -0,0 +1 @@ +Здесь вы можете самостоятельно установить плагины и шаблоны, загрузив их или предоставив прямой URL для скачивания. \ No newline at end of file diff --git a/lib/plugins/extension/lang/ru/intro_plugins.txt b/lib/plugins/extension/lang/ru/intro_plugins.txt new file mode 100644 index 000000000..7262516db --- /dev/null +++ b/lib/plugins/extension/lang/ru/intro_plugins.txt @@ -0,0 +1 @@ +Плагины, установленные в вашей DokuWiki. Здесь вы можете их включить или выключить, или даже полностью удалить. Также здесь показываются обновления плагинов, обязательно прочтите документацию плагина перед обновлением. \ No newline at end of file diff --git a/lib/plugins/extension/lang/ru/intro_search.txt b/lib/plugins/extension/lang/ru/intro_search.txt new file mode 100644 index 000000000..a8486eab6 --- /dev/null +++ b/lib/plugins/extension/lang/ru/intro_search.txt @@ -0,0 +1 @@ +Эта вкладка дает вам доступ ко всем имеющимся сторонним плагинам и шаблонам для DokuWiki. Имейте в виду, что установка стороннего кода может представлять **угрозу безопасности**, возможно вам нужно сперва прочитать о [[doku>security#plugin_security|безопасности плагинов]]. \ No newline at end of file diff --git a/lib/plugins/extension/lang/ru/intro_templates.txt b/lib/plugins/extension/lang/ru/intro_templates.txt new file mode 100644 index 000000000..2d0b74256 --- /dev/null +++ b/lib/plugins/extension/lang/ru/intro_templates.txt @@ -0,0 +1 @@ +Это шаблоны, установленные в вашей DokuWiki. Вы можете выбрать шаблон, который нужно использовать в [[?do=admin&page=config|Менеджере Конфигурации]] \ No newline at end of file diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php index 8e9e10b95..64db39b78 100644 --- a/lib/plugins/extension/lang/ru/lang.php +++ b/lib/plugins/extension/lang/ru/lang.php @@ -6,12 +6,14 @@ * @author Aleksandr Selivanov * @author Igor Degraf * @author Type-kun + * @author Vitaly Filatenko */ $lang['menu'] = 'Управление дополнениями'; $lang['tab_plugins'] = 'Установленные плагины'; $lang['tab_templates'] = 'Установленные шаблоны'; $lang['tab_search'] = 'Поиск и установка'; $lang['tab_install'] = 'Ручная установка'; +$lang['notimplemented'] = 'Эта возможность ещё не реализована'; $lang['notinstalled'] = 'Это дополнение не установлено'; $lang['alreadyenabled'] = 'Это расширение уже включено'; $lang['alreadydisabled'] = 'Это расширение уже выключено'; @@ -69,6 +71,9 @@ $lang['msg_template_update_success'] = 'Шаблон %s успешно обно $lang['msg_plugin_install_success'] = 'Плагин %s успешно установлен'; $lang['msg_plugin_update_success'] = 'Плагин %s успешно обновлён'; $lang['msg_upload_failed'] = 'Не удалось загрузить файл'; +$lang['missing_dependency'] = 'Отсутствует или отключена зависимость: %s'; +$lang['security_issue'] = 'Проблема безопасности: %s'; +$lang['security_warning'] = 'Предупреждение безопасности: %s'; $lang['update_available'] = 'Обновление: доступна новая версия %s.'; $lang['wrong_folder'] = 'Плагин установлен неправильно: Переименуйте директорию "%s" в "%s".'; $lang['url_change'] = 'Ссылка изменилась: Ссылка для загрузки изменилась с прошлого раза. Проверьте новую ссылку прежде чем обновлять расширение.
    Новая: %s
    Старая: %s'; -- cgit v1.2.3 From b13d4fce1d858898efc88147b9a2da344119128f Mon Sep 17 00:00:00 2001 From: Satoshi Sahara Date: Wed, 17 Dec 2014 14:36:28 +0100 Subject: translation update --- lib/plugins/extension/lang/ja/lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ja/lang.php b/lib/plugins/extension/lang/ja/lang.php index 5264bfb09..ce6ed2b97 100644 --- a/lib/plugins/extension/lang/ja/lang.php +++ b/lib/plugins/extension/lang/ja/lang.php @@ -63,7 +63,7 @@ $lang['status_template'] = 'テンプレート'; $lang['status_bundled'] = '同梱'; $lang['msg_enabled'] = '%s プラグインを有効化しました。'; $lang['msg_disabled'] = '%s プラグインを無効化しました。'; -$lang['msg_delete_success'] = '拡張機能をアンインストールしました。'; +$lang['msg_delete_success'] = '拡張機能 %s をアンインストールしました。'; $lang['msg_delete_failed'] = '拡張機能 %s のアンインストールに失敗しました。'; $lang['msg_template_install_success'] = '%s テンプレートをインストールできました。'; $lang['msg_template_update_success'] = '%s テンプレートを更新できました。'; -- cgit v1.2.3 From 2fd1f790dae5f89a60537f9b80b9c5a10312f595 Mon Sep 17 00:00:00 2001 From: Guido Salatino Date: Thu, 18 Dec 2014 21:26:34 +0100 Subject: translation update --- lib/plugins/extension/lang/pt/intro_install.txt | 1 + lib/plugins/extension/lang/pt/intro_plugins.txt | 1 + lib/plugins/extension/lang/pt/intro_search.txt | 1 + lib/plugins/extension/lang/pt/intro_templates.txt | 1 + lib/plugins/extension/lang/pt/lang.php | 132 ++++++++++++++++++++++ 5 files changed, 136 insertions(+) create mode 100644 lib/plugins/extension/lang/pt/intro_install.txt create mode 100644 lib/plugins/extension/lang/pt/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/pt/intro_search.txt create mode 100644 lib/plugins/extension/lang/pt/intro_templates.txt create mode 100644 lib/plugins/extension/lang/pt/lang.php (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/pt/intro_install.txt b/lib/plugins/extension/lang/pt/intro_install.txt new file mode 100644 index 000000000..5e5871391 --- /dev/null +++ b/lib/plugins/extension/lang/pt/intro_install.txt @@ -0,0 +1 @@ +Aqui você pode instalar manualmente plugins e modelos ou enviando-os (upload) ou fornecendo uma URL de download direto. \ No newline at end of file diff --git a/lib/plugins/extension/lang/pt/intro_plugins.txt b/lib/plugins/extension/lang/pt/intro_plugins.txt new file mode 100644 index 000000000..fcfaa5cea --- /dev/null +++ b/lib/plugins/extension/lang/pt/intro_plugins.txt @@ -0,0 +1 @@ +Estes são os plugins instalados atualmente em seu DokuWiki. Você pode ativar ou desativar ou desinstala-los completamente aqui. Atualizações de plugins também são mostradas aqui, não se esqueça de ler a documentação do plug-in antes de atualizar. \ No newline at end of file diff --git a/lib/plugins/extension/lang/pt/intro_search.txt b/lib/plugins/extension/lang/pt/intro_search.txt new file mode 100644 index 000000000..be39a9860 --- /dev/null +++ b/lib/plugins/extension/lang/pt/intro_search.txt @@ -0,0 +1 @@ +Esta guia lhe dá acesso a todos os plugins e modelos de terceiros disponíveis DokuWiki. Por favor, esteja ciente de que a instalação de componentes de terceiros pode representar um risco de segurança ** **, você pode querer ler sobre [[doku> segurança # plugin_security | segurança plug-in]] antes de realizar a instalação de módulos de terceiros. \ No newline at end of file diff --git a/lib/plugins/extension/lang/pt/intro_templates.txt b/lib/plugins/extension/lang/pt/intro_templates.txt new file mode 100644 index 000000000..ecdf99f17 --- /dev/null +++ b/lib/plugins/extension/lang/pt/intro_templates.txt @@ -0,0 +1 @@ +Estes são os modelos atualmente instalados em seu DokuWiki. Você pode selecionar o modelo a ser usado no [[Do = admin & page = configuração |? Configuration Manager]]. \ No newline at end of file diff --git a/lib/plugins/extension/lang/pt/lang.php b/lib/plugins/extension/lang/pt/lang.php new file mode 100644 index 000000000..c7b4f29c2 --- /dev/null +++ b/lib/plugins/extension/lang/pt/lang.php @@ -0,0 +1,132 @@ + + */ +$lang['menu'] = 'Gerenciador de Extensões'; +$lang['tab_plugins'] = 'Plugins Instalados'; +$lang['tab_templates'] = 'Modelos Instalados'; +$lang['tab_search'] = 'Pesquisar e Instalar'; +$lang['tab_install'] = 'Instalação Manual'; +$lang['notimplemented'] = 'Este recurso não foi implementado ainda'; +$lang['notinstalled'] = 'Esta extensão não está instalada'; +$lang['alreadyenabled'] = 'Esta extensão já foi ativada'; +$lang['alreadydisabled'] = 'Esta extensão já foi desativada'; +$lang['pluginlistsaveerror'] = 'Houve um erro ao salvar a lista de plugins'; +$lang['unknownauthor'] = 'Autor desconhecido'; +$lang['unknownversion'] = 'Versão desconhecida'; +$lang['btn_info'] = 'Mostrar mais informações'; +$lang['btn_update'] = 'Atualizar'; +$lang['btn_uninstall'] = 'Desinstalar'; +$lang['btn_enable'] = 'Habilitar'; +$lang['btn_disable'] = 'Desabilitar'; +$lang['btn_install'] = 'Instalar'; +$lang['btn_reinstall'] = 'Reinstalar'; +$lang['js']['reallydel'] = 'Confirma a desinstalação desta extensão?'; +$lang['search_for'] = 'Pesquisar Extensão:'; +$lang['search'] = 'Pesquisar'; +$lang['extensionby'] = '%s by %s'; +$lang['screenshot'] = 'Screenshot of %s'; +$lang['popularity'] = 'Popularidade: %s%%'; +$lang['homepage_link'] = 'Documentos'; +$lang['bugs_features'] = 'Erros'; +$lang['tags'] = 'Tags:'; +$lang['author_hint'] = 'Pesquisar extensões deste autor'; +$lang['installed'] = 'Instalado: +'; +$lang['downloadurl'] = 'Baixar URL: +'; +$lang['repository'] = 'Repositório: +'; +$lang['unknown'] = ' desconhecido +'; +$lang['installed_version'] = 'Versão instalada:'; +$lang['install_date'] = 'Sua última atualização:'; +$lang['available_version'] = 'Versão disponível: +'; +$lang['compatible'] = 'Compatível com:'; +$lang['depends'] = 'Depende de: +'; +$lang['similar'] = 'Semelhante a: +'; +$lang['conflicts'] = 'Conflitos com: +'; +$lang['donate'] = 'Assim? +'; +$lang['donate_action'] = 'Pague um café para o autor!'; +$lang['repo_retry'] = 'Tentar novamente +'; +$lang['provides'] = 'Fornece: +'; +$lang['status'] = 'Status: +'; +$lang['status_installed'] = 'instalado +'; +$lang['status_not_installed'] = 'não instalado +'; +$lang['status_protected'] = 'protegido +'; +$lang['status_enabled'] = 'habilitado'; +$lang['status_disabled'] = 'desabilitado'; +$lang['status_unmodifiable'] = 'imodificável +'; +$lang['status_plugin'] = 'plugin +'; +$lang['status_template'] = 'modelo +'; +$lang['status_bundled'] = 'empacotado +'; +$lang['msg_enabled'] = 'Plugin %s habilitado +'; +$lang['msg_disabled'] = 'Plugin %s desabilitado'; +$lang['msg_delete_success'] = 'Extensão %s desinstalada'; +$lang['msg_delete_failed'] = 'Desinstalar Extensão %s falhou +'; +$lang['msg_template_install_success'] = 'Modelo %s instalado com sucesso'; +$lang['msg_template_update_success'] = 'Modelo %s atualizado com sucesso +'; +$lang['msg_plugin_install_success'] = 'Plugin %s instalado com sucesso +'; +$lang['msg_plugin_update_success'] = 'Plugin %s atualizado com sucesso +'; +$lang['msg_upload_failed'] = 'Enviando o arquivo falhou +'; +$lang['missing_dependency'] = 'dependência ausente ou desabilitada: %s +'; +$lang['security_issue'] = ' Questão de segurança: %s +'; +$lang['security_warning'] = ' Aviso de segurança: %s'; +$lang['update_available'] = 'Atualização: Nova versão %s está disponível. +'; +$lang['wrong_folder'] = 'Plugin instalado incorretamente: Renomear pasta de plugins de "%s" para "%s". +'; +$lang['url_change'] = 'URL mudou: URL para download mudou desde o último download. Verifique se a nova URL é válida antes de atualizar a extensão
    Nova:%s
    Antiga:%s +'; +$lang['error_badurl'] = 'URLs deve começar com http ou https +'; +$lang['error_dircreate'] = 'Não é possível criar pasta temporária para receber o download +'; +$lang['error_download'] = 'Não é possível baixar o arquivo:%s +'; +$lang['error_decompress'] = 'Não é possível descompactar o arquivo baixado. Talvez seja resultado de um download ruim, nesse caso, você deve tentar novamente; ou o formato de compressão pode ser desconhecido, nesse caso, você precisará baixar e instalar manualmente.'; +$lang['error_findfolder'] = 'Não foi possível identificar diretório de extensão, você precisa baixar e instalar manualmente +'; +$lang['error_copy'] = 'Houve um erro na cópia do arquivo durante a tentativa de instalar os arquivos para o diretório %s : o disco pode estar cheio ou as permissões de acesso ao arquivo podem estar incorretas. Isso pode ter resultado em um plugin parcialmente instalado e tornar instável a sua instalação wiki +'; +$lang['noperms'] = 'Diretório da extensão não é gravável +'; +$lang['notplperms'] = 'Diretório do modelo não é gravável +'; +$lang['nopluginperms'] = 'Diretório do plugin não é gravável +'; +$lang['git'] = 'Esta extensão foi instalada via git, você não pode querer atualizá-la aqui. +'; +$lang['auth'] = 'Este plugin não está habilitado na configuração, considere desabilita-lo.'; +$lang['install_url'] = 'Instalar a partir da URL:'; +$lang['install_upload'] = 'Publique a Extensão:'; +$lang['repo_error'] = 'O repositório do plugin não pôde ser conectado. Verifique se o seu servidor está autorizado a conectar com www.dokuwiki.org e verifique as configurações de proxy do servidor. +'; +$lang['nossl'] = 'Seu PHP parece que perdeu o suporte a SSL. O download não vai funcionar para muitas extensões DokuWiki. +'; -- cgit v1.2.3 From 443fd3ed95c4f3dedaf26d2d2ce8583f13b6e808 Mon Sep 17 00:00:00 2001 From: Yves Grandvalet Date: Sat, 20 Dec 2014 15:47:16 +0100 Subject: translation update --- lib/plugins/extension/lang/fr/lang.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/fr/lang.php b/lib/plugins/extension/lang/fr/lang.php index 88234efd0..6955155e9 100644 --- a/lib/plugins/extension/lang/fr/lang.php +++ b/lib/plugins/extension/lang/fr/lang.php @@ -4,6 +4,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Schplurtz le Déboulonné + * @author Yves Grandvalet */ $lang['menu'] = 'Gestionnaire d\'extension'; $lang['tab_plugins'] = 'Greffons installés'; @@ -62,6 +63,7 @@ $lang['status_bundled'] = 'fourni'; $lang['msg_enabled'] = 'Greffon %s activé'; $lang['msg_disabled'] = 'Greffon %s désactivé'; $lang['msg_delete_success'] = 'Extension désinstallée'; +$lang['msg_delete_failed'] = 'Echec de la désinstallation de l\'extension %s'; $lang['msg_template_install_success'] = 'Thème %s installée avec succès'; $lang['msg_template_update_success'] = 'Thème %s mis à jour avec succès'; $lang['msg_plugin_install_success'] = 'Greffon %s installé avec succès'; -- cgit v1.2.3 From a71e810b700800fc0b7a599971dc05354df40a81 Mon Sep 17 00:00:00 2001 From: Jaroslav Lichtblau Date: Wed, 31 Dec 2014 15:21:02 +0100 Subject: translation update --- lib/plugins/extension/lang/cs/intro_plugins.txt | 1 + lib/plugins/extension/lang/cs/intro_search.txt | 1 + 2 files changed, 2 insertions(+) create mode 100644 lib/plugins/extension/lang/cs/intro_plugins.txt create mode 100644 lib/plugins/extension/lang/cs/intro_search.txt (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/cs/intro_plugins.txt b/lib/plugins/extension/lang/cs/intro_plugins.txt new file mode 100644 index 000000000..a6f62746a --- /dev/null +++ b/lib/plugins/extension/lang/cs/intro_plugins.txt @@ -0,0 +1 @@ +Toto je seznam momentálně nainstalovaných zásuvných modulů vaší DokuWiki. V tomto seznamu je lze zapínat, vypínat nebo kompletně odinstalovat. Jsou zde také vidět dostupné aktualizace pro moduly, ale před jejich případným aktualizováním si vždy přečtěte jejich dokumentaci. \ No newline at end of file diff --git a/lib/plugins/extension/lang/cs/intro_search.txt b/lib/plugins/extension/lang/cs/intro_search.txt new file mode 100644 index 000000000..4258ac4f2 --- /dev/null +++ b/lib/plugins/extension/lang/cs/intro_search.txt @@ -0,0 +1 @@ +Tato záložka poskytuje náhled na všechny dostupné moduly a šablony třetích stran pro DokuWiki. Jejich instalací se múžete vystavit **bezpečnostním rizikům** o kterých se můžete více dočíst v oddíle [[doku>security#plugin_security|plugin security]]. \ No newline at end of file -- cgit v1.2.3 From 3d03c3499919b3ef39eb7e162d53a52dcb3abeae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Schplurtz=20le=20D=C3=A9boulonn=C3=A9?= Date: Mon, 5 Jan 2015 23:31:11 +0100 Subject: translation update --- lib/plugins/extension/lang/fr/lang.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/fr/lang.php b/lib/plugins/extension/lang/fr/lang.php index 6955155e9..44d403847 100644 --- a/lib/plugins/extension/lang/fr/lang.php +++ b/lib/plugins/extension/lang/fr/lang.php @@ -6,7 +6,7 @@ * @author Schplurtz le Déboulonné * @author Yves Grandvalet */ -$lang['menu'] = 'Gestionnaire d\'extension'; +$lang['menu'] = 'Gestionnaire d\'extensions'; $lang['tab_plugins'] = 'Greffons installés'; $lang['tab_templates'] = 'Thèmes installés'; $lang['tab_search'] = 'Rechercher et installer'; @@ -62,7 +62,7 @@ $lang['status_template'] = 'thème'; $lang['status_bundled'] = 'fourni'; $lang['msg_enabled'] = 'Greffon %s activé'; $lang['msg_disabled'] = 'Greffon %s désactivé'; -$lang['msg_delete_success'] = 'Extension désinstallée'; +$lang['msg_delete_success'] = 'Extension %s désinstallée.'; $lang['msg_delete_failed'] = 'Echec de la désinstallation de l\'extension %s'; $lang['msg_template_install_success'] = 'Thème %s installée avec succès'; $lang['msg_template_update_success'] = 'Thème %s mis à jour avec succès'; @@ -85,6 +85,8 @@ $lang['noperms'] = 'Impossible d\'écrire dans le dossier des exte $lang['notplperms'] = 'Impossible d\'écrire dans le dossier des thèmes.'; $lang['nopluginperms'] = 'Impossible d\'écrire dans le dossier des greffons.'; $lang['git'] = 'Cette extension a été installé via git, vous voudrez peut-être ne pas la mettre à jour ici.'; +$lang['auth'] = 'Votre configuration n\'utilise pas ce greffon d\'authentification. Vous devriez songer à le désactiver.'; $lang['install_url'] = 'Installez depuis l\'URL :'; $lang['install_upload'] = 'Téléversez l\'extension :'; $lang['repo_error'] = 'L\'entrepôt d\'extensions est injoignable. Veuillez vous assurer que le server web est autorisé à contacter www.dokuwiki.org et vérifier les réglages de proxy.'; +$lang['nossl'] = 'Votre version de PHP semble ne pas prendre en charge SSL. Le téléchargement de nombreuses extensions va échouer.'; -- cgit v1.2.3 From 79e79377626799a77c11aa7849cb9c64305590c8 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Wed, 7 Jan 2015 10:47:45 +0100 Subject: Remove error supression for file_exists() In an older version of PHP a file_exists() call would issue a warning when the file did not exist. This was fixed in later PHP releases. Since we require PHP 5.3 now, there's no need to supress any error here anymore. This might even give a minor performance boost. --- lib/plugins/extension/helper/extension.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php index dfa624907..6c0946b09 100644 --- a/lib/plugins/extension/helper/extension.php +++ b/lib/plugins/extension/helper/extension.php @@ -707,7 +707,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { $plugin = null; foreach($plugin_types as $type) { - if(@file_exists($path.$type.'.php')) { + if(file_exists($path.$type.'.php')) { $plugin = plugin_load($type, $this->base); if ($plugin) break; } @@ -907,12 +907,12 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { // check to make sure we aren't overwriting anything $target = $target_base_dir.$item['base']; - if(!$overwrite && @file_exists($target)) { + if(!$overwrite && file_exists($target)) { // TODO remember our settings, ask the user to confirm overwrite continue; } - $action = @file_exists($target) ? 'update' : 'install'; + $action = file_exists($target) ? 'update' : 'install'; // copy action if($this->dircopy($item['tmp'], $target)) { @@ -1117,7 +1117,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin { return $ok; } else { - $exists = @file_exists($dst); + $exists = file_exists($dst); if(!@copy($src, $dst)) return false; if(!$exists && !empty($conf['fperm'])) chmod($dst, $conf['fperm']); -- cgit v1.2.3 From c85bb997ff7d1af302b93348c38ad4b2b2914290 Mon Sep 17 00:00:00 2001 From: Mijndert Date: Thu, 8 Jan 2015 16:11:16 +0100 Subject: translation update --- lib/plugins/extension/lang/nl/lang.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/nl/lang.php b/lib/plugins/extension/lang/nl/lang.php index f75f78121..194b4b3e1 100644 --- a/lib/plugins/extension/lang/nl/lang.php +++ b/lib/plugins/extension/lang/nl/lang.php @@ -6,6 +6,7 @@ * @author Rene * @author Gerrit Uitslag * @author Johan Vervloet + * @author Mijndert */ $lang['menu'] = 'Uitbreidingen'; $lang['tab_plugins'] = 'Geïnstalleerde Plugins'; @@ -64,6 +65,7 @@ $lang['status_bundled'] = 'Gebundeld'; $lang['msg_enabled'] = 'Plugin %s ingeschakeld'; $lang['msg_disabled'] = 'Plugin %s uitgeschakeld'; $lang['msg_delete_success'] = 'Uitbreiding %s gedeinstalleerd'; +$lang['msg_delete_failed'] = 'Het deïnstalleren van de extensie %s is mislukt.'; $lang['msg_template_install_success'] = 'Template %s werd succesvol geïnstalleerd'; $lang['msg_template_update_success'] = 'Template %s werd succesvol geüpdatet'; $lang['msg_plugin_install_success'] = 'Plugin %s werd succesvol geïnstalleerd'; -- cgit v1.2.3 From 5af3d1cd434f85882bb29253a3757cacc5c5338a Mon Sep 17 00:00:00 2001 From: KeenRivals Date: Wed, 14 Jan 2015 16:14:41 -0500 Subject: Losslessly reduced PNG images with optipng -o7 -strip all, advdef -z4 -i60, and advpng -z4 -i60. --- lib/plugins/extension/images/disabled.png | Bin 1396 -> 1163 bytes lib/plugins/extension/images/donate.png | Bin 724 -> 677 bytes lib/plugins/extension/images/down.png | Bin 280 -> 197 bytes lib/plugins/extension/images/enabled.png | Bin 1398 -> 1172 bytes lib/plugins/extension/images/overlay.png | Bin 109 -> 68 bytes lib/plugins/extension/images/plugin.png | Bin 6824 -> 4054 bytes lib/plugins/extension/images/tag.png | Bin 753 -> 341 bytes lib/plugins/extension/images/template.png | Bin 7547 -> 5206 bytes lib/plugins/extension/images/up.png | Bin 281 -> 197 bytes lib/plugins/extension/images/warning.png | Bin 613 -> 606 bytes 10 files changed, 0 insertions(+), 0 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/images/disabled.png b/lib/plugins/extension/images/disabled.png index 93a813642..9c18b0452 100644 Binary files a/lib/plugins/extension/images/disabled.png and b/lib/plugins/extension/images/disabled.png differ diff --git a/lib/plugins/extension/images/donate.png b/lib/plugins/extension/images/donate.png index 9e234da1c..a76dfaaec 100644 Binary files a/lib/plugins/extension/images/donate.png and b/lib/plugins/extension/images/donate.png differ diff --git a/lib/plugins/extension/images/down.png b/lib/plugins/extension/images/down.png index df7beda4e..8e399a97d 100644 Binary files a/lib/plugins/extension/images/down.png and b/lib/plugins/extension/images/down.png differ diff --git a/lib/plugins/extension/images/enabled.png b/lib/plugins/extension/images/enabled.png index 92d958802..edbbb5b3c 100644 Binary files a/lib/plugins/extension/images/enabled.png and b/lib/plugins/extension/images/enabled.png differ diff --git a/lib/plugins/extension/images/overlay.png b/lib/plugins/extension/images/overlay.png index 8f92c2fe7..5414206c5 100644 Binary files a/lib/plugins/extension/images/overlay.png and b/lib/plugins/extension/images/overlay.png differ diff --git a/lib/plugins/extension/images/plugin.png b/lib/plugins/extension/images/plugin.png index e4a2d3be6..62424b2c7 100644 Binary files a/lib/plugins/extension/images/plugin.png and b/lib/plugins/extension/images/plugin.png differ diff --git a/lib/plugins/extension/images/tag.png b/lib/plugins/extension/images/tag.png index 155dbb3dd..1b1dd750c 100644 Binary files a/lib/plugins/extension/images/tag.png and b/lib/plugins/extension/images/tag.png differ diff --git a/lib/plugins/extension/images/template.png b/lib/plugins/extension/images/template.png index ee74bc1d5..67240d1eb 100644 Binary files a/lib/plugins/extension/images/template.png and b/lib/plugins/extension/images/template.png differ diff --git a/lib/plugins/extension/images/up.png b/lib/plugins/extension/images/up.png index ec9337715..531b2dd7b 100644 Binary files a/lib/plugins/extension/images/up.png and b/lib/plugins/extension/images/up.png differ diff --git a/lib/plugins/extension/images/warning.png b/lib/plugins/extension/images/warning.png index c5e482f84..c1af79f0f 100644 Binary files a/lib/plugins/extension/images/warning.png and b/lib/plugins/extension/images/warning.png differ -- cgit v1.2.3 From 208f4580295554c94e23377a4e02288bd5251908 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Thu, 15 Jan 2015 12:06:09 +0100 Subject: fixed wrong config check in extension manager #1006 --- lib/plugins/extension/helper/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 872cccc8c..8bcd00ec6 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -492,7 +492,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $errors .= '

    '.$this->getLang('git').'

    '; } - if ($extension->isEnabled() && in_array('Auth', $extension->getTypes()) && $conf['auth'] != $extension->getID()) { + if ($extension->isEnabled() && in_array('Auth', $extension->getTypes()) && $conf['authtype'] != $extension->getID()) { $errors .= '

    '.$this->getLang('auth').'

    '; } -- cgit v1.2.3 From 9b505d59adc0f5dd5a481c7a9a2e9d1f4f6780f3 Mon Sep 17 00:00:00 2001 From: Aleksandr Selivanov Date: Sun, 25 Jan 2015 20:56:05 +0100 Subject: translation update --- lib/plugins/extension/lang/ru/intro_plugins.txt | 2 +- lib/plugins/extension/lang/ru/intro_search.txt | 2 +- lib/plugins/extension/lang/ru/intro_templates.txt | 2 +- lib/plugins/extension/lang/ru/lang.php | 28 +++++++++++------------ 4 files changed, 17 insertions(+), 17 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/ru/intro_plugins.txt b/lib/plugins/extension/lang/ru/intro_plugins.txt index 7262516db..c5ea9e0ec 100644 --- a/lib/plugins/extension/lang/ru/intro_plugins.txt +++ b/lib/plugins/extension/lang/ru/intro_plugins.txt @@ -1 +1 @@ -Плагины, установленные в вашей DokuWiki. Здесь вы можете их включить или выключить, или даже полностью удалить. Также здесь показываются обновления плагинов, обязательно прочтите документацию плагина перед обновлением. \ No newline at end of file +Плагины, установленные в вашей «Докувики». Здесь вы можете их включить или выключить, или даже полностью удалить. Также здесь показываются обновления плагинов; обязательно прочтите документацию плагина перед обновлением. \ No newline at end of file diff --git a/lib/plugins/extension/lang/ru/intro_search.txt b/lib/plugins/extension/lang/ru/intro_search.txt index a8486eab6..3c16748ba 100644 --- a/lib/plugins/extension/lang/ru/intro_search.txt +++ b/lib/plugins/extension/lang/ru/intro_search.txt @@ -1 +1 @@ -Эта вкладка дает вам доступ ко всем имеющимся сторонним плагинам и шаблонам для DokuWiki. Имейте в виду, что установка стороннего кода может представлять **угрозу безопасности**, возможно вам нужно сперва прочитать о [[doku>security#plugin_security|безопасности плагинов]]. \ No newline at end of file +Вкладка даёт вам доступ ко всем имеющимся сторонним плагинам и шаблонам для «Докувики». Имейте ввиду, что установка стороннего кода может представлять **угрозу безопасности,** возможно вам нужно сперва прочитать о [[doku>security#plugin_security|безопасности плагинов]]. \ No newline at end of file diff --git a/lib/plugins/extension/lang/ru/intro_templates.txt b/lib/plugins/extension/lang/ru/intro_templates.txt index 2d0b74256..787b32fa3 100644 --- a/lib/plugins/extension/lang/ru/intro_templates.txt +++ b/lib/plugins/extension/lang/ru/intro_templates.txt @@ -1 +1 @@ -Это шаблоны, установленные в вашей DokuWiki. Вы можете выбрать шаблон, который нужно использовать в [[?do=admin&page=config|Менеджере Конфигурации]] \ No newline at end of file +Шаблоны (темы оформления), установленные в вашей «Докувики». Шаблон, который нужно использовать, выбирается в [[?do=admin&page=config|настройках вики]] \ No newline at end of file diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php index 64db39b78..381d84500 100644 --- a/lib/plugins/extension/lang/ru/lang.php +++ b/lib/plugins/extension/lang/ru/lang.php @@ -36,18 +36,18 @@ $lang['popularity'] = 'Популярность: %s%%'; $lang['homepage_link'] = 'Описание'; $lang['bugs_features'] = 'Баг-трекер'; $lang['tags'] = 'Метки:'; -$lang['author_hint'] = 'Найти дополнения этого автора'; +$lang['author_hint'] = 'Найти дополнения автора'; $lang['installed'] = 'Установлено:'; -$lang['downloadurl'] = 'Ссылка для скачивания:'; +$lang['downloadurl'] = 'Скачать:'; $lang['repository'] = 'Репозиторий:'; $lang['unknown'] = 'неизвестно'; -$lang['installed_version'] = 'Установленная версия:'; -$lang['install_date'] = 'Последнее обновление:'; +$lang['installed_version'] = 'Уст. версия:'; +$lang['install_date'] = 'Посл. обновление:'; $lang['available_version'] = 'Доступная версия:'; -$lang['compatible'] = 'Совместим с:'; -$lang['depends'] = 'Зависит от:'; -$lang['similar'] = 'Похож на:'; -$lang['conflicts'] = 'Конфликтует с:'; +$lang['compatible'] = 'Совместим с'; +$lang['depends'] = 'Зависит от'; +$lang['similar'] = 'Похож на'; +$lang['conflicts'] = 'Конфликтует с'; $lang['donate'] = 'Нравится?'; $lang['donate_action'] = 'Купить автору кофе!'; $lang['repo_retry'] = 'Повторить'; @@ -64,7 +64,7 @@ $lang['status_template'] = 'шаблон'; $lang['status_bundled'] = 'в комплекте'; $lang['msg_enabled'] = 'Плагин %s включён'; $lang['msg_disabled'] = 'Плагин %s отключён'; -$lang['msg_delete_success'] = 'Дополнение удалено'; +$lang['msg_delete_success'] = 'Дополнение %s удалено'; $lang['msg_delete_failed'] = 'Не удалось удалить расширение %s'; $lang['msg_template_install_success'] = 'Шаблон %s успешно установлен'; $lang['msg_template_update_success'] = 'Шаблон %s успешно обновлён'; @@ -75,18 +75,18 @@ $lang['missing_dependency'] = 'Отсутствует или откл $lang['security_issue'] = 'Проблема безопасности: %s'; $lang['security_warning'] = 'Предупреждение безопасности: %s'; $lang['update_available'] = 'Обновление: доступна новая версия %s.'; -$lang['wrong_folder'] = 'Плагин установлен неправильно: Переименуйте директорию "%s" в "%s".'; -$lang['url_change'] = 'Ссылка изменилась: Ссылка для загрузки изменилась с прошлого раза. Проверьте новую ссылку прежде чем обновлять расширение.
    Новая: %s
    Старая: %s'; +$lang['wrong_folder'] = 'Плагин установлен неправильно: переименуйте папку плагина из %s в %s.'; +$lang['url_change'] = 'Ссылка изменилась: ссылка для загрузки изменилась с прошлого раза. Проверьте новую ссылку прежде, чем обновлять расширение.
    Новая: %s
    Старая: %s'; $lang['error_badurl'] = 'Ссылки должны начинаться с http или https'; $lang['error_dircreate'] = 'Не удалось создать временную директорию для загрузки'; $lang['error_download'] = 'Не удалось загрузить файл: %s'; -$lang['error_decompress'] = 'Не удалось распаковать загруженный файл. Возможно, файл был повреждён при загрузке - тогда нужно попробовать ещё раз. Либо неизвестен формат архива - тогда загрузку и установку надо произвести вручную.'; +$lang['error_decompress'] = 'Не удалось распаковать загруженный файл. Возможно, файл был повреждён при загрузке — тогда нужно попробовать ещё раз. Либо неизвестен формат архива — тогда загрузку и установку надо произвести вручную.'; $lang['error_findfolder'] = 'Не удалось определить директорию для расширения, загрузку и установку надо произвести вручную.'; $lang['error_copy'] = 'Возникла ошибка копирования файлов в директорию %s: возможно, диск переполнен, или неверно выставлены права доступа. Это могло привести к неполной установке плагина и нарушить работу вашей вики.'; $lang['noperms'] = 'Папка для расширений недоступна для записи'; $lang['notplperms'] = 'Папка для шаблонов недоступна для записи'; $lang['nopluginperms'] = 'Папка плагинов недоступна для записи'; $lang['git'] = 'Это расширение было установлено через git. Вы не можете обновить его тут.'; -$lang['install_url'] = 'Установить с адреса URL:'; -$lang['install_upload'] = 'Скачать расширение:'; +$lang['install_url'] = 'Установить с адреса URL'; +$lang['install_upload'] = 'Скачать расширение'; $lang['repo_error'] = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org, а также проверьте настройки соединения с Интернетом.'; -- cgit v1.2.3 From c85cbe690d7a58d7835f92aa71252cf2d25d40a2 Mon Sep 17 00:00:00 2001 From: Davor Turkalj Date: Wed, 28 Jan 2015 09:26:11 +0100 Subject: translation update --- lib/plugins/extension/lang/hr/lang.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/hr/lang.php b/lib/plugins/extension/lang/hr/lang.php index f43defcb1..e51d8cba3 100644 --- a/lib/plugins/extension/lang/hr/lang.php +++ b/lib/plugins/extension/lang/hr/lang.php @@ -5,20 +5,20 @@ * * @author Davor Turkalj */ -$lang['menu'] = 'Upravitelj dodataka'; +$lang['menu'] = 'Upravitelj proširenja'; $lang['tab_plugins'] = 'Ugrađeni dodatci'; $lang['tab_templates'] = 'Ugrađeni predlošci'; $lang['tab_search'] = 'Potraži i ugradi'; $lang['tab_install'] = 'Ručna ugradnja'; $lang['notimplemented'] = 'Ova mogućnost još nije napravljena'; -$lang['notinstalled'] = 'Dodatak nije ugrađen'; -$lang['alreadyenabled'] = 'Ovaj dodatak je već omogućen'; -$lang['alreadydisabled'] = 'Ovaj dodatak je već onemogućen'; +$lang['notinstalled'] = 'Proširenje nije ugrađeno'; +$lang['alreadyenabled'] = 'Ovo proširenje je već omogućeno'; +$lang['alreadydisabled'] = 'Ovo proširenje je već onemogućeno'; $lang['pluginlistsaveerror'] = 'Dogodila se greška pri snimanju liste dodataka'; $lang['unknownauthor'] = 'Nepoznat autor'; $lang['unknownversion'] = 'Nepoznata inačica'; $lang['btn_info'] = 'Prikaži više informacija'; -$lang['btn_update'] = 'Dogradi'; +$lang['btn_update'] = 'Ažuriraj'; $lang['btn_uninstall'] = 'Ukloni'; $lang['btn_enable'] = 'Omogući'; $lang['btn_disable'] = 'Onemogući'; @@ -33,7 +33,7 @@ $lang['popularity'] = 'Popularnost: %s%%'; $lang['homepage_link'] = 'Upute'; $lang['bugs_features'] = 'Greške'; $lang['tags'] = 'Oznake:'; -$lang['author_hint'] = 'Potraži dodatke od ovog autora'; +$lang['author_hint'] = 'Potraži proširenja od ovog autora'; $lang['installed'] = 'Ugrađeno:'; $lang['downloadurl'] = 'URL adresa preuzimanja:'; $lang['repository'] = 'Repozitorij:'; @@ -61,7 +61,8 @@ $lang['status_template'] = 'predložak'; $lang['status_bundled'] = 'ugrađen'; $lang['msg_enabled'] = 'Dodatak %s omogućen'; $lang['msg_disabled'] = 'Dodatak %s onemogućen'; -$lang['msg_delete_success'] = 'Proširenje uklonjeno'; +$lang['msg_delete_success'] = 'Proširenje %s uklonjeno'; +$lang['msg_delete_failed'] = 'Uklanjanje proširenja %s nije uspjelo'; $lang['msg_template_install_success'] = 'Predložak %s uspješno ugrađen'; $lang['msg_template_update_success'] = 'Predložak %s uspješno nadograđen'; $lang['msg_plugin_install_success'] = 'Dodatak %s uspješno ugrađen'; @@ -83,6 +84,8 @@ $lang['noperms'] = 'Nije moguće pisati u mapu proširanja'; $lang['notplperms'] = 'Nije moguće pisati u mapu predloška'; $lang['nopluginperms'] = 'Nije moguće pisati u mapu dodatka'; $lang['git'] = 'Proširenje je ugrađeno preko Git-a, možda ga ne želite nadograđivati ovdje.'; +$lang['auth'] = 'Autorizacijski dodatak nije podešen, razmotrite njegovo onemogućavanje kao dodatka.'; $lang['install_url'] = 'Ugradi s URL-a:'; $lang['install_upload'] = 'Učitaj proširenje:'; $lang['repo_error'] = 'Repozitorij dodataka nije dostupan. Budite sigurni da server može pristupiti www.dokuwiki.org i provjerite proxy postavke.'; +$lang['nossl'] = 'Izgleda da korišteni PHP ne podržava SSL. Učitavanje neće raditi na mnogim DokuWiki dodatcima.'; -- cgit v1.2.3 From cbb4a6817d10faf5d8376e07a26e2030a2335d78 Mon Sep 17 00:00:00 2001 From: lainme Date: Thu, 12 Feb 2015 08:51:36 +0100 Subject: translation update --- lib/plugins/extension/lang/zh/lang.php | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/zh/lang.php b/lib/plugins/extension/lang/zh/lang.php index 0264f3e9c..5ab3d77ba 100644 --- a/lib/plugins/extension/lang/zh/lang.php +++ b/lib/plugins/extension/lang/zh/lang.php @@ -65,6 +65,7 @@ $lang['status_bundled'] = '内建'; $lang['msg_enabled'] = '插件 %s 已启用'; $lang['msg_disabled'] = '插件 %s 已禁用'; $lang['msg_delete_success'] = '插件已经卸载'; +$lang['msg_delete_failed'] = '卸载扩展 %s 失败'; $lang['msg_template_install_success'] = '模板 %s 安装成功'; $lang['msg_template_update_success'] = '模板 %s 更新成功'; $lang['msg_plugin_install_success'] = '插件 %s 安装成功'; @@ -86,6 +87,8 @@ $lang['noperms'] = '扩展目录不可写'; $lang['notplperms'] = '模板目录不可写'; $lang['nopluginperms'] = '插件目录不可写'; $lang['git'] = '这个扩展是通过 git 安装的,您可能不想在这里升级它'; +$lang['auth'] = '这个认证插件没有在配置中启用,请考虑禁用它。'; $lang['install_url'] = '从 URL 安装:'; $lang['install_upload'] = '上传扩展:'; $lang['repo_error'] = '无法连接到插件仓库。请确定您的服务器可以连接 www.dokuwiki.org 并检查您的代理设置。'; +$lang['nossl'] = '您的 PHP 似乎没有 SSL 支持。很多 Dokuwiki 扩展将无法下载。'; -- cgit v1.2.3 From c2a2396e45a7ec8a14d573c89719463e765b1074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Iradier?= Date: Fri, 13 Feb 2015 16:01:39 +0100 Subject: translation update --- lib/plugins/extension/lang/es/lang.php | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib/plugins/extension') diff --git a/lib/plugins/extension/lang/es/lang.php b/lib/plugins/extension/lang/es/lang.php index 63742c3b3..a835cb630 100644 --- a/lib/plugins/extension/lang/es/lang.php +++ b/lib/plugins/extension/lang/es/lang.php @@ -6,6 +6,7 @@ * @author Antonio Bueno * @author Antonio Castilla * @author Jonathan Hernández + * @author Álvaro Iradier */ $lang['menu'] = 'Administrador de Extensiones '; $lang['tab_plugins'] = 'Plugins instalados'; @@ -64,6 +65,7 @@ $lang['status_bundled'] = 'agrupado'; $lang['msg_enabled'] = 'Plugin %s activado'; $lang['msg_disabled'] = 'Plugin %s desactivado'; $lang['msg_delete_success'] = 'Extensión desinstalada'; +$lang['msg_delete_failed'] = 'La desinstalación de la extensión %s ha fallado'; $lang['msg_template_install_success'] = 'Plantilla %s instalada con éxito'; $lang['msg_template_update_success'] = 'Plantilla %s actualizada con éxito'; $lang['msg_plugin_install_success'] = 'Plugin %s instalado con éxito'; @@ -78,6 +80,9 @@ $lang['url_change'] = 'URL actualizada: El Download $lang['error_badurl'] = 'URLs deberían empezar con http o https'; $lang['error_dircreate'] = 'No es posible de crear un directorio temporero para poder recibir el download'; $lang['error_download'] = 'No es posible descargar el documento: %s'; +$lang['error_decompress'] = 'No se pudo descomprimir el fichero descargado. Puede ser a causa de una descarga incorrecta, en cuyo caso puedes intentarlo de nuevo; o puede que el formato de compresión sea desconocido, en cuyo caso necesitarás descargar e instalar manualmente.'; +$lang['noperms'] = 'El directorio de extensiones no tiene permiso de escritura.'; +$lang['notplperms'] = 'El directorio de plantillas no tiene permiso de escritura.'; $lang['git'] = 'Esta extensión fue instalada a través de git, quizás usted no quiera actualizarla aquí mismo.'; $lang['install_url'] = 'Instalar desde URL:'; $lang['install_upload'] = 'Subir Extensión:'; -- cgit v1.2.3