\$args "; print_r($args); echo ""; //DEBUG $EditSource = (isset($args['source'])) ? $args['source'] : $pagename; $target = (isset($args['target'])) ? $args['target'] : $EditSource; $prefix = (isset($args['prefix']) ? $args['prefix'] : ''); $section = (isset($args['section']) ? urldecode($args['section']) : ''); //open targetpage, get section, set InputValues for 'text' control $fulltarget = $target.$section; $EditTarget = MakePagename($pagename, $target); $page = RetrieveAuthPage($EditTarget, $FoxAuth, true); if (!$page) Abort( "?cannot read $page"); $text = $page['text']; //check if we got fullpage edit if ($section=='') { $mode = 'section'; if (PageExists($FoxEditPageSectionForm)) $formpage = $FoxEditPageSectionForm; //default can open whole page for editing } //check if we got anchored section, else section is ptv else { if (strstr($section,'#')) { $mode = 'section'; $fts = FoxTextSection($page['text'], $fulltarget); if ($fts['pos']==0) FoxAbort($pagename,"$[Error: cannot find section] '$EditSection'"); $text = $fts['text']; $formpage = $FoxEditPageSectionForm; } else { $mode = 'ptv'; $QualifyPatterns = NULL; //prevent substitutions by Qualify function $text = PageTextVar($EditSource, $section); $formpage = $FoxEditPTVSectionForm; } } //check if we should use a specified form if (isset($args['form'])) { $formpage = $args['form']; if ($section=='') $mode = ''; //no $mode since it could be whole page edit or ptv edit } //get text for insertion in editform textarea if ($InputValues['text']) $EditText = $InputValues['text']; else $EditText = $InputValues['text'] = str_replace('$','$',htmlspecialchars($text,ENT_NOQUOTES)); //set global $EditSection $EditSection = $prefix.$section; //retrieve edit form from page or page section if ($formpage) { $formname = MakePagename($pagename,$formpage); if (PageExists($formname)) { $epage = RetrieveAuthPage($formname, 'read', true); if (!$epage) Abort( "?cannot read $formname"); $eform = $epage['text']; if ($eform=='') FoxAbort($pagename,"$[Error: cannot find edit form] $formpage"); if (strstr($formpage,'#')) { $sect = FoxTextSection($epage['text'], $formpage); if ($sect['pos']==0) FoxAbort($pagename,"$[Error: cannot find edit template] $formpage"); $eform = $sect['text']; } if (IsEnabled($EnableFoxEditFormCheck, 1)) { //check if edit form is the right type if (preg_match("/\\(:input\\s+([^\\)]+)\\s*name\\=\\$:/",$eform)) { if ($mode=='section') Abort( "Error: wrong PTV name in foxedit link or edit form not suitable for PTV editing!"); #FoxAbort($pagename, "Error: wrong PTV name in foxedit link or edit form not suitable for PTV editing!"); } else if ($mode=='ptv') Abort("Error: wrong section name in foxedit link or edit form not suitable for section editing!"); #FoxAbort($pagename, "Error: wrong section name in foxedit link or edit form not suitable for section editing!"); } } } //we got no form page, so use hardcoded basic form, either for ptv or section edit else { if ($mode=='ptv') $eform = "(:fox eform ptvtarget=$target template=0 redirect=1:)"; else $eform = "(:fox eform foxaction=replace put=overwrite target=$fulltarget :)" ."\n(:foxtemplate \"{\$\$text}\":)"; $eform .= "\n(:input hidden csum 'Section edited':)" ."\n'''Editing $target section $section'''" ."(:input defaults source={$EditSource}:)"; if ($mode=='ptv') $eform .= Keep("

"); else $eform .= Keep("

"); $eform .= "\n(:input submit post '$[Save]':)   (:input submit cancel '$[Cancel]':)" ."\n(:foxend eform:)"; } $FmtV['$FoxEditFrm'] = MarkupToHTML($pagename, $eform); $FoxPageEditFmt = '$FoxEditFrm'; $HandleEditFmt = array(&$PageStartFmt, &$FoxPageEditFmt, &$PageEndFmt); PrintFmt($pagename, $HandleEditFmt); exit; } //}}} Markup('foxeditlink','directives','/\\{\\[foxedit\\s*(.*?)\\s*\\]\\}/', "FoxEditLinkMarkup"); // make {[foxedit...]} link HTML function FoxEditLinkMarkup ($m) { extract($GLOBALS['MarkupToHTML']); $PageUrl = PageVar($pagename, '$PageUrl'); $args = ParseArgs($m[1]); $args[''] = (array)@$args['']; $section = (isset($args['section'])) ? $args['section'] : array_shift($args['']); $section = urlencode($section); $form = isset($args['form']) ? urlencode($args['form']) : ''; $label = (isset($args['label'])) ? $args['label'] : array_shift($args['']); $target = (isset($args['target'])) ? MakePageName($pagename,$args['target']) : ''; $source = (isset($args['source'])) ? MakePageName($pagename,$args['source']) : ''; if(!$label) $label = XL('Edit'); $url = "{$PageUrl}?action=foxedit". ($source ? "&source={$source}" : ""). ($target ? "&target={$target}" : ""). ($form ? "&form={$form}" : ""). (isset($args['prefix']) ? "&prefix={$args['prefix']}" : ""). ($section ? "&section={$section}" : ""); $out = "{$label}"; return Keep($out); } //}}} //make argument array out of url parameters function FoxURLArgs($pn) { @session_start(); $_SESSION['foxedit'][$pn] = array(); //get url if ($_SERVER["HTTPS"] == "on") $pageURL .= "https://"; else $pageURL .= "http://"; if ($_SERVER["SERVER_PORT"] != "80") $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; else $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; //use only argument string (form first ?), process it $args = strstr(strip_tags(urldecode($pageURL)),'?'); $args = str_replace('?',' ',$args); $args = str_replace('&',' ',$args); $args = htmlentities($args); //just to be safe... //make into array $args = ParseArgs($args); unset($args['#']); //save as SESSION var $_SESSION['foxedit'][$pn] = $args; return $args; } //}}}