summaryrefslogtreecommitdiff
path: root/inc/html.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/html.php')
-rw-r--r--inc/html.php263
1 files changed, 124 insertions, 139 deletions
diff --git a/inc/html.php b/inc/html.php
index 2d6c0a093..23eadebc4 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -80,51 +80,66 @@ function html_login(){
}
/**
- * prints a section editing button
- * used as a callback in html_secedit
+ * inserts section edit buttons if wanted or removes the markers
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
-function html_secedit_button($matches){
- global $ID;
+function html_secedit($text,$show=true){
global $INFO;
- $edittarget = ($matches[1] === 'SECTION') ? 'plain' :
- strtolower($matches[1]);
-
- $section = $matches[3];
- $name = $matches[2];
-
- $secedit = '';
- $secedit .= '<div class="secedit editbutton_' . $edittarget . '">';
- $secedit .= html_btn('secedit',$ID,'',
- array('do' => 'edit',
- 'lines' => $section,
- 'edittarget' => $edittarget,
- 'rev' => $INFO['lastmod']),
- 'post', $name);
- $secedit .= '</div>';
- return $secedit;
+ $regexp = '#<!-- EDIT(\d+) ([A-Z_]+) (?:"([^"]*)" )?\[(\d+-\d*)\] -->#';
+
+ if(!$INFO['writable'] || !$show || $INFO['rev']){
+ return preg_replace($regexp,'',$text);
+ }
+
+ return preg_replace_callback($regexp,
+ 'html_secedit_button', $text);
}
/**
- * inserts section edit buttons if wanted or removes the markers
+ * prepares section edit button data for event triggering
+ * used as a callback in html_secedit
*
+ * @triggers HTML_SECEDIT_BUTTON
* @author Andreas Gohr <andi@splitbrain.org>
*/
-function html_secedit($text,$show=true){
+function html_secedit_button($matches){
+ $data = array('secid' => $matches[1],
+ 'target' => strtolower($matches[2]),
+ 'range' => $matches[count($matches) - 1]);
+ if (count($matches) === 5) {
+ $data['name'] = $matches[3];
+ }
+
+ return trigger_event('HTML_SECEDIT_BUTTON', $data,
+ 'html_secedit_get_button');
+}
+
+/**
+ * prints a section editing button
+ * used as default action form HTML_SECEDIT_BUTTON
+ *
+ * @author Adrian Lang <lang@cosmocode.de>
+ */
+function html_secedit_get_button($data) {
+ global $ID;
global $INFO;
- $regexp = '#<!-- ([A-Z]+) (?:"(.*)" )?\[(\d+-\d*)\] -->#';
+ if (!isset($data['name']) || $data['name'] === '') return;
- if($INFO['writable'] && $show && !$INFO['rev']){
- $text = preg_replace_callback($regexp,
- 'html_secedit_button', $text);
- }else{
- $text = preg_replace($regexp,'',$text);
- }
+ $name = $data['name'];
+ unset($data['name']);
+
+ $secid = $data['secid'];
+ unset($data['secid']);
- return $text;
+ return "<div class='secedit editbutton_" . $data['target'] .
+ " editbutton_" . $secid . "'>" .
+ html_btn('secedit', $ID, '',
+ array_merge(array('do' => 'edit',
+ 'rev' => $INFO['lastmod']), $data),
+ 'post', $name) . '</div>';
}
/**
@@ -354,7 +369,7 @@ function html_search(){
print html_wikilink(':'.$id,useHeading('navigation')?null:$id,$regex);
if($cnt !== 0){
print ': <span class="search_cnt">'.$cnt.' '.$lang['hits'].'</span><br />';
- if($num < 15){ // create snippets for the first number of matches only #FIXME add to conf ?
+ if($num < FT_SNIPPET_NUMBER){ // create snippets for the first number of matches only
print '<div class="search_snippet">'.ft_snippet($id,$regex).'</div>';
}
$num++;
@@ -1105,76 +1120,105 @@ function html_updateprofile(){
/**
* Preprocess edit form data
*
- * @triggers HTML_PAGE_FROMTEMPLATE
* @author Andreas Gohr <andi@splitbrain.org>
*/
-function html_edit($text=null,$include='edit'){ //FIXME: include needed?
+function html_edit(){
global $ID;
global $REV;
global $DATE;
- global $RANGE;
global $PRE;
global $SUF;
global $INFO;
global $SUM;
global $lang;
global $conf;
+ global $TEXT;
- //set summary default
- if(!$SUM){
- if($REV){
- $SUM = $lang['restored'];
- }elseif(!$INFO['exists']){
- $SUM = $lang['created'];
- }
- }
-
- //no text? Load it!
- if(!isset($text)){
- $pr = false; //no preview mode
- if($INFO['exists']){
- if($RANGE){
- list($PRE,$text,$SUF) = rawWikiSlices($RANGE,$ID,$REV);
- }else{
- $text = rawWiki($ID,$REV);
- }
- $check = md5($text);
- $mod = false;
- }else{
- //try to load a pagetemplate
- $data = array($ID);
- $text = trigger_event('HTML_PAGE_FROMTEMPLATE',$data,'pageTemplate',true);
- $check = md5('');
- $mod = $text!=='';
- }
- }else{
- $pr = true; //preview mode
- if (isset($_REQUEST['changecheck'])) {
- $check = $_REQUEST['changecheck'];
- $mod = md5($text)!==$check;
- } else {
- // Why? Assume default text is unmodified.
- $check = md5($text);
- $mod = false;
- }
+ if (isset($_REQUEST['changecheck'])) {
+ $check = $_REQUEST['changecheck'];
+ } elseif(!$INFO['exists']){
+ // $TEXT has been loaded from page template
+ $check = md5('');
+ } else {
+ $check = md5($TEXT);
}
+ $mod = md5($TEXT) !== $check;
$wr = $INFO['writable'] && !$INFO['locked'];
+ $include = 'edit';
if($wr){
- if ($REV) print p_locale_xhtml('editrev');
- print p_locale_xhtml($include);
+ if ($REV) $include = 'editrev';
}else{
// check pseudo action 'source'
if(!actionOK('source')){
msg('Command disabled: source',-1);
return;
}
- print p_locale_xhtml('read');
+ $include = 'read';
}
- if(!$DATE) $DATE = $INFO['lastmod'];
- $data = compact('wr', 'text', 'mod', 'check');
+ global $license;
+
+ $form = new Doku_Form(array('id' => 'dw__editform'));
+ $form->addHidden('id', $ID);
+ $form->addHidden('rev', $REV);
+ $form->addHidden('date', $DATE);
+ $form->addHidden('prefix', $PRE);
+ $form->addHidden('suffix', $SUF);
+ $form->addHidden('changecheck', $check);
+
+ $data = compact('wr', 'form');
+ $data['media_manager'] = true;
+ $data['intro_locale'] = $include;
trigger_event('HTML_EDIT_FORMSELECTION', $data, 'html_edit_form', true);
+ if (isset($data['intro_locale'])) {
+ echo p_locale_xhtml($data['intro_locale']);
+ }
+
+ $form->addElement(form_makeOpenTag('div', array('id'=>'wiki__editbar')));
+ $form->addElement(form_makeOpenTag('div', array('id'=>'size__ctl')));
+ $form->addElement(form_makeCloseTag('div'));
+ if ($wr) {
+ $form->addElement(form_makeOpenTag('div', array('class'=>'editButtons')));
+ $form->addElement(form_makeButton('submit', 'save', $lang['btn_save'], array('id'=>'edbtn__save', 'accesskey'=>'s', 'tabindex'=>'4')));
+ $form->addElement(form_makeButton('submit', 'preview', $lang['btn_preview'], array('id'=>'edbtn__preview', 'accesskey'=>'p', 'tabindex'=>'5')));
+ $form->addElement(form_makeButton('submit', 'draftdel', $lang['btn_cancel'], array('tabindex'=>'6')));
+ $form->addElement(form_makeCloseTag('div'));
+ $form->addElement(form_makeOpenTag('div', array('class'=>'summary')));
+ $form->addElement(form_makeTextField('summary', $SUM, $lang['summary'], 'edit__summary', 'nowrap', array('size'=>'50', 'tabindex'=>'2')));
+ $elem = html_minoredit();
+ if ($elem) $form->addElement($elem);
+ $form->addElement(form_makeCloseTag('div'));
+ }
+ $form->addElement(form_makeCloseTag('div'));
+ if($wr && $conf['license']){
+ $form->addElement(form_makeOpenTag('div', array('class'=>'license')));
+ $out = $lang['licenseok'];
+ $out .= '<a href="'.$license[$conf['license']]['url'].'" rel="license" class="urlextern"';
+ if(isset($conf['target']['extern'])) $out .= ' target="'.$conf['target']['extern'].'"';
+ $out .= '> '.$license[$conf['license']]['name'].'</a>';
+ $form->addElement($out);
+ $form->addElement(form_makeCloseTag('div'));
+ }
+
+ if ($wr) {
+ // sets changed to true when previewed
+ echo '<script type="text/javascript" charset="utf-8"><!--//--><![CDATA[//><!--';
+ echo 'textChanged = ' . ($mod ? 'true' : 'false');
+ echo '//--><!]]></script>';
+ } ?>
+ <div style="width:99%;">
+
+ <div class="toolbar">
+ <div id="draft__status"><?php if(!empty($INFO['draft'])) echo $lang['draftdate'].' '.dformat();?></div>
+ <div id="tool__bar"><?php if ($wr && $data['media_manager']){?><a href="<?php echo DOKU_BASE?>lib/exe/mediamanager.php?ns=<?php echo $INFO['namespace']?>"
+ target="_blank"><?php echo $lang['mediaselect'] ?></a><?php }?></div>
+
+ </div>
+ <?php
+
+ html_form('edit', $form);
+ print '</div>'.NL;
}
/**
@@ -1185,70 +1229,11 @@ function html_edit($text=null,$include='edit'){ //FIXME: include needed?
* @triggers HTML_EDITFORM_OUTPUT
*/
function html_edit_form($param) {
+ global $TEXT;
extract($param);
- global $conf;
- global $license;
- global $lang;
- global $REV;
- global $DATE;
- global $PRE;
- global $SUF;
- global $INFO;
- global $SUM;
- global $ID;
- ?>
- <?php if($wr){?>
- <script type="text/javascript" charset="utf-8"><!--//--><![CDATA[//><!--
- <?php /* sets changed to true when previewed */?>
- textChanged = <?php ($mod) ? print 'true' : print 'false' ?>;
- //--><!]]></script>
- <?php } ?>
- <div style="width:99%;">
-
- <div class="toolbar">
- <div id="draft__status"><?php if(!empty($INFO['draft'])) echo $lang['draftdate'].' '.dformat();?></div>
- <div id="tool__bar"><?php if($wr){?><a href="<?php echo DOKU_BASE?>lib/exe/mediamanager.php?ns=<?php echo $INFO['namespace']?>"
- target="_blank"><?php echo $lang['mediaselect'] ?></a><?php }?></div>
-
- </div>
- <?php
- $form = new Doku_Form(array('id' => 'dw__editform'));
- $form->addHidden('id', $ID);
- $form->addHidden('rev', $REV);
- $form->addHidden('date', $DATE);
- $form->addHidden('prefix', $PRE);
- $form->addHidden('suffix', $SUF);
- $form->addHidden('changecheck', $check);
- $attr = array('tabindex'=>'1');
- if (!$wr) $attr['readonly'] = 'readonly';
- $form->addElement(form_makeWikiText($text, $attr));
- $form->addElement(form_makeOpenTag('div', array('id'=>'wiki__editbar')));
- $form->addElement(form_makeOpenTag('div', array('id'=>'size__ctl')));
- $form->addElement(form_makeCloseTag('div'));
- if ($wr) {
- $form->addElement(form_makeOpenTag('div', array('class'=>'editButtons')));
- $form->addElement(form_makeButton('submit', 'save', $lang['btn_save'], array('id'=>'edbtn__save', 'accesskey'=>'s', 'tabindex'=>'4')));
- $form->addElement(form_makeButton('submit', 'preview', $lang['btn_preview'], array('id'=>'edbtn__preview', 'accesskey'=>'p', 'tabindex'=>'5')));
- $form->addElement(form_makeButton('submit', 'draftdel', $lang['btn_cancel'], array('tabindex'=>'6')));
- $form->addElement(form_makeCloseTag('div'));
- $form->addElement(form_makeOpenTag('div', array('class'=>'summary')));
- $form->addElement(form_makeTextField('summary', $SUM, $lang['summary'], 'edit__summary', 'nowrap', array('size'=>'50', 'tabindex'=>'2')));
- $elem = html_minoredit();
- if ($elem) $form->addElement($elem);
- $form->addElement(form_makeCloseTag('div'));
- }
- $form->addElement(form_makeCloseTag('div'));
- if($wr && $conf['license']){
- $form->addElement(form_makeOpenTag('div', array('class'=>'license')));
- $out = $lang['licenseok'];
- $out .= '<a href="'.$license[$conf['license']]['url'].'" rel="license" class="urlextern"';
- if(isset($conf['target']['external'])) $out .= ' target="'.$conf['target']['external'].'"';
- $out .= '> '.$license[$conf['license']]['name'].'</a>';
- $form->addElement($out);
- $form->addElement(form_makeCloseTag('div'));
- }
- html_form('edit', $form);
- print '</div>'.NL;
+ $attr = array('tabindex'=>'1');
+ if (!$wr) $attr['readonly'] = 'readonly';
+ $form->addElement(form_makeWikiText($TEXT, $attr));
}
/**