summaryrefslogtreecommitdiff
path: root/lib/plugins/extension
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2013-08-09 22:58:01 +0200
committerAndreas Gohr <andi@splitbrain.org>2013-08-09 22:58:01 +0200
commit75e063084d865a011e074c29c5edb8569fe2cfe1 (patch)
treecc14ba78b947e8b0a48a1fc17404f2ac81f5c0ab /lib/plugins/extension
parent1e0eea17dc60dc6f5ec81ffcca313db353c88c44 (diff)
downloadrpg-75e063084d865a011e074c29c5edb8569fe2cfe1.tar.gz
rpg-75e063084d865a011e074c29c5edb8569fe2cfe1.tar.bz2
made info mechanism work again
Diffstat (limited to 'lib/plugins/extension')
-rw-r--r--lib/plugins/extension/admin.php3
-rw-r--r--lib/plugins/extension/helper/gui.php21
-rw-r--r--lib/plugins/extension/helper/list.php43
-rw-r--r--lib/plugins/extension/helper/repository.php12
-rw-r--r--lib/plugins/extension/style.less11
5 files changed, 54 insertions, 36 deletions
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 = '&amp;') {
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 .= '<li id="extensionplugin__'.hsc($extension->getInstallName()).'" class="'.$this->make_class($extension).'">';
+ $this->form .= '<li id="extensionplugin__'.hsc($extension->getID()).'" class="'.$this->make_class($extension).'">';
}
/**
@@ -221,7 +221,15 @@ class helper_plugin_extension_list extends DokuWiki_Plugin {
$return .= '</p>';
$return .= $this->make_linkbar($extension);
- $return .= $this->make_action('info', $extension, $showinfo);
+
+ if($showinfo){
+ $url = $this->gui->tabURL('');
+ $return .= '<a href="'.$url.'#extensionplugin__'.$extension->getID().'" class="info close">'.$this->getLang('btn_info').'</a>';
+ }else{
+ $url = $this->gui->tabURL('', array('info' => $extension->getID()));
+ $return .= '<a href="'.$url.'#extensionplugin__'.$extension->getID().'" class="info">'.$this->getLang('btn_info').'</a>';
+ }
+
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 .= '<a href="http://www.dokuwiki.org/'.$dokulink.'" title="'.$dokulink.'" class="interwiki iw_doku">'.$link.'</a> ';
+ foreach ($ext as $link) {
+ $return .= '<a href="'.$this->gui->tabURL('search', array('q'=>'ext:'.$link)).'">'.hsc($link).'</a> ';
}
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 '<input class="'.$classes.'" name="'.$name.'" type="submit" value="'.$this->getLang('btn_'.$action).'" '.$title.' />';
}
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;
}