====== new page dialog plugin ======
---- plugin ----
description: Yet another "New Page Dialog", with focus on the way people are used to store files. It aims to resemble a regular "Save As" dialog with "Add Folder" functionality.
author : Pierre Spring
email : pierre.spring@liip.ch
type : action
lastupdate : 2008-07-11
compatible : 2008-05-05
depends :
conflicts :
similar : addnewpage, newpagebutton
tags : add, button, form, create, new, page
----
===== Installation =====
==== Install via SVN ====
go into the ''/lib/plugins'' directory and type:
svn co http://svn.bitflux.org/repos/public/misc/dokuwiki/plugins/npd
==== Download Zip ====
The zip can be found [[http://wiki.caillou.ch/_media/playground:npd.0.4.zip|here]]
==== Add Button to Template ====
Decide where you want to insert the "Create New Page" button in your template and insert the the following code:
if (!plugin_isdisabled('npd') && ($npd =& plugin_load('helper', 'npd'))) {
$npd->html_new_page_button();
}
Most likely you want to do that in the ''/lib/tpl/default/main.php'' inside the ''%%
Note that the button will only be shown, if the browser is JS enabled.
===== Changelog =====
* 2008-07-11 **Version 0.4:**
* fixed compatibility with DW 2008-05-05
* 2008-05-27 **Version 0.3:**
* added many localisations
* added configuration in order to choose either bottom or link
* 2007-02-18 **Version 0.2:**
* added German language //(thx to Tblue)//
* bugfix for "empty namespaces"
* 2007-02-17 **Version 0.1:**
* initial upload
===== Known Issues =====
Please report bugs here:
*
case 'edit':
#most complicated type - we need to decide on current action
if($ACT == 'show' || $ACT == 'search'){
if($INFO['writable']){
if(!empty($INFO['draft'])){
echo html_btn('draft',$ID,'e',array('do' => 'draft'),'post');
}else{
if($INFO['exists']){
echo html_btn('edit',$ID,'e',array('do' => 'edit','rev' => $REV),'post');
}else{
echo html_btn('create',$ID,'e',array('do' => 'edit','rev' => $REV),'post');
}
}
}else{
if(!actionOK('source')) return false; //pseudo action
echo html_btn('source',$ID,'v',array('do' => 'edit','rev' => $REV),'post');
}
}else{
echo html_btn('show',$ID,'v',array('do' => 'show'));
}
break;
\\
And then change it to this (ie. comment the create button):\\
\\
case 'edit':
#most complicated type - we need to decide on current action
if($ACT == 'show' || $ACT == 'search'){
if($INFO['writable']){
if(!empty($INFO['draft'])){
echo html_btn('draft',$ID,'e',array('do' => 'draft'),'post');
}else{
if($INFO['exists']){
echo html_btn('edit',$ID,'e',array('do' => 'edit','rev' => $REV),'post');
/* }else{
echo html_btn('create',$ID,'e',array('do' => 'edit','rev' => $REV),'post');*/
}
}
}else{
if(!actionOK('source')) return false; //pseudo action
echo html_btn('source',$ID,'v',array('do' => 'edit','rev' => $REV),'post');
}
}else{
echo html_btn('show',$ID,'v',array('do' => 'show'));
}
break;
\\
That's all folks!\\
\\
> What about simply not calling tpl_button('edit') in the main.php of the template in case of the "show" action?
if($ACT != 'show') tpl_button('edit');
--- //[[chi@chimeric.de|Michael Klier]] 2008/04/19 01:29//
===== Demo =====
A demo of this plugin can be seen at the [[http://fckw.demo.liip.ch/|fckw plugin demo wiki]].
===== screen shots =====
{{ http://wiki.caillou.ch/_media/playground:npd_dialog.png?w=&h=&cache=cache }}
{{ http://wiki.caillou.ch/_media/playground:npd_createnewfolder.png?w=&h=&cache=cache }}
{{ http://wiki.caillou.ch/_media/playground:npd_editfoldername.png?w=&h=&cache=cache }}
===== Localization =====
For now, localization only exists for English,German and Dutch. Please feel free too add your localizations here, I'll add them into the plugin ASAP.
There are two files for localization.
The ''lang.php'' file:
/**
* english language file for the "New Page Dialog" plugin
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Pierre Spring
*/
/* buttons */
$lang['btn_create_new_page'] = 'Create New Page';
$lang['btn_create_page'] = 'Create Page';
$lang['btn_new_folder'] = 'New Folder';
$lang['btn_ok'] = 'OK';
/* dialogs */
$lang['dlg_confirm_page_name'] = 'Are you sure you want to \ncreate a page called:\n';
$lang['dlg_new_folder'] = 'Enter new folder name:';
/* misc */
$lang['msc_page_title'] = 'Page Title';
The ''dialog_folder_name.txt'':
Please enter the folder Name.\\
Note that a folder will **NOT** be created before a page\\
within the folder is **SAVED**.
==== German translation ====
''lang.php'':
/**
* German language file for the "New Page Dialog" plugin
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Tilman Blumenbach
*/
/* buttons */
$lang['btn_create_new_page'] = 'Neue Seite anlegen';
$lang['btn_create_page'] = 'Seite anlegen';
$lang['btn_new_folder'] = 'Neuer Ordner';
$lang['btn_ok'] = 'OK';
/* dialogs */
$lang['dlg_confirm_page_name'] = 'Sind Sie sicher, dass Sie\neine Seite mit dem folgenden\nTitel anlegen wollen?\n';
$lang['dlg_new_folder'] = 'Namen für neuen Ordner eingeben:';
/* misc */
$lang['msc_page_title'] = 'Seitentitel';
''dialog_folder_name.txt'':
Bitte geben Sie den Ordnernamen ein.\\
Beachten Sie, dass ein Ordner **NICHT** angelegt wird,\\
bevor eine Seite in dem Ordner **GESPEICHERT** ist.
==== Dutch translation ====
''lang.php'':
/**
* dutch language file for the "New Page Dialog" plugin
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Harro Schuringa
*/
/* buttons */
$lang['btn_create_new_page'] = 'Maak nieuwe pagina aan';
$lang['btn_create_page'] = 'Maak pagina aan';
$lang['btn_new_folder'] = 'Nieuwe map aanmaken';
$lang['btn_ok'] = 'OK';
/* dialogs */
$lang['dlg_confirm_page_name'] = 'Weet u zeker dat u een pagina\naan wilt maken met de naam:\n';
$lang['dlg_new_folder'] = 'Geef de naam van de nieuwe map op:';
/* misc */
$lang['msc_page_title'] = 'Pagina Titel';
''dialog_folder_name.txt'':
Geef de naam van de map.\\
NB!: Denk eraan dat een map **NIET** aangemaakt wordt voordat de pagina\\
binnenin die map is **OPGESLAGEN**.\\
==== Korean translation ====
''lang.php'':
(where X=3*5*7*19)
*/
/* buttons */
$lang['btn_create_new_page'] = '새 페이지 만들기';
$lang['btn_create_page'] = '페이지 만들기';
$lang['btn_new_folder'] = '새 폴더';
$lang['btn_ok'] = '확인';
/* dialogs */
$lang['dlg_confirm_page_name'] = '다음 페이지를\n만드시겠습니까?\n';
$lang['dlg_new_folder'] = '새 폴더 이름:';
/* misc */
$lang['msc_page_title'] = '페이지 제목';
?>
''dialog_folder_name.txt'':
폴더 이름을 입력하십시요.\\
참고 - 새 폴더는 폴더 내의 파일이 **저장**될 때까지\\
생성되지 **않습니다.**
==== Norwegian translation ====
''lang.php''
/**
* norsk språkfil for plugin "New Page Dialog"
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Torkill Bruland
*/
/* buttons */
$lang['btn_create_new_page'] = 'Opprett Ny Side';
$lang['btn_create_page'] = 'Lag side';
$lang['btn_new_folder'] = 'Ny mappe';
$lang['btn_ok'] = 'OK';
/* dialogs */
$lang['dlg_confirm_page_name'] = 'Er du sikker på at du ønsker å \n opprette en side med navnet:\n';
$lang['dlg_new_folder'] = 'Før inn nytt mappenavn:';
/* misc */
$lang['msc_page_title'] = 'Sidetittel';
Fila ''dialog_folder_name.txt'':
Før inn navnet på mappa.\\
Merk at mappe **IKKE** opprettes før det\\
**LAGRES** en side i vedkommende mappe.
==== Italian translation ====
''lang.php''
/**
* italian language file for the "New Page Dialog" plugin
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Andrea Papotti
*/
/* buttons */
$lang['btn_create_new_page'] = 'Crea Nuova Pagina';
$lang['btn_create_page'] = 'Crea Pagina';
$lang['btn_new_folder'] = 'Nuova Cartella';
$lang['btn_ok'] = 'OK';
/* dialogs */
$lang['dlg_confirm_page_name'] = 'Sei sicuro di voler \ncreare una pagina chiamata:\n';
$lang['dlg_new_folder'] = 'Inserisci nome nuova cartella:';
/* misc */
$lang['msc_page_title'] = 'Titolo Pagina';
Fila ''dialog_folder_name.txt'':
Prego inserire il mome della cartella.\\
Nota: La cartella viene creata solamente quando contiene\\
ALMENO UNA pagina.
==== Spanish translation ====
lang.php
Archivo dialog_folder_name.txt
Por favor, introduzca el nombre de la carpeta.\\
Atención: **NO** se creará una carpeta hasta que se **GUARDE**\\
una página dentro de esa carpeta
==== Russian translation ====
lang.php
dialog_folder_name.txt
Введите название пространства имён.\\
Заметьте, что пространство имён **НЕ** будет создано,\\
пока страница внутри него не будет **СОХРАНЕНА**.
===== Discussion =====
* Zip file download link 404s, at least as of 2008/06/07. Don't know about SVN, since SVN isn't working right on my server. But could someone please fix the zip link? Thx much. --- //[[mbl@lelnet.com|Matt Landry]] 2008/06/07// \\
* Hi, it would be great if this plugin would also support an actionlink style link. I would happily integrate support for this plugin into the [[:Template#Arctic]] Template ;-) which supports both types of actionlinks. --- //[[chi@chimeric.de|Michael Klier]] 2008/04/19 01:27// \\
* Same here, I'm using Arctic Template and the button is simply ugly =) --- //[[none@none.none|Benoit P.]] 2008/05/13 14:26// \\
* Hi chimeric and benoit: i added the config in version 0.3 ... install the plugin, go to \\ admin -> configuration settings -> npd plugin settings \\ and choose link --- //[[pierre.spring@liip.ch|pierre spring]] 2008/06/27 23:25// \\
* Hey, I'm using artic template, too. It really looks fine with 'link' :-) But there is another Problem. I can't create new pages in subdirectories. The new page will be created at the Namespace "Start - NewPage", where Start is my Index page. --- //[[felix.weber@kh-ap.de|Felix Weber]] 2008/08/13 16:42// \\
* Fine work but i have the same problem like Felix. The value of npd_ns is empty in function npd_save (main.php). BTW: it would be nice if you could implement a exclude function to hide some namespaces in a future version? --- [[mailto:no@mail.com|Glufu]] 2008/08/14 10:19
* You must not click on the name of the namespace but on the little '+' on the left of the namespace. 2008/27/14 10:44
* my whishlist (14-set-2008)
* if you click on + of a namespace, the page is created in that namespace. Please do the same if the user click on the namespace name. Because the page is created on the root folder if the user click on a namespace name
* when the user is editing a page, do not show the "Create new page" button, it does confuse some users
* it does not work in Google Chrome browser
* a __MACOSX plugin is installed, but there is no info about it. For what is that plugin?
* I'm not sure if this soulution is ok but I fixed the problem of felix and me with this snipped of code:
function setNameSpace(node){
var nameSpace = '';
nameSpace = node.parentNode.parentNode.innerHTML;
if (nameSpace.substring(0,8) == '
just add ist to the main.php of this template and add the following line at the and of the function getEventElement(e)
setNameSpace(node);
[[mailto:no@mail.com|Glufu]] 2008/09/23 12:09