====== 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 ''%%
%%'' as follows:
html_new_page_button(); ?>  
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: * Hi with version DokuWiki-2008-05-05.tgz the plugin doesn´t work. When i want to add a new page for example to wiki:test12:test1 called test5 then the page is created in wiki: any ideas? //could not reproduce in version 0.4// * Same problem as above with DokuWiki-2008-05-05, npd 0.4 and dokubook template * Cannot I create a new page within an existing folder?? //can not reproduce - more info?// * JS error when creating folder in "empty namespaces" //fixed in version 0.2// * I installed the plugin from the Plugin Manager, using your link to zip file (http://wiki.caillou.ch/_media/playground:npd_v0.2.zip?id=playground%3Aplayground). Installation reported that plugin installed fine, and it is enabled. However, * When clicking on "info" in the plugin manager I get "This plugin returned no information, it may be invalid.". * I cannot create the button for it as described above (I place it in div class="bar-right" id="bar__bottomright", just as it is done in the example above); but nothing happens at all. I can place some regular text there, e.g. "a button", and I then see it in the bar; however, the code to create the new page dialog button does nothing. * My DokuWiki version is 2007-06-26b if this helps. (Possible) SOLUTION (22-02-2008): probably your plugin is not well installed. I got at first the same \\ result. Just unpack the zip file manually to /lib/plugins/ and then it has to work fine.Remember to \\ change the main.php in the directory of your current theme which can differ from the default theme.\\ For example: /lib/tpl/mytheme/main.php.\\ (When your current theme is another theme than the default theme, this plugin will probably look\\ different than the one in the example here, because of another stylesheet.)\\ ==== Added: How to get rid of the default createpage button?==== After you have installed this plugin, users still see the default createpage button of DokuWiki \\ next to the createpagebutton of this plugin. They will also try to use the default createpage button \\ which leads to pages without namespaces. If you want your users to maintain namespaces in your\\ DokuWiki when they are creating a page, you must in that case get rid of the default createpage button.\\ Here's how to do that:\\ Locate the /inc/template.php file. Locate the following code in the function tpl_button($type) : \\ 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