diff options
Diffstat (limited to 'inc/html.php')
-rw-r--r-- | inc/html.php | 263 |
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)); } /** |