diff options
Diffstat (limited to 'lib')
32 files changed, 285 insertions, 290 deletions
diff --git a/lib/exe/indexer.php b/lib/exe/indexer.php index eec8c968c..0042e92d2 100644 --- a/lib/exe/indexer.php +++ b/lib/exe/indexer.php @@ -149,14 +149,20 @@ function runIndexer(){ } // try to aquire a lock + $run = 0; $lock = $conf['lockdir'].'/_indexer.lock'; while(!@mkdir($lock,$conf['dmode'])){ usleep(50); - if(time()-@filemtime($lock) > 60*5){ + if(is_dir($lock) && time()-@filemtime($lock) > 60*5){ // looks like a stale lock - remove it - @rmdir($lock); - print "runIndexer(): stale lock removed".NL; - }else{ + if (!@rmdir($lock)) { + print "runIndexer(): removing the stale lock failed".NL; + return false; + } else { + print "runIndexer(): stale lock removed".NL; + } + }elseif($run++ == 1000){ + // we waited 5 seconds for that lock print "runIndexer(): indexer locked".NL; return false; } diff --git a/lib/exe/js.php b/lib/exe/js.php index 117021308..645ab3cc4 100644 --- a/lib/exe/js.php +++ b/lib/exe/js.php @@ -48,6 +48,7 @@ function js_out(){ DOKU_INC.'lib/scripts/textselection.js', DOKU_INC.'lib/scripts/toolbar.js', DOKU_INC.'lib/scripts/edit.js', + DOKU_INC.'lib/scripts/locktimer.js', DOKU_INC.'lib/scripts/linkwiz.js', DOKU_INC.'lib/scripts/media.js', DOKU_INC.'lib/scripts/subscriptions.js', diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php index c79a25c08..6f2add2be 100644 --- a/lib/exe/mediamanager.php +++ b/lib/exe/mediamanager.php @@ -82,18 +82,24 @@ // handle deletion if($DEL) { - $INUSE = media_inuse($DEL); - if(!$INUSE) { - if(media_delete($DEL,$AUTH)) { - msg(sprintf($lang['deletesucc'],noNS($DEL)),1); - } else { - msg(sprintf($lang['deletefail'],noNS($DEL)),-1); + $res = 0; + if(checkSecurityToken()) { + $res = media_delete($DEL,$AUTH); + } + if ($res & DOKU_MEDIA_DELETED) { + $msg = sprintf($lang['deletesucc'], noNS($DEL)); + if ($res & DOKU_MEDIA_EMPTY_NS) { + // current namespace was removed. redirecting to root ns passing msg along + send_redirect(DOKU_URL.'lib/exe/mediamanager.php?msg1='. + rawurlencode($msg)); } - } else { + msg($msg,1); + } elseif ($res & DOKU_MEDIA_INUSE) { if(!$conf['refshow']) { - unset($INUSE); msg(sprintf($lang['mediainuse'],noNS($DEL)),0); } + } else { + msg(sprintf($lang['deletefail'],noNS($DEL)),-1); } } diff --git a/lib/exe/xmlrpc.php b/lib/exe/xmlrpc.php index d40e338b2..9749a2e16 100644 --- a/lib/exe/xmlrpc.php +++ b/lib/exe/xmlrpc.php @@ -605,64 +605,26 @@ class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer { */ function putAttachment($id, $file, $params) { $id = cleanID($id); - global $conf; - global $lang; - $auth = auth_quickaclcheck(getNS($id).':*'); - if($auth >= AUTH_UPLOAD) { - if(!isset($id)) { - return new IXR_ERROR(1, 'Filename not given.'); - } - $ftmp = $conf['tmpdir'] . '/' . md5($id.clientIP()); - - // save temporary file - @unlink($ftmp); - $buff = base64_decode($file); - io_saveFile($ftmp, $buff); + if(!isset($id)) { + return new IXR_ERROR(1, 'Filename not given.'); + } - // get filename - list($iext, $imime,$dl) = mimetype($id); - $id = cleanID($id); - $fn = mediaFN($id); - - // get filetype regexp - $types = array_keys(getMimeTypes()); - $types = array_map(create_function('$q','return preg_quote($q,"/");'),$types); - $regex = join('|',$types); - - // because a temp file was created already - if(preg_match('/\.('.$regex.')$/i',$fn)) { - //check for overwrite - $overwrite = @file_exists($fn); - if($overwrite && (!$params['ow'] || $auth < AUTH_DELETE)) { - return new IXR_ERROR(1, $lang['uploadexist'].'1'); - } - // check for valid content - $ok = media_contentcheck($ftmp, $imime); - if($ok == -1) { - return new IXR_ERROR(1, sprintf($lang['uploadexist'].'2', ".$iext")); - } elseif($ok == -2) { - return new IXR_ERROR(1, $lang['uploadspam']); - } elseif($ok == -3) { - return new IXR_ERROR(1, $lang['uploadxss']); - } + global $conf; - // prepare event data - $data[0] = $ftmp; - $data[1] = $fn; - $data[2] = $id; - $data[3] = $imime; - $data[4] = $overwrite; + $ftmp = $conf['tmpdir'] . '/' . md5($id.clientIP()); - // trigger event - return trigger_event('MEDIA_UPLOAD_FINISH', $data, array($this, '_media_upload_action'), true); + // save temporary file + @unlink($ftmp); + $buff = base64_decode($file); + io_saveFile($ftmp, $buff); - } else { - return new IXR_ERROR(1, $lang['uploadwrong']); - } + $res = media_save(array('name' => $ftmp), $id, $params['ow'], $auth, 'rename'); + if (is_array($res)) { + return new IXR_ERROR(-$res[1], $res[0]); } else { - return new IXR_ERROR(1, "You don't have permissions to upload files."); + return $res; } } @@ -674,55 +636,15 @@ class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer { function deleteAttachment($id){ $id = cleanID($id); $auth = auth_quickaclcheck(getNS($id).':*'); - if($auth < AUTH_DELETE) return new IXR_ERROR(1, "You don't have permissions to delete files."); - global $conf; - global $lang; - - // check for references if needed - $mediareferences = array(); - if($conf['refcheck']){ - $mediareferences = ft_mediause($id,$conf['refshow']); - } - - if(!count($mediareferences)){ - $file = mediaFN($id); - if(@unlink($file)){ - addMediaLogEntry(time(), $id, DOKU_CHANGE_TYPE_DELETE); - io_sweepNS($id,'mediadir'); - return 0; - } - //something went wrong - return new IXR_ERROR(1, 'Could not delete file'); - } else { + $res = media_delete($id, $auth); + if ($res & DOKU_MEDIA_DELETED) { + return 0; + } elseif ($res & DOKU_MEDIA_NOT_AUTH) { + return new IXR_ERROR(1, "You don't have permissions to delete files."); + } elseif ($res & DOKU_MEDIA_INUSE) { return new IXR_ERROR(1, 'File is still referenced'); - } - } - - /** - * Moves the temporary file to its final destination. - * - * Michael Klier <chi@chimeric.de> - */ - function _media_upload_action($data) { - global $conf; - - if(is_array($data) && count($data)===5) { - io_createNamespace($data[2], 'media'); - if(rename($data[0], $data[1])) { - chmod($data[1], $conf['fmode']); - media_notify($data[2], $data[1], $data[3]); - // add a log entry to the media changelog - if ($data[4]) { - addMediaLogEntry(time(), $data[2], DOKU_CHANGE_TYPE_EDIT); - } else { - addMediaLogEntry(time(), $data[2], DOKU_CHANGE_TYPE_CREATE); - } - return $data[2]; - } else { - return new IXR_ERROR(1, 'Upload failed.'); - } } else { - return new IXR_ERROR(1, 'Upload failed.'); + return new IXR_ERROR(1, 'Could not delete file'); } } diff --git a/lib/plugins/acl/lang/bg/lang.php b/lib/plugins/acl/lang/bg/lang.php index 9facd4259..4efadfbba 100644 --- a/lib/plugins/acl/lang/bg/lang.php +++ b/lib/plugins/acl/lang/bg/lang.php @@ -5,6 +5,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author Nikolay Vladimirov <nikolay@vladimiroff.com> * @author Viktor Usunov <usun0v@mail.bg> + * @author Kiril Velikov neohidra@gmail.com */ $lang['admin_acl'] = 'Управление на списъците за достъп'; $lang['acl_group'] = 'Група'; diff --git a/lib/plugins/acl/lang/fr/lang.php b/lib/plugins/acl/lang/fr/lang.php index 63e529aab..36323a51f 100644 --- a/lib/plugins/acl/lang/fr/lang.php +++ b/lib/plugins/acl/lang/fr/lang.php @@ -20,6 +20,7 @@ * @author Philippe Bajoit <philippe.bajoit@gmail.com> * @author Florian Gaub <floriang@floriang.net> * @author Samuel Dorsaz samuel.dorsaz@novelion.net + * @author Johan Guilbaud <guilbaud.johan@gmail.com> */ $lang['admin_acl'] = 'Gestion de la liste des contrôles d\'accès (ACL)'; $lang['acl_group'] = 'Groupe'; diff --git a/lib/plugins/config/lang/bg/intro.txt b/lib/plugins/config/lang/bg/intro.txt index 8723a77a4..fc455981e 100644 --- a/lib/plugins/config/lang/bg/intro.txt +++ b/lib/plugins/config/lang/bg/intro.txt @@ -1,7 +1,7 @@ ====== Управление на настройките ====== -Използвайте тази страница за да управлявате настройките на вашета Dokuwiki инсталация. За отделните настройки вижте [[doku>config]]. За повече подробности за тази приставка вижте [[doku>plugin:config]]. +От страница можете да управлявате настройките на вашето Dokuwiki. За отделните настройки вижте [[doku>config]]. За повече информация относно тази приставка вижте [[doku>plugin:config]]. -Настройките показани със светло червен фон за защитени и не могат да се променят с тази приставка. Настройките показани със син фон са стандартните стойности и настройките с бял фон са били настроени локално за тази конкретна инсталация. Както сините, така и белите настройки могат да се променят. +Настройките изобразени със светло червен фон за защитени и не могат да бъдат променяни с тази приставка. Настройките показани със син фон са стандартни стойности, а настройките с бял фон са били настроени локално за тази конкретна инсталация. Можете да променяте както сините, така и белите настройки. -Не забравяйте да натиснете бутона **ЗАПИС** преди да напуснете страницата, иначе промените ви ще бъдат загубени. +Не забравяйте да натиснете бутона **ЗАПИС** преди да напуснете страницата, в противен случай промените няма да бъдат приложени. diff --git a/lib/plugins/config/lang/bg/lang.php b/lib/plugins/config/lang/bg/lang.php index 855f0b2c2..8b32f182c 100644 --- a/lib/plugins/config/lang/bg/lang.php +++ b/lib/plugins/config/lang/bg/lang.php @@ -5,6 +5,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author Nikolay Vladimirov <nikolay@vladimiroff.com> * @author Viktor Usunov <usun0v@mail.bg> + * @author Kiril Velikov neohidra@gmail.com */ $lang['menu'] = 'Настройки'; $lang['error'] = 'Невъзможно е обновяването на настройките, поради невалидна стойност, моля, прегледайте промените си и пробвайте отново. @@ -66,7 +67,7 @@ $lang['allowdebug'] = 'Пускане на debug <b>изключет $lang['usewordblock'] = 'Блокиране на спам базирано на списък от думи'; $lang['indexdelay'] = 'Забавяне преди индексиране(секунди)'; $lang['relnofollow'] = 'Използване на rel="nofollow" за външни връзки'; -$lang['mailguard'] = 'Промяна на адреса на електронната поща във форма непозволяваща пращането на спам'; +$lang['mailguard'] = 'Промяна на адресите на ел. поща (във форма непозволяваща пращането на SPAM)'; $lang['iexssprotect'] = 'Проверяване на качените файлове за възможно зловреден JavaScript и HTML код'; $lang['showuseras'] = 'Какво да се показва на дисплея за потребителя, който последно е променил тази страница'; $lang['useacl'] = 'Използване на списъци за достъп'; @@ -86,65 +87,66 @@ $lang['sneaky_index'] = 'По подразбиране DokuWiki ще п $lang['auth_security_timeout'] = 'Изчакване при вписване преди Timeout (в секунди)'; $lang['securecookie'] = 'Да се изпращат ли бисквитки, посочени чрез HTTPS, само чрез HTTPS от браузъра? Забранете тази опция, когато SSL се използва само за вписване в системата, а четенето е възможно и без SSL. '; -$lang['xmlrpc'] = 'Включи/изключи XML-RPC интерфейса'; +$lang['xmlrpc'] = 'Включване/Изключване на XML-RPC интерфейса.'; $lang['xmlrpcuser'] = 'Ограничаване на XML-RPC достъп до дадени тук и отделени със запетая групи или потребители. Оставете празни да даде достъп до всички.'; $lang['updatecheck'] = 'Проверка за нови версии и предупреждения за сигурност? Dokiwiki трябва да може да се свърже със splitbrain.org за тази функционалност.'; $lang['userewrite'] = 'Използване на валидни URL'; -$lang['useslash'] = 'Използване на наклонена черта за разделител на именнипространсвта в URL'; +$lang['useslash'] = 'Ползване на наклонена черта за разделител на именните пространства в URL'; $lang['usedraft'] = 'Автоматично запазване на чернова при редактиране'; $lang['sepchar'] = 'Разделител между думите в имената на страници'; $lang['canonical'] = 'Използване на уеднаквени URL'; +$lang['fnencode'] = 'Метод за кодиране на не-ASCII именуваните файлове.'; $lang['autoplural'] = 'Проверка за множествено число в препратките'; $lang['compression'] = 'Метод за компресия на attic файлове'; $lang['cachetime'] = 'Максимална възраст на кеша (сек)'; -$lang['locktime'] = 'Максимална възраст на заключващите файлове (сек)'; -$lang['fetchsize'] = 'Максимален размер (байтове), който fetch.php може да дърпа'; -$lang['notify'] = 'Пращане на съобщения за промени на тази e-поща'; -$lang['registernotify'] = 'Пращане информация на нови потребители на тази е-поща'; -$lang['mailfrom'] = 'Адрес на е-поща, който да се използва за пращане на автоматичната поща'; -$lang['gzip_output'] = 'Използване gzip Кодиране на съдържанието(Content-Encoding) за xhtml'; +$lang['locktime'] = 'Максимална възраст на заключените файлове (сек)'; +$lang['fetchsize'] = 'Максимален размер (байтове), който fetch.php може да сваля'; +$lang['notify'] = 'Пращане на съобщения за промени на тази eл. поща'; +$lang['registernotify'] = 'Пращане информация за нови потребители на тази ел. поща'; +$lang['mailfrom'] = 'Ел. поща, която да се ползва за автоматично изпращане на ел. писма'; +$lang['gzip_output'] = 'Кодиране на съдържанието с gzip за xhtml'; $lang['gdlib'] = 'Версия на GD Lib'; $lang['im_convert'] = 'Път до инструмента за трансформация на ImageMagick'; $lang['jpg_quality'] = 'Kачество на JPG компресията (0-100)'; -$lang['subscribers'] = 'Поддръжка за абониране към страница'; -$lang['compress'] = 'Компактен CSS и javascript изход'; -$lang['hidepages'] = 'Скриване на съвпадащи имена на страници(regular expressions)'; +$lang['subscribers'] = 'Включване на поддръжката за абониране към страници'; +$lang['compress'] = 'Компактен CSS и javascript изглед'; +$lang['hidepages'] = 'Скриване на съвпадащите страници (regular expressions)'; $lang['send404'] = 'Пращане на "HTTP 404/Page Not Found" за несъществуващи страници'; $lang['sitemap'] = 'Генериране на Google sitemap (дни)'; -$lang['broken_iua'] = 'Отметнете, ако ignore_user_abort функцията не работи, търсенето може да не се извършва правилно.Известно е, че комбинацията IIS+PHP/CGI е лоша. Вижте <a href="http://bugs.splitbrain.org/?do=details&task_id=852">Грешка 852</a> за повече информация.'; -$lang['xsendfile'] = 'Използване на Х-Sendfile header, за позволяване на уеб сървъра да дава статични файлове? Вашият уеб сървър трябва да поддържа това.'; +$lang['broken_iua'] = 'Отметнете, ако ignore_user_abort функцията не работи. Може да попречи на търсенето в страниците. Знае се, че комбинацията IIS+PHP/CGI е лоша. Вижте <a href="http://bugs.splitbrain.org/?do=details&task_id=852">Грешка 852</a> за повече информация.'; +$lang['xsendfile'] = 'Ползване на Х-Sendfile header, за да може уебсървъра да дава статични файлове? Вашият уебсървър трябва да го поддържа.'; $lang['renderer_xhtml'] = 'Показвай main (XHTML) код за wiki'; $lang['renderer__core'] = '%s (DokuWiki ядро)'; $lang['renderer__plugin'] = '%s (приставка)'; -$lang['rememberme'] = 'Остави постоянни бисквитки за вход (запомни ме)'; -$lang['rss_type'] = 'Вид на XML източника (feed)'; +$lang['rememberme'] = 'Ползване на постоянни бисквитки за вписване (запомни ме)'; +$lang['rss_type'] = 'Тип на XML feed'; $lang['rss_linkto'] = 'XML feed препраща към'; $lang['rss_content'] = 'Какво да се показва в XML feed елементите?'; $lang['rss_update'] = 'Интервал на обновяване XML източника (сек)'; $lang['recent_days'] = 'Колко последни промени да се пазят (дни)'; $lang['rss_show_summary'] = 'XML feed show summary in title'; $lang['target____wiki'] = 'Прозорец за вътрешни препратки'; -$lang['target____interwiki'] = 'Прозорец за вътрешни уики препратки'; +$lang['target____interwiki'] = 'Прозорец за вътреуики препратки'; $lang['target____extern'] = 'Прозорец за външни препратки'; -$lang['target____media'] = 'Прозорец за препратки към медия'; -$lang['target____windows'] = 'Прозорец за препратки към прозорци'; +$lang['target____media'] = 'Прозорец за медийни препратки'; +$lang['target____windows'] = 'Прозорец за Windows препратки'; $lang['proxy____host'] = 'Име на прокси сървър'; $lang['proxy____port'] = 'Порт на проксито'; $lang['proxy____user'] = 'Потребител за проксито'; $lang['proxy____pass'] = 'Парола за проксито'; -$lang['proxy____ssl'] = 'Използване на ssl за връзка към проксито'; -$lang['safemodehack'] = 'Позволи safemode хак'; -$lang['ftp____host'] = 'FTP сървър за safemode хака'; -$lang['ftp____port'] = 'FTP порт за safemode хака'; -$lang['ftp____user'] = 'FTP потребител за safemode хака'; -$lang['ftp____pass'] = 'FTP парола за safemode хака'; -$lang['ftp____root'] = 'FTP главна директория safemode хака'; +$lang['proxy____ssl'] = 'Ползване на SSL за връзката с проксито'; +$lang['safemodehack'] = 'Ползване на хака safemode'; +$lang['ftp____host'] = 'FTP сървър за хака safemode'; +$lang['ftp____port'] = 'FTP порт за хака safemode'; +$lang['ftp____user'] = 'FTP потребител за хака safemode'; +$lang['ftp____pass'] = 'FTP парола за хака safemode'; +$lang['ftp____root'] = 'FTP главна директория хака safemode'; $lang['license_o_'] = 'Нищо не е избрано'; $lang['typography_o_0'] = 'без'; $lang['typography_o_1'] = 'с изключение на единични кавички'; -$lang['typography_o_2'] = 'всякаква форма за кавичките (не винаги работи)'; +$lang['typography_o_2'] = 'включително единични кавички (не винаги работи)'; $lang['userewrite_o_0'] = 'без'; -$lang['userewrite_o_1'] = '.htaccess файл'; +$lang['userewrite_o_1'] = '.htaccess файлa'; $lang['userewrite_o_2'] = 'вътрешно от DokuWiki '; $lang['deaccent_o_0'] = 'изключено'; $lang['deaccent_o_1'] = 'премахване на акценти'; @@ -163,7 +165,7 @@ $lang['rss_content_o_htmldiff'] = 'Diff таблица в HTML формат'; $lang['rss_content_o_html'] = 'Цялото съдържание на HTML страницата'; $lang['rss_linkto_o_diff'] = 'изглед на разликите'; $lang['rss_linkto_o_page'] = 'променената страница'; -$lang['rss_linkto_o_rev'] = 'списък на текущите версии'; +$lang['rss_linkto_o_rev'] = 'списък на версииte'; $lang['rss_linkto_o_current'] = 'текущата страница'; $lang['compression_o_0'] = 'без'; $lang['compression_o_gz'] = 'gzip'; @@ -174,9 +176,9 @@ $lang['xsendfile_o_2'] = 'Стандартен X-Sendfile header'; $lang['xsendfile_o_3'] = 'Специфичен Nginx X-Accel-Redirect header за пренасочване'; $lang['showuseras_o_loginname'] = 'Потребителско име'; $lang['showuseras_o_username'] = 'Пълно потребителско име'; -$lang['showuseras_o_email'] = 'Пълен адрес на електронната поща на потребителя'; -$lang['showuseras_o_email_link'] = 'Адрес на електронната поща на потребителя под формата на mailto: линк'; +$lang['showuseras_o_email'] = 'Адресите на ел, поща на потребителите (променени според настройките на mailguard)'; +$lang['showuseras_o_email_link'] = 'Адресите на ел. поща на потребителите под формата на mailto: връзка'; $lang['useheading_o_0'] = 'Никога'; $lang['useheading_o_navigation'] = 'Само за навигация'; -$lang['useheading_o_content'] = 'Само за Wiki съдържание'; +$lang['useheading_o_content'] = 'Само за съдържанието на Wiki-то'; $lang['useheading_o_1'] = 'Винаги'; diff --git a/lib/plugins/config/lang/el/lang.php b/lib/plugins/config/lang/el/lang.php index df9029506..ebd676886 100644 --- a/lib/plugins/config/lang/el/lang.php +++ b/lib/plugins/config/lang/el/lang.php @@ -108,6 +108,7 @@ $lang['fetchsize'] = 'Μέγιστο μέγεθος (σε bytes) ε $lang['notify'] = 'Αποστολή ενημέρωσης για αλλαγές σε αυτή την e-mail διεύθυνση'; $lang['registernotify'] = 'Αποστολή ενημερωτικών μηνυμάτων σε αυτή την e-mail διεύθυνση κατά την εγγραφή νέων χρηστών'; $lang['mailfrom'] = 'e-mail διεύθυνση αποστολέα για μηνύματα από την εφαρμογή'; +$lang['mailprefix'] = 'Πρόθεμα θέματος που να χρησιμοποιείται για τα αυτόματα μηνύματα ηλεκτρονικού ταχυδρομείου.'; $lang['gzip_output'] = 'Χρήση gzip Content-Encoding για την xhtml'; $lang['gdlib'] = 'Έκδοση βιβλιοθήκης GD'; $lang['im_convert'] = 'Διαδρομή προς το εργαλείο μετατροπής εικόνων του ImageMagick'; diff --git a/lib/plugins/config/lang/fr/lang.php b/lib/plugins/config/lang/fr/lang.php index 7f3e39845..99e140af5 100644 --- a/lib/plugins/config/lang/fr/lang.php +++ b/lib/plugins/config/lang/fr/lang.php @@ -15,6 +15,7 @@ * @author Philippe Bajoit <philippe.bajoit@gmail.com> * @author Florian Gaub <floriang@floriang.net> * @author Samuel Dorsaz samuel.dorsaz@novelion.net + * @author Johan Guilbaud <guilbaud.johan@gmail.com> */ $lang['menu'] = 'Paramètres de configuration'; $lang['error'] = 'Paramètres non modifiés en raison d\'une valeur non valide, vérifiez vos réglages et réessayez. <br />Les valeurs erronées sont entourées d\'une bordure rouge.'; @@ -111,6 +112,7 @@ $lang['fetchsize'] = 'Taille maximale (en octets) du fichier que fet $lang['notify'] = 'Notifier les modifications à cette adresse de courriel'; $lang['registernotify'] = 'Envoyer un courriel annonçant les nouveaux utilisateurs enregistrés à cette adresse'; $lang['mailfrom'] = 'Expéditeur des notifications par courriel du wiki'; +$lang['mailprefix'] = 'Préfixe à utiliser dans les objets des courriels automatiques'; $lang['gzip_output'] = 'Utiliser Content-Encoding gzip pour XHTML'; $lang['gdlib'] = 'Version de GD Lib'; $lang['im_convert'] = 'Chemin vers l\'outil de conversion d\'ImageMagick'; diff --git a/lib/plugins/config/lang/pt/lang.php b/lib/plugins/config/lang/pt/lang.php index 336de5b36..c0ada0a26 100644 --- a/lib/plugins/config/lang/pt/lang.php +++ b/lib/plugins/config/lang/pt/lang.php @@ -103,6 +103,7 @@ $lang['fetchsize'] = 'Tamanho máximo (bytes) que o fetch.php pode t $lang['notify'] = 'Enviar notificações de mudanças para este endereço de email'; $lang['registernotify'] = 'Enviar informações de utilizadores registados para este endereço de email'; $lang['mailfrom'] = 'Endereço de email a ser utilizado para mensagens automáticas'; +$lang['mailprefix'] = 'Prefixo de email a ser utilizado para mensagens automáticas'; $lang['gzip_output'] = 'Usar "Content-Encoding" do gzip para o código xhtml'; $lang['gdlib'] = 'Versão GD Lib'; $lang['im_convert'] = 'Caminho para a ferramenta "convert" do ImageMagick'; diff --git a/lib/plugins/plugin/classes/ap_download.class.php b/lib/plugins/plugin/classes/ap_download.class.php index beba0ab07..784095aaf 100644 --- a/lib/plugins/plugin/classes/ap_download.class.php +++ b/lib/plugins/plugin/classes/ap_download.class.php @@ -1,7 +1,7 @@ <?php class ap_download extends ap_manage { - var $overwrite = false; + var $overwrite = true; /** * Initiate the plugin download diff --git a/lib/plugins/plugin/classes/ap_manage.class.php b/lib/plugins/plugin/classes/ap_manage.class.php index 2982a3ebb..fb148f263 100644 --- a/lib/plugins/plugin/classes/ap_manage.class.php +++ b/lib/plugins/plugin/classes/ap_manage.class.php @@ -176,7 +176,7 @@ class ap_manage { function dir_delete($path) { if (!is_string($path) || $path == "") return false; - if (is_dir($path)) { + if (is_dir($path) && !is_link($path)) { if (!$dh = @opendir($path)) return false; while ($f = readdir($dh)) { diff --git a/lib/plugins/plugin/lang/bg/lang.php b/lib/plugins/plugin/lang/bg/lang.php index 99e7a2fe4..b4aaae5e4 100644 --- a/lib/plugins/plugin/lang/bg/lang.php +++ b/lib/plugins/plugin/lang/bg/lang.php @@ -5,6 +5,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author Nikolay Vladimirov <nikolay@vladimiroff.com> * @author Viktor Usunov <usun0v@mail.bg> + * @author Kiril Velikov neohidra@gmail.com */ $lang['menu'] = 'Управление на приставките'; $lang['download'] = 'Сваляне и инсталиране на нова приставка'; diff --git a/lib/plugins/plugin/lang/fr/lang.php b/lib/plugins/plugin/lang/fr/lang.php index 79080f5f3..5daf3b3ad 100644 --- a/lib/plugins/plugin/lang/fr/lang.php +++ b/lib/plugins/plugin/lang/fr/lang.php @@ -15,6 +15,7 @@ * @author Philippe Bajoit <philippe.bajoit@gmail.com> * @author Florian Gaub <floriang@floriang.net> * @author Samuel Dorsaz samuel.dorsaz@novelion.net + * @author Johan Guilbaud <guilbaud.johan@gmail.com> */ $lang['menu'] = 'Gestion des modules externes'; $lang['download'] = 'Télécharger et installer un nouveau module'; diff --git a/lib/plugins/popularity/lang/bg/intro.txt b/lib/plugins/popularity/lang/bg/intro.txt index 06c338585..aa437f32c 100644 --- a/lib/plugins/popularity/lang/bg/intro.txt +++ b/lib/plugins/popularity/lang/bg/intro.txt @@ -1,9 +1,9 @@ -====== Обратна връзка за популярност ====== +====== Обратна връзка ====== -Този инструмент събира данни за потребителите на Вашето Wiki и ви позволява да ги изпратите анонимно на DokuWiki. Това ни помага да разберем как DokuWiki се използва от потребителите си и да разработваме бъдещи решения, съответно реалното използване. +Инструментът събира данни за Вашето Wiki и ви позволява да ги изпратите на разработчиците DokuWiki. Данните ще им помогнат да разберат как DokuWiki се използва от потребителите и че статистиката е в подкрепа на поетата насока за развитие. -Моля изпозвайте тази опция, за да информирате разработчиците на този продукт. Вашите данни ще бъдат идентифицирани с анонимен номер. +Моля, ползвайте функцията, от време на време, когато уебстраницата ви се разраства, за да информирате разработчиците. Изпратените данни ще бъдат идентифицирани с анонимен номер. -Събраните данни съдържат информация за вашата версия на DokuWiki, броя и размера на вашите страници и файлове, инсталирани плъгини и информация за вашата PHP инсталация. +Събраните данни съдържат информация за версия на DokuWiki, броя и размера на вашите страници и файлове, инсталирани приставки и информация за вашата PHP инсталация. -Изходните данни са показано по-долу във вида, в който ще бъдат изпратени. Моля ползвайте сьответния бутон, за да изпратите тази информация.
\ No newline at end of file +Данните, които ще бъдат изпратени са изобразени по-долу. Моля, натиснете бутона "Изпращане на данните", за да изпратите информацията.
\ No newline at end of file diff --git a/lib/plugins/popularity/lang/bg/lang.php b/lib/plugins/popularity/lang/bg/lang.php index adf99a9f5..5c89c3509 100644 --- a/lib/plugins/popularity/lang/bg/lang.php +++ b/lib/plugins/popularity/lang/bg/lang.php @@ -3,6 +3,12 @@ * Bulgarian language file * * @author Viktor Usunov <usun0v@mail.bg> + * @author Kiril Velikov neohidra@gmail.com */ -$lang['name'] = 'Обратна връзка за популярност (може да отнеме известно време за зареждане)'; -$lang['submit'] = 'Прати данните'; +$lang['name'] = 'Обратна връзка (зареждането може да отнеме известно време)'; +$lang['submit'] = 'Изпращане на данните'; +$lang['autosubmit'] = 'Автоматично изпращане на данните веднъж в месеца'; +$lang['submissionFailed'] = 'Данните не могат да бъдат изпратени поради следната грешка"'; +$lang['submitDirectly'] = 'Можете да пратите данните ръчно като изпратите следния формуляр.'; +$lang['autosubmitError'] = 'Последното автоматично изпращане не бе осъществено, поради следната грешка:'; +$lang['lastSent'] = 'Данните бяха изпратени'; diff --git a/lib/plugins/popularity/lang/bg/submitted.txt b/lib/plugins/popularity/lang/bg/submitted.txt new file mode 100644 index 000000000..1e95f6ffd --- /dev/null +++ b/lib/plugins/popularity/lang/bg/submitted.txt @@ -0,0 +1,3 @@ +====== Обратна връзка ====== + +Данните бяха изпратени успешно.
\ No newline at end of file diff --git a/lib/plugins/popularity/lang/el/lang.php b/lib/plugins/popularity/lang/el/lang.php index 0d16bbf86..41704fa06 100644 --- a/lib/plugins/popularity/lang/el/lang.php +++ b/lib/plugins/popularity/lang/el/lang.php @@ -7,3 +7,8 @@ */ $lang['name'] = 'Αναφορά Δημοτικότητας (ίσως αργήσει λίγο να εμφανιστεί)'; $lang['submit'] = 'Αποστολή Δεδομένων'; +$lang['autosubmit'] = 'Να αποστέλονται τα δεδομένα αυτόματα μια φορά το μήνα.'; +$lang['submissionFailed'] = 'Τα δεδομένα δεν ήταν δυνατό να αποσταλλούν λόγω του παρακάτω σφάλματος:'; +$lang['submitDirectly'] = 'Μπορείτε να αποστείλλετε τα δεδομένα χειροκίνητα με την υποβολή της παρακάτω φόρμας.'; +$lang['autosubmitError'] = 'Η τελευταία αυτόματη υποβολή των δεδομένων απέτυχε με το παρακάτω μήνυμα σφάλματος:'; +$lang['lastSent'] = 'Τα δεδομένα έχουν σταλεί.'; diff --git a/lib/plugins/popularity/lang/el/submitted.txt b/lib/plugins/popularity/lang/el/submitted.txt new file mode 100644 index 000000000..8004f9997 --- /dev/null +++ b/lib/plugins/popularity/lang/el/submitted.txt @@ -0,0 +1,3 @@ +====== Αποτέλεσμα Υποβολής Δημοσιότητας ====== + +Τα δεδομένα στάλθηκαν επιτυχώς.
\ No newline at end of file diff --git a/lib/plugins/popularity/lang/fr/lang.php b/lib/plugins/popularity/lang/fr/lang.php index 1157d1fa6..9aaf3c7d2 100644 --- a/lib/plugins/popularity/lang/fr/lang.php +++ b/lib/plugins/popularity/lang/fr/lang.php @@ -12,6 +12,7 @@ * @author Philippe Bajoit <philippe.bajoit@gmail.com> * @author Florian Gaub <floriang@floriang.net> * @author Samuel Dorsaz samuel.dorsaz@novelion.net + * @author Johan Guilbaud <guilbaud.johan@gmail.com> */ $lang['name'] = 'Enquête de popularité (peut nécessiter un certain temps pour être chargée)'; $lang['submit'] = 'Envoyer les données'; diff --git a/lib/plugins/popularity/lang/pt/lang.php b/lib/plugins/popularity/lang/pt/lang.php index da92ee729..35fac0fc0 100644 --- a/lib/plugins/popularity/lang/pt/lang.php +++ b/lib/plugins/popularity/lang/pt/lang.php @@ -8,3 +8,7 @@ */ $lang['name'] = 'Retorno (feedback) de Popularidade (pode levar algum tempo a carregar)'; $lang['submit'] = 'Enviar Dados'; +$lang['autosubmit'] = 'Enviar dados automáticamente uma vez por mês'; +$lang['submissionFailed'] = 'Os dados não foram enviados devido ao seguinte erro:'; +$lang['submitDirectly'] = 'Pode enviar os dados manualmente, submetendo o seguinte formulário.'; +$lang['lastSent'] = 'Os dados foram enviados'; diff --git a/lib/plugins/popularity/lang/pt/submitted.txt b/lib/plugins/popularity/lang/pt/submitted.txt new file mode 100644 index 000000000..d2bb2b7ae --- /dev/null +++ b/lib/plugins/popularity/lang/pt/submitted.txt @@ -0,0 +1,3 @@ +====== Retorno de Popularidade ====== + +Os dados foram enviados com sucesso.
\ No newline at end of file diff --git a/lib/plugins/revert/lang/bg/lang.php b/lib/plugins/revert/lang/bg/lang.php index 6f0ff0672..05525c535 100644 --- a/lib/plugins/revert/lang/bg/lang.php +++ b/lib/plugins/revert/lang/bg/lang.php @@ -3,6 +3,7 @@ * bulgarian language file * @author Nikolay Vladimirov <nikolay@vladimiroff.com> * @author Viktor Usunov <usun0v@mail.bg> + * @author Kiril Velikov neohidra@gmail.com */ $lang['menu'] = 'Възстановяване'; $lang['filter'] = 'Търсене на спамната страници'; diff --git a/lib/plugins/revert/lang/fr/lang.php b/lib/plugins/revert/lang/fr/lang.php index d80ece209..d6dc3ee3d 100644 --- a/lib/plugins/revert/lang/fr/lang.php +++ b/lib/plugins/revert/lang/fr/lang.php @@ -13,6 +13,7 @@ * @author Philippe Bajoit <philippe.bajoit@gmail.com> * @author Florian Gaub <floriang@floriang.net> * @author Samuel Dorsaz samuel.dorsaz@novelion.net + * @author Johan Guilbaud <guilbaud.johan@gmail.com> */ $lang['menu'] = 'Gestionnaire de réversions'; $lang['filter'] = 'Trouver les pages spammées '; diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php index df13f65e3..e40ee9b7e 100644 --- a/lib/plugins/usermanager/admin.php +++ b/lib/plugins/usermanager/admin.php @@ -562,16 +562,19 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { * @return array(user, password, full name, email, array(groups)) */ function _retrieveUser($clean=true) { + global $auth; - $user[0] = ($clean) ? cleanID(preg_replace('/.*:/','',$_REQUEST['userid'])) : $_REQUEST['userid']; + $user[0] = ($clean) ? $auth->cleanUser($_REQUEST['userid']) : $_REQUEST['userid']; $user[1] = $_REQUEST['userpass']; $user[2] = $_REQUEST['username']; $user[3] = $_REQUEST['usermail']; - $user[4] = preg_split('/\s*,\s*/',$_REQUEST['usergroups'],-1,PREG_SPLIT_NO_EMPTY); + $user[4] = explode(',',$_REQUEST['usergroups']); - if (empty($user[4]) || (is_array($user[4]) && (count($user[4]) == 1) && (trim($user[4][0]) == ''))) { - $user[4] = null; - } + $user[4] = array_map('trim',$user[4]); + if($clean) $user[4] = array_map(array($auth,'cleanGroup'),$user[4]); + $user[4] = array_filter($user[4]); + $user[4] = array_unique($user[4]); + if(!count($user[4])) $user[4] = null; return $user; } diff --git a/lib/plugins/usermanager/lang/bg/lang.php b/lib/plugins/usermanager/lang/bg/lang.php index 58c8453f2..b229ce29e 100644 --- a/lib/plugins/usermanager/lang/bg/lang.php +++ b/lib/plugins/usermanager/lang/bg/lang.php @@ -4,6 +4,7 @@ * * @author Nikolay Vladimirov <nikolay@vladimiroff.com> * @author Viktor Usunov <usun0v@mail.bg> + * @author Kiril Velikov neohidra@gmail.com */ $lang['menu'] = 'Управление на потребителите'; $lang['noauth'] = '(идентифицирането на потребителите е недостъпно)'; @@ -33,15 +34,15 @@ $lang['delete_fail'] = '%d не бяха изтрити'; $lang['update_ok'] = 'Обновяването на потребителя бе успешно'; $lang['update_fail'] = 'Обновяването на потребителя бе неуспешно'; $lang['update_exists'] = 'Смяната на потребителското име бе невъзможна, оказаното потребителско име (%s) вече съществува (всякакви други промени ще бъдат приложени).'; -$lang['start'] = 'начало'; -$lang['prev'] = 'предишно'; -$lang['next'] = 'следващо'; -$lang['last'] = 'последно'; +$lang['start'] = 'първи'; +$lang['prev'] = 'назад'; +$lang['next'] = 'напред'; +$lang['last'] = 'последен'; $lang['edit_usermissing'] = 'Избраният потребител не бе намерен, оказаното потребителско име може да е изтрито или променено другаде.'; -$lang['user_notify'] = 'Осведомяване на потребителя'; -$lang['note_notify'] = 'Осведомителната e-поща се праща само, ако на потребителя е дадена нова парола.'; -$lang['note_group'] = 'Новите потребители ще бъдат добавяни към групата (%s) ако не бъде посочена друга.'; -$lang['note_pass'] = 'Паролата ще бъде генерирана автоматично, ако полето е оставено празно и функцията за уведомяване на потребителя е включена.'; +$lang['user_notify'] = 'Уведомяване на потребителя'; +$lang['note_notify'] = 'Ел. писмо се изпраща само ако бъде променена паролата на потребителя.'; +$lang['note_group'] = 'Новите потребители биват добавяни към стандартната групата (%s) ако не е посочена друга.'; +$lang['note_pass'] = 'Паролата ще бъде генерирана автоматично, ако оставите полето празно и функцията за уведомяване на потребителя е включена.'; $lang['add_ok'] = 'Добавянето на потребителя бе успешно'; $lang['add_fail'] = 'Добавянето на потребителя бе неуспешно'; $lang['notify_ok'] = 'Осведомително е-писмо бе изпратено'; diff --git a/lib/plugins/usermanager/lang/fr/lang.php b/lib/plugins/usermanager/lang/fr/lang.php index 92bc127ed..49baf9d51 100644 --- a/lib/plugins/usermanager/lang/fr/lang.php +++ b/lib/plugins/usermanager/lang/fr/lang.php @@ -14,6 +14,7 @@ * @author Philippe Bajoit <philippe.bajoit@gmail.com> * @author Florian Gaub <floriang@floriang.net> * @author Samuel Dorsaz samuel.dorsaz@novelion.net + * @author Johan Guilbaud <guilbaud.johan@gmail.com> */ $lang['menu'] = 'Gestion des utilisateurs'; $lang['noauth'] = '(authentification utilisateur non disponible)'; diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js index 01262bcef..45c1fb111 100644 --- a/lib/scripts/edit.js +++ b/lib/scripts/edit.js @@ -268,6 +268,7 @@ var textChanged = false; */ function deleteDraft() { if (is_opera) return; + if (window.keepDraft) return; // remove a possibly saved draft using ajax var dwform = $('dw__editform'); @@ -318,8 +319,13 @@ addInitEvent(function (){ window.onunload = deleteDraft; // reset change memory var on submit - addEvent($('edbtn__save'), 'click', function(){ textChanged = false; }); - addEvent($('edbtn__preview'), 'click', function(){ textChanged = false; }); + addEvent($('edbtn__save'), 'click', function(){ + textChanged = false; + }); + addEvent($('edbtn__preview'), 'click', function(){ + textChanged = false; + window.keepDraft = true; // needed to keep draft on page unload + }); var summary = $('edit__summary'); addEvent(summary, 'change', summaryCheck); @@ -341,104 +347,3 @@ function summaryCheck(){ } } - -/** - * Class managing the timer to display a warning on a expiring lock - */ -function locktimer_class(){ - this.sack = null; - this.timeout = 0; - this.timerID = null; - this.lasttime = null; - this.msg = ''; - this.pageid = ''; -}; -var locktimer = new locktimer_class(); - locktimer.init = function(timeout,msg,draft){ - // init values - locktimer.timeout = timeout*1000; - locktimer.msg = msg; - locktimer.draft = draft; - locktimer.lasttime = new Date(); - - if(!$('dw__editform')) return; - locktimer.pageid = $('dw__editform').elements.id.value; - if(!locktimer.pageid) return; - - // init ajax component - locktimer.sack = new sack(DOKU_BASE + 'lib/exe/ajax.php'); - locktimer.sack.AjaxFailedAlert = ''; - locktimer.sack.encodeURIString = false; - locktimer.sack.onCompletion = locktimer.refreshed; - - // register refresh event - addEvent($('dw__editform'),'keypress',function(){locktimer.refresh();}); - // start timer - locktimer.reset(); - }; - - /** - * (Re)start the warning timer - */ - locktimer.reset = function(){ - locktimer.clear(); - locktimer.timerID = window.setTimeout("locktimer.warning()", locktimer.timeout); - }; - - /** - * Display the warning about the expiring lock - */ - locktimer.warning = function(){ - locktimer.clear(); - alert(locktimer.msg); - }; - - /** - * Remove the current warning timer - */ - locktimer.clear = function(){ - if(locktimer.timerID !== null){ - window.clearTimeout(locktimer.timerID); - locktimer.timerID = null; - } - }; - - /** - * Refresh the lock via AJAX - * - * Called on keypresses in the edit area - */ - locktimer.refresh = function(){ - var now = new Date(); - // refresh every minute only - if(now.getTime() - locktimer.lasttime.getTime() > 30*1000){ //FIXME decide on time - var params = 'call=lock&id='+encodeURIComponent(locktimer.pageid); - var dwform = $('dw__editform'); - if(locktimer.draft && dwform.elements.wikitext){ - params += '&prefix='+encodeURIComponent(dwform.elements.prefix.value); - params += '&wikitext='+encodeURIComponent(dwform.elements.wikitext.value); - params += '&suffix='+encodeURIComponent(dwform.elements.suffix.value); - if(dwform.elements.date){ - params += '&date='+encodeURIComponent(dwform.elements.date.value); - } - } - locktimer.sack.runAJAX(params); - locktimer.lasttime = now; - } - }; - - - /** - * Callback. Resets the warning timer - */ - locktimer.refreshed = function(){ - var data = this.response; - var error = data.charAt(0); - data = data.substring(1); - - $('draft__status').innerHTML=data; - if(error != '1') return; // locking failed - locktimer.reset(); - }; -// end of locktimer class functions - diff --git a/lib/scripts/locktimer.js b/lib/scripts/locktimer.js new file mode 100644 index 000000000..51d533056 --- /dev/null +++ b/lib/scripts/locktimer.js @@ -0,0 +1,99 @@ +/** + * Class managing the timer to display a warning on a expiring lock + */ +var locktimer = { + sack: null, + timeout: 0, + timerID: null, + lasttime: null, + msg: '', + pageid: '', + + init: function(timeout,msg,draft){ + // init values + locktimer.timeout = timeout*1000; + locktimer.msg = msg; + locktimer.draft = draft; + locktimer.lasttime = new Date(); + + if(!$('dw__editform')) return; + locktimer.pageid = $('dw__editform').elements.id.value; + if(!locktimer.pageid) return; + if($('wiki__text').readOnly) return; + + // init ajax component + locktimer.sack = new sack(DOKU_BASE + 'lib/exe/ajax.php'); + locktimer.sack.AjaxFailedAlert = ''; + locktimer.sack.encodeURIString = false; + locktimer.sack.onCompletion = locktimer.refreshed; + + // register refresh event + addEvent($('dw__editform'),'keypress',function(){locktimer.refresh();}); + // start timer + locktimer.reset(); + }, + + /** + * (Re)start the warning timer + */ + reset: function(){ + locktimer.clear(); + locktimer.timerID = window.setTimeout("locktimer.warning()", locktimer.timeout); + }, + + /** + * Display the warning about the expiring lock + */ + warning: function(){ + locktimer.clear(); + alert(locktimer.msg); + }, + + /** + * Remove the current warning timer + */ + clear: function(){ + if(locktimer.timerID !== null){ + window.clearTimeout(locktimer.timerID); + locktimer.timerID = null; + } + }, + + /** + * Refresh the lock via AJAX + * + * Called on keypresses in the edit area + */ + refresh: function(){ + var now = new Date(); + // refresh every minute only + if(now.getTime() - locktimer.lasttime.getTime() > 30*1000){ + var params = 'call=lock&id='+encodeURIComponent(locktimer.pageid); + var dwform = $('dw__editform'); + if(locktimer.draft && dwform.elements.wikitext){ + params += '&prefix='+encodeURIComponent(dwform.elements.prefix.value); + params += '&wikitext='+encodeURIComponent(dwform.elements.wikitext.value); + params += '&suffix='+encodeURIComponent(dwform.elements.suffix.value); + if(dwform.elements.date){ + params += '&date='+encodeURIComponent(dwform.elements.date.value); + } + } + locktimer.sack.runAJAX(params); + locktimer.lasttime = now; + } + }, + + /** + * Callback. Resets the warning timer + */ + refreshed: function(){ + var data = this.response; + var error = data.charAt(0); + data = data.substring(1); + + $('draft__status').innerHTML=data; + if(error != '1') return; // locking failed + locktimer.reset(); + }, +}; + diff --git a/lib/scripts/script.js b/lib/scripts/script.js index c79c9b683..b9b324f96 100644 --- a/lib/scripts/script.js +++ b/lib/scripts/script.js @@ -460,19 +460,29 @@ addInitEvent(function(){ }); /** - * Add the event handler to the actiondropdown + * Autosubmit quick select forms + * + * When a <select> tag has the class "quickselect", this script will + * automatically submit its parent form when the select value changes. + * It also hides the submit button of the form. * * @author Andreas Gohr <andi@splitbrain.org> */ addInitEvent(function(){ - var selector = $('action__selector'); - if(!selector) return; - - addEvent(selector,'change',function(e){ - this.form.submit(); - }); - - $('action__selectorbtn').style.display = 'none'; + var selects = getElementsByClass('quickselect',document,'select'); + for(var i=0; i<selects.length; i++){ + // auto submit on change + addEvent(selects[i],'change',function(e){ + this.form.submit(); + }); + // hide submit buttons + var btns = selects[i].form.getElementsByTagName('input'); + for(var j=0; j<btns.length; j++){ + if(btns[j].type == 'submit'){ + btns[j].style.display = 'none'; + } + } + } }); /** diff --git a/lib/tpl/default/design.css b/lib/tpl/default/design.css index 09a9ecf01..1fdf2bfac 100644 --- a/lib/tpl/default/design.css +++ b/lib/tpl/default/design.css @@ -85,8 +85,10 @@ div.dokuwiki fieldset { } div.dokuwiki textarea.edit { - font-family: monospace; - font-size: 14px; + font-family: monospace, serif; + /* second generic font fixes problem with font-size, see + http://meyerweb.com/eric/thoughts/2010/02/12/fixed-monospace-sizing/ */ + font-size: 100%; color: __text__; background-color: __background__; border: 1px solid __border__; @@ -464,9 +466,14 @@ div.dokuwiki blockquote { padding-left: 3px; } +div.dokuwiki pre, +div.dokuwiki code { + font-family: monospace, serif; + /* second generic font fixes problem with font-size, see + http://meyerweb.com/eric/thoughts/2010/02/12/fixed-monospace-sizing/ */ + font-size: 100%; +} div.dokuwiki pre { - font-family: monospace; - font-size: 120%; padding: 0.5em; border: 1px dashed __border__; color: __text__; @@ -519,11 +526,6 @@ div.dokuwiki dl.file dt { } -/* inline code words */ -div.dokuwiki code { - font-size: 120%; -} - /* inline tables */ div.dokuwiki table.inline { background-color: __background__; @@ -652,10 +654,12 @@ div.dokuwiki table.diff td { font-family: monospace; font-size: 100%; } -div.dokuwiki td.diff-addedline { +div.dokuwiki td.diff-addedline, +div.dokuwiki span.diff-addedline { background-color: #ddffdd; } -div.dokuwiki td.diff-deletedline { +div.dokuwiki td.diff-deletedline, +div.dokuwiki span.diff-deletedline { background-color: #ffffbb; } div.dokuwiki td.diff-context { |