summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorchris <chris@jalakai.co.uk>2006-01-13 03:34:14 +0100
committerchris <chris@jalakai.co.uk>2006-01-13 03:34:14 +0100
commit875f9efe0c294b53cdde087b617be4e88510de2f (patch)
tree3afa690541c1719175fe53aa3eeb9477447f5813 /lib
parent2415b71829180bcca8a3f9f60867df0ccd33ab62 (diff)
downloadrpg-875f9efe0c294b53cdde087b617be4e88510de2f.tar.gz
rpg-875f9efe0c294b53cdde087b617be4e88510de2f.tar.bz2
plugin manager update, remove js & css file aggregation, improve error handling
darcs-hash:20060113023414-9b6ab-76bd7b12af34e8f32135c32c22403bd0fb14c98a.gz
Diffstat (limited to 'lib')
-rw-r--r--lib/plugins/plugin/admin.php73
-rw-r--r--lib/plugins/plugin/lang/de/lang.php1
-rw-r--r--lib/plugins/plugin/lang/en/lang.php5
-rw-r--r--lib/plugins/plugin/lang/pl/lang.php1
4 files changed, 30 insertions, 50 deletions
diff --git a/lib/plugins/plugin/admin.php b/lib/plugins/plugin/admin.php
index c767654ee..cffcf8057 100644
--- a/lib/plugins/plugin/admin.php
+++ b/lib/plugins/plugin/admin.php
@@ -17,9 +17,8 @@ require_once(DOKU_PLUGIN.'admin.php');
//--------------------------[ GLOBALS ]------------------------------------------------
// note: probably should be dokuwiki wide globals, where they can be accessed by pluginutils.php
- global $common_plugin_files, $common_plugin_types;
+ global $common_plugin_types;
$common_plugin_types = array('syntax', 'admin');
- $common_plugin_files = array("style.css", "screen.css", "print.css", "script.js");
/**
* All DokuWiki plugins to extend the admin function
@@ -190,7 +189,7 @@ class ap_manage {
}
function html_pluginlist() {
- global $ID;
+ global $ID;
foreach ($this->manager->plugin_list as $plugin) {
@@ -205,8 +204,9 @@ class ap_manage {
ptln(' <input type="hidden" name="plugin" value="'.$plugin.'" />');
$this->html_button('info', false, 6);
- if (in_array('settings', $this->manager->functions))
- $this->html_button('settings', !@file_exists(DOKU_PLUGIN.$plugin.'/settings.php'), 6);
+ if (in_array('settings', $this->manager->functions)) {
+ $this->html_button('settings', !@file_exists(DOKU_PLUGIN.$plugin.'/settings.php'), 6);
+ }
$this->html_button('update', !$this->plugin_readlog($plugin, 'url'), 6);
$this->html_button('delete', false, 6);
@@ -221,39 +221,12 @@ class ap_manage {
}
/**
- * Rebuild aggregated files & update latest plugin date
+ * Refresh plugin list
*/
function refresh() {
- global $lang;
- global $common_plugin_files;
sort($this->manager->plugin_list = plugin_list());
- foreach ($common_plugin_files as $file) {
- $aggregate = '';
-
- // could replace with an class/object based aggregator,
- // that way special files could have their own aggregator
- foreach ($this->manager->plugin_list as $plugin) {
- if (@file_exists(DOKU_PLUGIN."$plugin/$file")) {
- $contents = @file_get_contents(DOKU_PLUGIN."$plugin/$file")."\n";
-
- // url conversion for css files
- if (is_css($file)) {
- $contents = preg_replace('/(url\([\'\"]?)([^\/](?![a-zA-Z0-9]+:\/\/).*?)([\'\"]?\))/','$1'.$plugin.'/$2$3',$contents);
- }
-
- $aggregate .= $contents;
- }
- }
-
- if (trim($aggregate)) {
- if (!io_savefile(DOKU_PLUGIN."plugin_$file", $aggregate)) {
- $this->manager->error .= sprintf($this->lang['error_write'],$file);
- }
- }
- }
-
// update latest plugin date - FIXME
return (!$this->manager->error);
}
@@ -408,7 +381,7 @@ class ap_manage {
ptln('<h2>'.$this->lang['downloading'].'</h2>');
if ($this->manager->error) {
- ptln('<p class="error">'.str_replace("\n","<br />",$this->manager->error).'</p>');
+ ptln('<div class="error">'.str_replace("\n","<br />",$this->manager->error).'</div>');
} else if (count($this->downloaded) == 1) {
ptln('<p>'.sprintf($this->lang['downloaded'],$this->downloaded[0]).'</p>');
} else if (count($this->downloaded)) { // more than one plugin in the download
@@ -430,16 +403,24 @@ class ap_manage {
function process() {
- ap_delete(DOKU_PLUGIN.$this->manager->plugin);
- $this->refresh();
+ if (!ap_delete(DOKU_PLUGIN.$this->manager->plugin)) {
+ $this->manager->error = sprintf($this->lang['error_delete'],$this->manager->plugin);
+ } else {
+ $this->refresh();
+ }
}
function html() {
parent::html();
ptln('<div class="pm_info">');
- ptln('<h2>'.$this->lang['deleting'].'</h2>');
- ptln('<p>'.sprintf($this->lang['deleted'],$this->plugin).'</p>');
+ ptln('<h2>'.$this->lang['deleting'].'</h2>');
+
+ if ($this->manager->error) {
+ ptln('<div class="error">'.str_replace("\n","<br />",$this->manager->error).'</div>');
+ } else {
+ ptln('<p>'.sprintf($this->lang['deleted'],$this->plugin).'</p>');
+ }
ptln('</div>');
}
}
@@ -558,7 +539,7 @@ class ap_manage {
ptln('<h2>'.$this->lang['updating'].'</h2>');
if ($this->manager->error) {
- ptln('<p class="error">'.str_replace("\n","<br />", $this->manager->error).'</p>');
+ ptln('<div class="error">'.str_replace("\n","<br />", $this->manager->error).'</div>');
} else if (count($this->downloaded) == 1) {
ptln('<p>'.sprintf($this->lang['updated'],$this->downloaded[0]).'</p>');
} else if (count($this->downloaded)) { // more than one plugin in the download
@@ -664,23 +645,23 @@ class ap_manage {
// delete, with recursive sub-directory support
function ap_delete($path) {
- if (!is_string($path) || $path == "") return;
+ if (!is_string($path) || $path == "") return false;
if (is_dir($path)) {
- if (!$dh = @opendir($path)) return;
+ if (!$dh = @opendir($path)) return false;
while ($f = readdir($dh)) {
if ($f == '..' || $f == '.') continue;
ap_delete("$path/$f");
}
-
+
closedir($dh);
- rmdir($path);
- return;
-
+ return @rmdir($path);
} else {
- unlink($path);
+ return @unlink($path);
}
+
+ return false;
}
// return a list (name & type) of all the component plugins that make up this plugin
diff --git a/lib/plugins/plugin/lang/de/lang.php b/lib/plugins/plugin/lang/de/lang.php
index e48a70a73..462a0264f 100644
--- a/lib/plugins/plugin/lang/de/lang.php
+++ b/lib/plugins/plugin/lang/de/lang.php
@@ -49,7 +49,6 @@ $lang['download_none'] = 'Keine Plugins gefunden oder es trat ein Fehler beim
// error messages
$lang['error_download'] = 'Konnte das Plugin %s nicht installieren';
-$lang['error_write'] = 'Konnte keine vereinigte Datei für %s erstellen';
$lang['error_badurl'] = 'Wahrscheinlich ungültige URL, konnte keinen Dateinamen ausfindig machen';
$lang['error_dircreate'] = 'Konnte keinen temporären Ordner für die Downloads erstellen';
//$lang['error_'] = '';
diff --git a/lib/plugins/plugin/lang/en/lang.php b/lib/plugins/plugin/lang/en/lang.php
index 57550d72e..665cd8d18 100644
--- a/lib/plugins/plugin/lang/en/lang.php
+++ b/lib/plugins/plugin/lang/en/lang.php
@@ -68,15 +68,16 @@ $lang['www'] = 'Web:';
// error messages
$lang['error'] = 'An unknown error occurred.';
$lang['error_download'] = 'Unable to download the plugin file: %s';
-$lang['error_write'] = 'Unable to create aggregate file %s';
$lang['error_badurl'] = 'Suspect bad url - unable to determine file name from the url';
$lang['error_dircreate'] = 'Unable to create temporary folder to receive download';
$lang['error_decompress'] = 'The plugin manager was 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 the plugin manually.';
-$lang['error_copy'] = 'There was a file copy error while attempting to install files for plugin %s: '.
+$lang['error_copy'] = 'There was a file copy error while attempting to install files for plugin <em>%s</em>: '.
'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['error_delete'] = 'There was an error while attempting to delete plugin <em>%s</em>. '.
+ 'The most probably cause is insufficient file or directory access permissions';
//$lang['error_'] = '';
//Setup VIM: ex: et ts=2 enc=utf-8 :
diff --git a/lib/plugins/plugin/lang/pl/lang.php b/lib/plugins/plugin/lang/pl/lang.php
index 518095351..a73438816 100644
--- a/lib/plugins/plugin/lang/pl/lang.php
+++ b/lib/plugins/plugin/lang/pl/lang.php
@@ -68,7 +68,6 @@ $lang['www'] = 'WWW:';
// error messages
$lang['error'] = 'Wystąpił nieznany błąd.';
$lang['error_download'] = 'Nie powiodło się ściągnięcie pliku wtyczki: %s';
-$lang['error_write'] = 'Nie powiodło się stworzenie pliku aggregate %s';
$lang['error_badurl'] = 'Prawdopodobnie zły url - nie da się ustalić nazwy pliku na podstawie urla';
$lang['error_dircreate'] = 'Nie powiodło się stworzenie tymczasowego katalogu na pobrane pliki';
$lang['error_decompress'] = 'Menadżer wtyczek nie był w stanie rozpakować ściągniętego pliku. '.