summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorKlap-in <klapinklapin@gmail.com>2013-02-16 23:08:08 +0100
committerKlap-in <klapinklapin@gmail.com>2013-02-16 23:08:08 +0100
commite57cf65d092c1a6458c3a468b017018905018eeb (patch)
treecb06ff0cf82afed514aa95c5c33e5faef8a9ef62 /lib
parenta0e625181ad2e2369e8db0e5691f7356363776d0 (diff)
parent9bbf02e86e5c1181bbc288ce42f1937f309a7e79 (diff)
downloadrpg-e57cf65d092c1a6458c3a468b017018905018eeb.tar.gz
rpg-e57cf65d092c1a6458c3a468b017018905018eeb.tar.bz2
Merge remote-tracking branch 'origin/master' into authpluginconfig
Diffstat (limited to 'lib')
-rw-r--r--lib/exe/detail.php2
-rw-r--r--lib/exe/fetch.php310
-rw-r--r--lib/exe/js.php2
-rw-r--r--lib/exe/mediamanager.php7
-rw-r--r--lib/exe/xmlrpc.php4
-rw-r--r--lib/plugins/acl/script.js8
-rw-r--r--lib/plugins/auth.php1
-rw-r--r--lib/plugins/config/settings/config.class.php85
-rw-r--r--lib/plugins/config/settings/config.metadata.php10
-rw-r--r--lib/plugins/config/style.css9
-rw-r--r--lib/plugins/info/plugin.info.txt2
-rw-r--r--lib/plugins/info/syntax.php3
-rw-r--r--lib/plugins/plugin/lang/ar/lang.php2
-rw-r--r--lib/plugins/plugin/lang/hi/lang.php1
-rw-r--r--lib/plugins/plugin/lang/pl/lang.php2
-rw-r--r--lib/plugins/plugin/lang/zh-tw/lang.php2
-rw-r--r--lib/plugins/usermanager/lang/ca-valencia/lang.php2
-rw-r--r--lib/scripts/linkwiz.js7
-rw-r--r--lib/scripts/qsearch.js9
-rw-r--r--lib/tpl/dokuwiki/css/_edit.css1
-rw-r--r--lib/tpl/dokuwiki/script.js9
21 files changed, 227 insertions, 251 deletions
diff --git a/lib/exe/detail.php b/lib/exe/detail.php
index e597db3a2..db635c016 100644
--- a/lib/exe/detail.php
+++ b/lib/exe/detail.php
@@ -31,7 +31,7 @@ if($AUTH >= AUTH_READ){
$SRC = mediaFN($IMG);
if(!@file_exists($SRC)){
//doesn't exist!
- header("HTTP/1.0 404 File not Found");
+ http_status(404);
$ERROR = 'File not found';
}
}else{
diff --git a/lib/exe/fetch.php b/lib/exe/fetch.php
index 52e7ebe1e..9bac4d272 100644
--- a/lib/exe/fetch.php
+++ b/lib/exe/fetch.php
@@ -6,84 +6,87 @@
* @author Andreas Gohr <andi@splitbrain.org>
*/
- if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
- define('DOKU_DISABLE_GZIP_OUTPUT', 1);
- require_once(DOKU_INC.'inc/init.php');
-
- //close session
- session_write_close();
-
- $mimetypes = getMimeTypes();
-
- //get input
- $MEDIA = stripctl(getID('media',false)); // no cleaning except control chars - maybe external
- $CACHE = calc_cache($INPUT->str('cache'));
- $WIDTH = $INPUT->int('w');
- $HEIGHT = $INPUT->int('h');
- $REV = &$INPUT->ref('rev');
- //sanitize revision
- $REV = preg_replace('/[^0-9]/','',$REV);
-
- list($EXT,$MIME,$DL) = mimetype($MEDIA,false);
- if($EXT === false){
- $EXT = 'unknown';
- $MIME = 'application/octet-stream';
- $DL = true;
- }
-
- // check for permissions, preconditions and cache external files
- list($STATUS, $STATUSMESSAGE) = checkFileStatus($MEDIA, $FILE, $REV);
-
- // prepare data for plugin events
- $data = array('media' => $MEDIA,
- 'file' => $FILE,
- 'orig' => $FILE,
- 'mime' => $MIME,
- 'download' => $DL,
- 'cache' => $CACHE,
- 'ext' => $EXT,
- 'width' => $WIDTH,
- 'height' => $HEIGHT,
- 'status' => $STATUS,
- 'statusmessage' => $STATUSMESSAGE,
- );
-
- // handle the file status
- $evt = new Doku_Event('FETCH_MEDIA_STATUS', $data);
- if ( $evt->advise_before() ) {
- // redirects
- if($data['status'] > 300 && $data['status'] <= 304){
- send_redirect($data['statusmessage']);
+if(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__).'/../../');
+define('DOKU_DISABLE_GZIP_OUTPUT', 1);
+require_once(DOKU_INC.'inc/init.php');
+session_write_close(); //close session
+
+// BEGIN main (if not testing)
+if(!defined('SIMPLE_TEST')) {
+ $mimetypes = getMimeTypes();
+
+ //get input
+ $MEDIA = stripctl(getID('media', false)); // no cleaning except control chars - maybe external
+ $CACHE = calc_cache($INPUT->str('cache'));
+ $WIDTH = $INPUT->int('w');
+ $HEIGHT = $INPUT->int('h');
+ $REV = & $INPUT->ref('rev');
+ //sanitize revision
+ $REV = preg_replace('/[^0-9]/', '', $REV);
+
+ list($EXT, $MIME, $DL) = mimetype($MEDIA, false);
+ if($EXT === false) {
+ $EXT = 'unknown';
+ $MIME = 'application/octet-stream';
+ $DL = true;
}
- // send any non 200 status
- if($data['status'] != 200){
- header('HTTP/1.0 ' . $data['status'] . ' ' . $data['statusmessage']);
+
+ // check for permissions, preconditions and cache external files
+ list($STATUS, $STATUSMESSAGE) = checkFileStatus($MEDIA, $FILE, $REV);
+
+ // prepare data for plugin events
+ $data = array(
+ 'media' => $MEDIA,
+ 'file' => $FILE,
+ 'orig' => $FILE,
+ 'mime' => $MIME,
+ 'download' => $DL,
+ 'cache' => $CACHE,
+ 'ext' => $EXT,
+ 'width' => $WIDTH,
+ 'height' => $HEIGHT,
+ 'status' => $STATUS,
+ 'statusmessage' => $STATUSMESSAGE,
+ );
+
+ // handle the file status
+ $evt = new Doku_Event('FETCH_MEDIA_STATUS', $data);
+ if($evt->advise_before()) {
+ // redirects
+ if($data['status'] > 300 && $data['status'] <= 304) {
+ send_redirect($data['statusmessage']);
+ }
+ // send any non 200 status
+ if($data['status'] != 200) {
+ http_status($data['status'], $data['statusmessage']);
+ }
+ // die on errors
+ if($data['status'] > 203) {
+ print $data['statusmessage'];
+ exit;
+ }
}
- // die on errors
- if($data['status'] > 203){
- print $data['statusmessage'];
- exit;
+ $evt->advise_after();
+ unset($evt);
+
+ //handle image resizing/cropping
+ if((substr($MIME, 0, 5) == 'image') && $WIDTH) {
+ if($HEIGHT) {
+ $data['file'] = $FILE = media_crop_image($data['file'], $EXT, $WIDTH, $HEIGHT);
+ } else {
+ $data['file'] = $FILE = media_resize_image($data['file'], $EXT, $WIDTH, $HEIGHT);
+ }
}
- }
- $evt->advise_after();
- unset($evt);
-
- //handle image resizing/cropping
- if((substr($MIME,0,5) == 'image') && $WIDTH){
- if($HEIGHT){
- $data['file'] = $FILE = media_crop_image($data['file'],$EXT,$WIDTH,$HEIGHT);
- }else{
- $data['file'] = $FILE = media_resize_image($data['file'],$EXT,$WIDTH,$HEIGHT);
+
+ // finally send the file to the client
+ $evt = new Doku_Event('MEDIA_SENDFILE', $data);
+ if($evt->advise_before()) {
+ sendFile($data['file'], $data['mime'], $data['download'], $data['cache']);
}
- }
+ // Do something after the download finished.
+ $evt->advise_after();
- // finally send the file to the client
- $evt = new Doku_Event('MEDIA_SENDFILE', $data);
- if ($evt->advise_before()) {
- sendFile($data['file'],$data['mime'],$data['download'],$data['cache']);
- }
- // Do something after the download finished.
- $evt->advise_after();
+}// END DO main
/* ------------------------------------------------------------------------ */
@@ -93,51 +96,50 @@
* @author Andreas Gohr <andi@splitbrain.org>
* @author Ben Coburn <btcoburn@silicodon.net>
*/
-function sendFile($file,$mime,$dl,$cache){
- global $conf;
- $fmtime = @filemtime($file);
- // send headers
- header("Content-Type: $mime");
- // smart http caching headers
- if ($cache==-1) {
- // cache
- // cachetime or one hour
- header('Expires: '.gmdate("D, d M Y H:i:s", time()+max($conf['cachetime'], 3600)).' GMT');
- header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.max($conf['cachetime'], 3600));
- header('Pragma: public');
- } else if ($cache>0) {
- // recache
- // remaining cachetime + 10 seconds so the newly recached media is used
- header('Expires: '.gmdate("D, d M Y H:i:s", $fmtime+$conf['cachetime']+10).' GMT');
- header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.max($fmtime-time()+$conf['cachetime']+10, 0));
- header('Pragma: public');
- } else if ($cache==0) {
- // nocache
- header('Cache-Control: must-revalidate, no-transform, post-check=0, pre-check=0');
- header('Pragma: public');
- }
- //send important headers first, script stops here if '304 Not Modified' response
- http_conditionalRequest($fmtime);
-
-
- //download or display?
- if($dl){
- header('Content-Disposition: attachment; filename="'.utf8_basename($file).'";');
- }else{
- header('Content-Disposition: inline; filename="'.utf8_basename($file).'";');
- }
-
- //use x-sendfile header to pass the delivery to compatible webservers
- if (http_sendfile($file)) exit;
-
- // send file contents
- $fp = @fopen($file,"rb");
- if($fp){
- http_rangeRequest($fp,filesize($file),$mime);
- }else{
- header("HTTP/1.0 500 Internal Server Error");
- print "Could not read $file - bad permissions?";
- }
+function sendFile($file, $mime, $dl, $cache) {
+ global $conf;
+ $fmtime = @filemtime($file);
+ // send headers
+ header("Content-Type: $mime");
+ // smart http caching headers
+ if($cache == -1) {
+ // cache
+ // cachetime or one hour
+ header('Expires: '.gmdate("D, d M Y H:i:s", time() + max($conf['cachetime'], 3600)).' GMT');
+ header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.max($conf['cachetime'], 3600));
+ header('Pragma: public');
+ } else if($cache > 0) {
+ // recache
+ // remaining cachetime + 10 seconds so the newly recached media is used
+ header('Expires: '.gmdate("D, d M Y H:i:s", $fmtime + $conf['cachetime'] + 10).' GMT');
+ header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.max($fmtime - time() + $conf['cachetime'] + 10, 0));
+ header('Pragma: public');
+ } else if($cache == 0) {
+ // nocache
+ header('Cache-Control: must-revalidate, no-transform, post-check=0, pre-check=0');
+ header('Pragma: public');
+ }
+ //send important headers first, script stops here if '304 Not Modified' response
+ http_conditionalRequest($fmtime);
+
+ //download or display?
+ if($dl) {
+ header('Content-Disposition: attachment; filename="'.utf8_basename($file).'";');
+ } else {
+ header('Content-Disposition: inline; filename="'.utf8_basename($file).'";');
+ }
+
+ //use x-sendfile header to pass the delivery to compatible webservers
+ if(http_sendfile($file)) exit;
+
+ // send file contents
+ $fp = @fopen($file, "rb");
+ if($fp) {
+ http_rangeRequest($fp, filesize($file), $mime);
+ } else {
+ http_status(500);
+ print "Could not read $file - bad permissions?";
+ }
}
/**
@@ -148,43 +150,43 @@ function sendFile($file,$mime,$dl,$cache){
*
* @author Gerry Weissbach <gerry.w@gammaproduction.de>
* @param $media reference to the media id
- * @param $file reference to the file variable
+ * @param $file reference to the file variable
* @returns array(STATUS, STATUSMESSAGE)
*/
-function checkFileStatus(&$media, &$file, $rev='') {
- global $MIME, $EXT, $CACHE, $INPUT;
-
- //media to local file
- if(preg_match('#^(https?)://#i',$media)){
- //check hash
- if(substr(md5(auth_cookiesalt().$media),0,6) !== $INPUT->str('hash')){
- return array( 412, 'Precondition Failed');
- }
- //handle external images
- if(strncmp($MIME,'image/',6) == 0) $file = media_get_from_URL($media,$EXT,$CACHE);
- if(!$file){
- //download failed - redirect to original URL
- return array( 302, $media );
- }
- }else{
- $media = cleanID($media);
- if(empty($media)){
- return array( 400, 'Bad request' );
+function checkFileStatus(&$media, &$file, $rev = '') {
+ global $MIME, $EXT, $CACHE, $INPUT;
+
+ //media to local file
+ if(preg_match('#^(https?)://#i', $media)) {
+ //check hash
+ if(substr(md5(auth_cookiesalt().$media), 0, 6) !== $INPUT->str('hash')) {
+ return array(412, 'Precondition Failed');
+ }
+ //handle external images
+ if(strncmp($MIME, 'image/', 6) == 0) $file = media_get_from_URL($media, $EXT, $CACHE);
+ if(!$file) {
+ //download failed - redirect to original URL
+ return array(302, $media);
+ }
+ } else {
+ $media = cleanID($media);
+ if(empty($media)) {
+ return array(400, 'Bad request');
+ }
+
+ //check permissions (namespace only)
+ if(auth_quickaclcheck(getNS($media).':X') < AUTH_READ) {
+ return array(403, 'Forbidden');
+ }
+ $file = mediaFN($media, $rev);
}
- //check permissions (namespace only)
- if(auth_quickaclcheck(getNS($media).':X') < AUTH_READ){
- return array( 403, 'Forbidden' );
+ //check file existance
+ if(!@file_exists($file)) {
+ return array(404, 'Not Found');
}
- $file = mediaFN($media, $rev);
- }
-
- //check file existance
- if(!@file_exists($file)){
- return array( 404, 'Not Found' );
- }
- return array(200, null);
+ return array(200, null);
}
/**
@@ -194,12 +196,12 @@ function checkFileStatus(&$media, &$file, $rev='') {
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
-function calc_cache($cache){
- global $conf;
+function calc_cache($cache) {
+ global $conf;
- if(strtolower($cache) == 'nocache') return 0; //never cache
- if(strtolower($cache) == 'recache') return $conf['cachetime']; //use standard cache
- return -1; //cache endless
+ if(strtolower($cache) == 'nocache') return 0; //never cache
+ if(strtolower($cache) == 'recache') return $conf['cachetime']; //use standard cache
+ return -1; //cache endless
}
//Setup VIM: ex: et ts=2 :
diff --git a/lib/exe/js.php b/lib/exe/js.php
index 41d3e735c..4ff48133e 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -62,7 +62,7 @@ function js_out(){
DOKU_INC.'lib/scripts/locktimer.js',
DOKU_INC.'lib/scripts/linkwiz.js',
DOKU_INC.'lib/scripts/media.js',
- DOKU_INC.'lib/scripts/compatibility.js',
+# deprecated DOKU_INC.'lib/scripts/compatibility.js',
# disabled for FS#1958 DOKU_INC.'lib/scripts/hotkeys.js',
DOKU_INC.'lib/scripts/behaviour.js',
DOKU_INC.'lib/scripts/page.js',
diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php
index 04dd178cc..53d438321 100644
--- a/lib/exe/mediamanager.php
+++ b/lib/exe/mediamanager.php
@@ -36,19 +36,16 @@
// do not display the manager if user does not have read access
if($AUTH < AUTH_READ && !$fullscreen) {
- header('HTTP/1.0 403 Forbidden');
+ http_status(403);
die($lang['accessdenied']);
}
- // create the given namespace (just for beautification)
- if($AUTH >= AUTH_UPLOAD) { io_createNamespace("$NS:xxx", 'media'); }
-
// handle flash upload
if(isset($_FILES['Filedata'])){
$_FILES['upload'] =& $_FILES['Filedata'];
$JUMPTO = media_upload($NS,$AUTH);
if($JUMPTO == false){
- header("HTTP/1.0 400 Bad Request");
+ http_status(400);
echo 'Upload failed';
}
echo 'ok';
diff --git a/lib/exe/xmlrpc.php b/lib/exe/xmlrpc.php
index 5e6c197d0..c09daa17c 100644
--- a/lib/exe/xmlrpc.php
+++ b/lib/exe/xmlrpc.php
@@ -29,10 +29,10 @@ class dokuwiki_xmlrpc_server extends IXR_Server {
return $result;
} catch (RemoteAccessDeniedException $e) {
if (!isset($_SERVER['REMOTE_USER'])) {
- header('HTTP/1.1 401 Unauthorized');
+ http_status(401);
return new IXR_Error(-32603, "server error. not authorized to call method $methodname");
} else {
- header('HTTP/1.1 403 Forbidden');
+ http_status(403);
return new IXR_Error(-32604, "server error. forbidden to call the method $methodname");
}
} catch (RemoteException $e) {
diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js
index 0ba91cdc9..c3763dc8d 100644
--- a/lib/plugins/acl/script.js
+++ b/lib/plugins/acl/script.js
@@ -117,11 +117,3 @@ var dw_acl = {
};
jQuery(dw_acl.init);
-
-var acl = {
- init: DEPRECATED_WRAP(dw_acl.init, dw_acl),
- userselhandler: DEPRECATED_WRAP(dw_acl.userselhandler, dw_acl),
- loadinfo: DEPRECATED_WRAP(dw_acl.loadinfo, dw_acl),
- parseatt: DEPRECATED_WRAP(dw_acl.parseatt, dw_acl),
- treehandler: DEPRECATED_WRAP(dw_acl.treehandler, dw_acl)
-};
diff --git a/lib/plugins/auth.php b/lib/plugins/auth.php
index 42dbf1859..c14a04dfb 100644
--- a/lib/plugins/auth.php
+++ b/lib/plugins/auth.php
@@ -434,6 +434,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin {
if(isset($conf['auth'][$plugin])) $oldconf = (array) $conf['auth'][$plugin];
$conf['plugin'][$plugin] = array_merge($default, $oldconf, $conf['plugin'][$plugin]);
+ $this->conf =& $conf['plugin'][$plugin];
$this->configloaded = true;
}
}
diff --git a/lib/plugins/config/settings/config.class.php b/lib/plugins/config/settings/config.class.php
index a3cfae9f8..4a84d6dc8 100644
--- a/lib/plugins/config/settings/config.class.php
+++ b/lib/plugins/config/settings/config.class.php
@@ -84,7 +84,7 @@ if (!class_exists('configuration')) {
array_shift($param);
} else {
$class = 'setting_undefined';
- $param = NULL;
+ $param = null;
}
if (!in_array($class, $no_default_check) && !isset($default[$key])) {
@@ -358,13 +358,13 @@ if (!class_exists('setting')) {
class setting {
var $_key = '';
- var $_default = NULL;
- var $_local = NULL;
- var $_protected = NULL;
+ var $_default = null;
+ var $_local = null;
+ var $_protected = null;
var $_pattern = '';
var $_error = false; // only used by those classes which error check
- var $_input = NULL; // only used by those classes which error check
+ var $_input = null; // only used by those classes which error check
var $_cautionList = array(
'basedir' => 'danger', 'baseurl' => 'danger', 'savedir' => 'danger', 'cookiedir' => 'danger', 'useacl' => 'danger', 'authtype' => 'danger', 'superuser' => 'danger', 'userewrite' => 'danger',
@@ -372,7 +372,7 @@ if (!class_exists('setting')) {
'allowdebug' => 'security', 'htmlok' => 'security', 'phpok' => 'security', 'iexssprotect' => 'security', 'xmlrpc' => 'security', 'fullpath' => 'security'
);
- function setting($key, $params=NULL) {
+ function setting($key, $params=null) {
$this->_key = $key;
if (is_array($params)) {
@@ -661,6 +661,7 @@ if (!class_exists('setting_email')) {
class setting_email extends setting_string {
var $_pattern = SETTING_EMAIL_PATTERN; // no longer required, retained for backward compatibility - FIXME, may not be necessary
var $_multiple = false;
+ var $_placeholders = false;
/**
* update setting with user provided value $input
@@ -674,15 +675,36 @@ if (!class_exists('setting_email')) {
$value = is_null($this->_local) ? $this->_default : $this->_local;
if ($value == $input) return false;
+ if($input === ''){
+ $this->_local = $input;
+ return true;
+ }
+ $mail = $input;
+
+ if($this->_placeholders){
+ // replace variables with pseudo values
+ $mail = str_replace('@USER@','joe',$mail);
+ $mail = str_replace('@NAME@','Joe Schmoe',$mail);
+ $mail = str_replace('@MAIL@','joe@example.com',$mail);
+ }
+ // multiple mail addresses?
if ($this->_multiple) {
- $mails = array_filter(array_map('trim', explode(',', $input)));
+ $mails = array_filter(array_map('trim', explode(',', $mail)));
} else {
- $mails = array($input);
+ $mails = array($mail);
}
+ // check them all
foreach ($mails as $mail) {
- if (!mail_isvalid($mail)) {
+ // only check the address part
+ if(preg_match('#(.*?)<(.*?)>#', $mail, $matches)){
+ $addr = $matches[2];
+ }else{
+ $addr = $mail;
+ }
+
+ if (!mail_isvalid($addr)) {
$this->_error = true;
$this->_input = $input;
return false;
@@ -695,46 +717,15 @@ if (!class_exists('setting_email')) {
}
}
+/**
+ * @deprecated 2013-02-16
+ */
if (!class_exists('setting_richemail')) {
class setting_richemail extends setting_email {
-
- /**
- * update setting with user provided value $input
- * if value fails error check, save it
- *
- * @return boolean true if changed, false otherwise (incl. on error)
- */
- function update($input) {
- if (is_null($input)) return false;
- if ($this->is_protected()) return false;
-
- $value = is_null($this->_local) ? $this->_default : $this->_local;
- if ($value == $input) return false;
-
- // replace variables with pseudo values
- $test = $input;
- $test = str_replace('@USER@','joe',$test);
- $test = str_replace('@NAME@','Joe Schmoe',$test);
- $test = str_replace('@MAIL@','joe@example.com',$test);
-
- // now only check the address part
- if(preg_match('#(.*?)<(.*?)>#',$test,$matches)){
- $text = trim($matches[1]);
- $addr = $matches[2];
- }else{
- $addr = $test;
- }
-
- if ($test !== '' && !mail_isvalid($addr)) {
- $this->_error = true;
- $this->_input = $input;
- return false;
- }
-
- $this->_local = $input;
- return true;
- }
-
+ function update($input) {
+ $this->_placeholders = true;
+ return parent::update($input);
+ }
}
}
diff --git a/lib/plugins/config/settings/config.metadata.php b/lib/plugins/config/settings/config.metadata.php
index 585015085..bdbc4311f 100644
--- a/lib/plugins/config/settings/config.metadata.php
+++ b/lib/plugins/config/settings/config.metadata.php
@@ -20,9 +20,7 @@
* 'numericopt' - like above, but accepts empty values
* 'onoff' - checkbox input, setting output 0|1
* 'multichoice' - select input (single choice), setting output with quotes, required _choices parameter
- * 'email' - text input, input must conform to email address format, setting output in quotes
- * 'richemail' - text input, input must conform to email address format but accepts variables and
- * emails with a real name prepended (when email address is given in <>)
+ * 'email' - text input, input must conform to email address format
* 'password' - password input, minimal input validation, setting output text in quotes, maybe encoded
* according to the _code parameter
* 'dirchoice' - as multichoice, selection choices based on folders found at location specified in _dir
@@ -129,7 +127,7 @@ $meta['_authentication'] = array('fieldset');
$meta['useacl'] = array('onoff');
$meta['autopasswd'] = array('onoff');
$meta['authtype'] = array('authtype');
-$meta['passcrypt'] = array('multichoice','_choices' => array('smd5','md5','apr1','sha1','ssha','lsmd5','crypt','mysql','my411','kmd5','pmd5','hmd5','mediawiki','bcrypt','sha512'));
+$meta['passcrypt'] = array('multichoice','_choices' => array('smd5','md5','apr1','sha1','ssha','lsmd5','crypt','mysql','my411','kmd5','pmd5','hmd5','mediawiki','bcrypt','djangomd5','djangosha1','sha512'));
$meta['defaultgroup']= array('string');
$meta['superuser'] = array('string');
$meta['manager'] = array('string');
@@ -177,8 +175,8 @@ $meta['_notifications'] = array('fieldset');
$meta['subscribers'] = array('onoff');
$meta['subscribe_time'] = array('numeric');
$meta['notify'] = array('email', '_multiple' => true);
-$meta['registernotify'] = array('email');
-$meta['mailfrom'] = array('richemail');
+$meta['registernotify'] = array('email', '_multiple' => true);
+$meta['mailfrom'] = array('email', '_placeholders' => true);
$meta['mailprefix'] = array('string');
$meta['htmlmail'] = array('onoff');
diff --git a/lib/plugins/config/style.css b/lib/plugins/config/style.css
index 397328937..054021ed8 100644
--- a/lib/plugins/config/style.css
+++ b/lib/plugins/config/style.css
@@ -154,15 +154,6 @@
}
-/* IE6 correction */
-* html #config__manager .selection label {
- padding-top: 2px;
-}
-
-#config__manager .selection input.checkbox {
- padding-left: 0.7em;
-}
-
#config__manager .other {
clear: both;
padding-top: 0.5em;
diff --git a/lib/plugins/info/plugin.info.txt b/lib/plugins/info/plugin.info.txt
index 5c7d583c0..053743639 100644
--- a/lib/plugins/info/plugin.info.txt
+++ b/lib/plugins/info/plugin.info.txt
@@ -1,7 +1,7 @@
base info
author Andreas Gohr
email andi@splitbrain.org
-date 2012-02-04
+date 2013-02-16
name Info Plugin
desc Displays information about various DokuWiki internals
url http://dokuwiki.org/plugin:info
diff --git a/lib/plugins/info/syntax.php b/lib/plugins/info/syntax.php
index d813aa23a..97b28076b 100644
--- a/lib/plugins/info/syntax.php
+++ b/lib/plugins/info/syntax.php
@@ -60,9 +60,6 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
if($format == 'xhtml'){
//handle various info stuff
switch ($data[0]){
- case 'version':
- $renderer->doc .= getVersion();
- break;
case 'syntaxmodes':
$renderer->doc .= $this->_syntaxmodes_xhtml();
break;
diff --git a/lib/plugins/plugin/lang/ar/lang.php b/lib/plugins/plugin/lang/ar/lang.php
index 8327e5ce3..a1a778131 100644
--- a/lib/plugins/plugin/lang/ar/lang.php
+++ b/lib/plugins/plugin/lang/ar/lang.php
@@ -50,4 +50,4 @@ $lang['enabled'] = 'الاضافة %s فُعلت. ';
$lang['notenabled'] = 'تعذر تفعيل الاضافة %s، تحقق من اذونات الملف.';
$lang['disabled'] = 'عُطلت الإضافة %s.';
$lang['notdisabled'] = 'تعذر تعطيل الإضافة %s، تحقق من اذونات الملف.';
-$lang['packageinstalled'] = 'حزمة الإضافة (%d plugin(s): %Xs) ثبتت بنجاج.';
+$lang['packageinstalled'] = 'حزمة الإضافة (%d plugin(s): %s) ثبتت بنجاج.';
diff --git a/lib/plugins/plugin/lang/hi/lang.php b/lib/plugins/plugin/lang/hi/lang.php
index ab29c6550..67b177256 100644
--- a/lib/plugins/plugin/lang/hi/lang.php
+++ b/lib/plugins/plugin/lang/hi/lang.php
@@ -6,7 +6,6 @@
* @author yndesai@gmail.com
*/
$lang['unknown'] = 'अज्ञात';
-$lang['deleted'] = 'मिटाया हुआ';
$lang['date'] = 'दिनांक:';
$lang['author'] = 'लेखक:';
$lang['error'] = 'अज्ञात त्रुटि हुइ';
diff --git a/lib/plugins/plugin/lang/pl/lang.php b/lib/plugins/plugin/lang/pl/lang.php
index 1d3bbbc03..faaa69630 100644
--- a/lib/plugins/plugin/lang/pl/lang.php
+++ b/lib/plugins/plugin/lang/pl/lang.php
@@ -60,4 +60,4 @@ $lang['enabled'] = 'Wtyczka %s włączona.';
$lang['notenabled'] = 'Nie udało się uruchomić wtyczki %s, sprawdź uprawnienia dostępu do plików.';
$lang['disabled'] = 'Wtyczka %s wyłączona.';
$lang['notdisabled'] = 'Nie udało się wyłączyć wtyczki %s, sprawdź uprawnienia dostępu do plików.';
-$lang['packageinstalled'] = 'Pakiet wtyczek (%d wtyczki:% s) zainstalowany pomyślnie.';
+$lang['packageinstalled'] = 'Pakiet wtyczek (%d wtyczki: %s) zainstalowany pomyślnie.';
diff --git a/lib/plugins/plugin/lang/zh-tw/lang.php b/lib/plugins/plugin/lang/zh-tw/lang.php
index 7b38a02c8..56149e79e 100644
--- a/lib/plugins/plugin/lang/zh-tw/lang.php
+++ b/lib/plugins/plugin/lang/zh-tw/lang.php
@@ -56,4 +56,4 @@ $lang['enabled'] = '附加元件 %s 已啟用。';
$lang['notenabled'] = '附加元件 %s 無法啟用,請檢查檔案權限。';
$lang['disabled'] = '附加元件 %s 已停用。';
$lang['notdisabled'] = '附加元件 %s 無法停用,請檢查檔案權限。';
-$lang['packageinstalled'] = '附加元件 (%d 附加元件%s: %s) 已安裝好。';
+$lang['packageinstalled'] = '附加元件 (%d 附加元件: %s) 已安裝好。';
diff --git a/lib/plugins/usermanager/lang/ca-valencia/lang.php b/lib/plugins/usermanager/lang/ca-valencia/lang.php
index 5b0c628ed..c39c2f9b3 100644
--- a/lib/plugins/usermanager/lang/ca-valencia/lang.php
+++ b/lib/plugins/usermanager/lang/ca-valencia/lang.php
@@ -33,7 +33,7 @@ $lang['delete_ok'] = '%d usuaris borrats';
$lang['delete_fail'] = 'Erro borrant %d.';
$lang['update_ok'] = 'Usuari actualisat correctament';
$lang['update_fail'] = 'Erro actualisant usuari';
-$lang['update_exists'] = 'Erro canviant el nom de l\'usuari, el nom d\'usuari que ha donat ya existix (els demés canvis s\'aplicaran).';
+$lang['update_exists'] = 'Erro canviant el nom de l\'usuari (%s), el nom d\'usuari que ha donat ya existix (els demés canvis s\'aplicaran).';
$lang['start'] = 'primera';
$lang['prev'] = 'anterior';
$lang['next'] = 'següent';
diff --git a/lib/scripts/linkwiz.js b/lib/scripts/linkwiz.js
index bb04828b4..c55650d68 100644
--- a/lib/scripts/linkwiz.js
+++ b/lib/scripts/linkwiz.js
@@ -50,6 +50,9 @@ var dw_linkwiz = {
jQuery(dw_linkwiz.result).css('position', 'relative');
dw_linkwiz.$entry = jQuery('#link__wiz_entry');
+ if(JSINFO.namespace){
+ dw_linkwiz.$entry.val(JSINFO.namespace+':');
+ }
// attach event handlers
jQuery('#link__wiz .ui-dialog-titlebar-close').click(dw_linkwiz.hide);
@@ -102,7 +105,7 @@ var dw_linkwiz = {
/**
* Get one of the results by index
*
- * @param int result div to return
+ * @param num int result div to return
* @returns DOMObject or null
*/
getResult: function(num){
@@ -113,7 +116,7 @@ var dw_linkwiz = {
/**
* Get one of the results by index
*
- * @param int result div to return
+ * @param num int result div to return
* @returns jQuery object
*/
$getResult: function(num) {
diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js
index 0c3609ada..e5cc73b49 100644
--- a/lib/scripts/qsearch.js
+++ b/lib/scripts/qsearch.js
@@ -12,6 +12,7 @@ var dw_qsearch = {
$inObj: null,
$outObj: null,
timer: null,
+ curRequest: null,
/**
* initialize the quick search
@@ -35,12 +36,16 @@ var dw_qsearch = {
// attach eventhandler to search field
do_qsearch = function () {
+ // abort any previous request
+ if (dw_qsearch.curRequest != null) {
+ dw_qsearch.curRequest.abort();
+ }
var value = dw_qsearch.$inObj.val();
if (value === '') {
dw_qsearch.clear_results();
return;
}
- jQuery.post(
+ dw_qsearch.curRequest = jQuery.post(
DOKU_BASE + 'lib/exe/ajax.php',
{
call: 'qsearch',
@@ -84,6 +89,8 @@ var dw_qsearch = {
onCompletion: function(data) {
var max, $links, too_big;
+ dw_qsearch.curRequest = null;
+
if (data === '') {
dw_qsearch.clear_results();
return;
diff --git a/lib/tpl/dokuwiki/css/_edit.css b/lib/tpl/dokuwiki/css/_edit.css
index 0c66c75b7..92ce62126 100644
--- a/lib/tpl/dokuwiki/css/_edit.css
+++ b/lib/tpl/dokuwiki/css/_edit.css
@@ -13,7 +13,6 @@
.dokuwiki div.toolbar {
margin-bottom: .5em;
- overflow: hidden;
}
#draft__status {
float: right;
diff --git a/lib/tpl/dokuwiki/script.js b/lib/tpl/dokuwiki/script.js
index 3ed8dbabe..375500f78 100644
--- a/lib/tpl/dokuwiki/script.js
+++ b/lib/tpl/dokuwiki/script.js
@@ -1,11 +1,10 @@
/**
* We handle several device classes based on browser width.
- * see http://twitter.github.com/bootstrap/scaffolding.html#responsive
*
- * - desktop: 980+
- * - mobile: < 980
- * - tablet 481 - 979 (ostensibly for tablets in portrait mode)
- * - phone <= 480
+ * - desktop: > __tablet_width__ (as set in style.ini)
+ * - mobile:
+ * - tablet <= __tablet_width__
+ * - phone <= __phone_width__
*/
var device_class = ''; // not yet known
var device_classes = 'desktop mobile tablet phone';