I almost works perfectly, appart from what I already mentioned. I already 
had downloaded it before it was removed, but it's good to have it in 
another place. Just in case.
Thanks.


Le vendredi 5 décembre 2014 15:18:06 UTC+1, Dan a écrit :
>
> If you need help setting up either webhooks, or toolmapping let me know.  
> I've also attached the old sedit script if it gives you some ideas. Haven't 
> tried it--might come close to working as it is. You could easily change the 
> markup that triggers the section marker from !! Header to [[#anchor]]. 
>
> Don't have time right now to revise this myself, but if you get stuck, let 
> me know. I can get to it early next week.
>
> Cheers,
> Dan
>
> On Fri Dec 05 2014 at 7:38:20 AM Tiffany Grenier <[email protected] 
> <javascript:>> wrote:
>
>> Hi again,
>>
>> I totally get your points. About the complexity, I think that the part of 
>> code in these functions that is currently dealing with anchors could be 
>> externalized. Then I would simply have to use a webhooks for this. That's 
>> the way I will explore now :-)
>> I also wanted to rewrite the sedit plugin later on with the use again of 
>> its own "read/write" functions... but in a way that they would now 
>> introduce start and end anchors. My main issue with the current way of 
>> dealing with anchors, which also would also mess up sedit in the way you 
>> would see it, is the following: let's simply suppose there is an anchor 
>> [[#a]] in the section I want... then I would be unable to edit the entirery 
>> of my section, since it would start at [[#section1]] and stop at [[#a]], 
>> which comes before the end of the section!
>>
>> Cheers,
>> Tiffany
>>
>> Le jeudi 20 novembre 2014 08:18:14 UTC+1, Tiffany Grenier a écrit :
>>
>>> Hi,
>>> As promised some time ago, I have been working on a refactoring of sedit 
>>> in order to extend it to editing anything between two given anchors, and 
>>> not only between two section titles.
>>> If this were included into the core scripts, then the sedit plugin would 
>>> only be a matter of inserting fake anchors at the beginning and ending of 
>>> each section, thus even allowing to edit any level of sections one could 
>>> wish.
>>>
>>> There it goes (I modified source and loadpage as well as savepage in 
>>> order to be able to display as well as edit):
>>>
>>> function BOLTFsource($args) {
>>>     global $pageLink, $BOLTid, $BOLTcommands, $BOLTsession;
>>>     if (! is_array($args)) $args = BOLTargs($args);
>>>     if (isset($args['post']) && isset($_POST[$args['post']])) return 
>>> BOLTescape(htmlspecialchars($_POST[$args['post']]));
>>>     if (isset($args['cookie']) && isset($_COOKIE[$args['cookie']])) 
>>> return BOLTescape(htmlspecialchars($_COOKIE[$args['cookie']]));
>>>     if (isset($args['get']) && isset($_GET[$args['get']])) return 
>>> BOLTescape(htmlspecialchars($_GET[$args['get']]));
>>>     if (isset($BOLTcommands[$args['command']])) return 
>>> $BOLTcommands[$args['command']];
>>>     $page = BOLTinit($args[1], $args['page']);
>>>     if ($page == '') return; 
>>>     if (strpos($page, ':') !== false) {
>>>         $data = substr($page, strpos($page, ':'));
>>>         $page = substr($page, 0, strpos($page, ':'));
>>>         }
>>>     if (strpos($page, '#') !== false) {
>>>         $anchors = substr($page, strpos($page, '#'));
>>>         $page = substr($page, 0, strpos($page, '#'));
>>>         if (strrpos($anchors, '#',strpos($anchors, '#')+1) !== false) {
>>>             $lastanchor = substr($anchors, strrpos($anchors, '#'));
>>>             $firstanchor = substr($anchors, 0, strpos($anchors, 
>>> $lastanchor));
>>>             }
>>>         else {
>>>             $firstanchor = $anchors;
>>>             $lastanchor = '';
>>>             }
>>>         }
>>>     $page = BOLTpageshortcuts($page);
>>>     if (BOLTfilter($page, 'page') == '') return;
>>>     if (BOLTauth($page, $BOLTid, 'view') === false) 
>>> BOLTmessage("func_source_auth::$page", $args);
>>>     if ($data != '') {
>>>         if ($args['dir'] == 'stamps') $out = 
>>> BOLTvars("$page$firstanchor*$data");
>>>         else $out = BOLTvars("$page$firstanchor$data");
>>>         }
>>>     else {
>>>         if ($args['dir'] == 'stamps') $out = 
>>> BOLTloadpage("$page$firstanchor$lastanchor", 
>>> $args['dir']);
>>>         else $out = BOLTloadpage("$page$firstanchor$lastanchor");
>>>         if (isset($args['lines'])) $out = BOLTgetlines($out, 
>>> $args['lines']);
>>>         }
>>>     $out = BOLTescape($out, false);
>>>     $out = BOLTcharEncode($out, $args['fmt']);
>>>     if (trim($out) == '') return $args['default'];
>>>     if ($args['escape'] !== 'false') $out = BOLTescape($out);
>>>     BOLTmessage("func_source::$page", $args);
>>>     return $out;
>>>     }
>>>
>>>
>>> function BOLTloadpage($page, $dir='', $data='', $auth=false) {
>>> ## LOADS PAGE AT $LOCATION (PAGES/FILE NAME), RETURNS CONTENTS. SET 
>>> $DATA TO 'data' TO RETRIEVE DATA WITH PAGE TEXT
>>>     if (function_exists('myBOLTloadpage')) return myBOLTloadpage($page, 
>>> $dir, $data, $auth);
>>>     if ($auth) {
>>>         global $BOLTid;
>>>         if (BOLTauth($page, $BOLTid, 'view') == false) return;
>>>         }
>>>     if ($page == '') return;
>>>     global $systemPath, $BOLTpageStore, $BOLTpageLibraries;
>>>     if (strpos($page, "#") !== false) {
>>>         $anchors = substr($page, strpos($page, '#'));
>>>         $page = substr($page, 0, strpos($page, "#"));
>>>         if (strrpos($anchors, '#',strpos($anchors, '#')+1) !== false) {
>>>             $lastanchor = BOLTurl2utf(substr($anchors, strrpos($anchors, 
>>> '#')));
>>>             $firstanchor = BOLTurl2utf(substr($anchors, 0, 
>>> strpos($anchors, $lastanchor)));
>>>             }
>>>         else {
>>>             $firstanchor = BOLTurl2utf($anchors);
>>>             $lastanchor = '#';
>>>             }
>>>         }
>>>     if ($dir == '' && $BOLTpageLibraries != '') {  // checks for pages 
>>> outside of pages folder...
>>>         $index = substr($page, 0, strpos($page, '.'));
>>>         if (isset($BOLTpageLibraries[$index])) $dir = 
>>> $BOLTpageLibraries[$index];
>>>         }
>>>     if ($page != 'site.config' && $page != 'site.folders') {
>>>         $page = strtolower(BOLTutf2url($page));
>>>         $fpage = BOLTfolders($page);
>>>         }
>>>     else $fpage = $page;
>>>     if ($dir != '') {
>>>         $location = "$dir/$page";
>>>         if (file_exists($location) == false) return;
>>>         }
>>>     elseif (file_exists("pages/$fpage")) $location = "pages/$fpage";
>>>     elseif (file_exists("$systemPath/$page")) $location = 
>>> "$systemPath/$page";
>>>     else return;
>>>     if ($dir != '' || ($BOLTpageStore[$page] == '' && 
>>> filesize($location) > 0)) {
>>>         $handle = fopen($location, "rb");
>>>         $contents = fread($handle, filesize($location));
>>>         fclose($handle);
>>>         $BOLTpageStore[$page] = str_replace(Array("\r\n", "\r"), "\n", 
>>> $contents);
>>>         }
>>>     $out = $BOLTpageStore[$page];
>>>     if ($data != 'data' && strpos($out, "\n~data~\n") !== false) {
>>>         $out = substr($out, 0, strpos($out, "\n~data~\n"));
>>>         $out = str_replace('&#126;', '~', $out);
>>>         if (substr($page, 0, 5) != 'code.') $out = str_replace('<', 
>>> '&lt;', $out);
>>>         }
>>>     if (isset($firstanchor)) {
>>>         if ($firstanchor == '#') {
>>>             if (strpos($out, '[['.$lastanchor) !== false) return 
>>> substr($out, 0, strpos($out, '[['.$lastanchor));
>>>             return $out;
>>>             }
>>>         elseif (preg_match('/\[\['.$firstanchor.'(\|.+)?\]\]/', $out, 
>>> $matches) == 1) {
>>>             $out = substr($out, strpos($out, $matches[0]) + 
>>> strlen($matches[0]));
>>>             if (strpos($out, '[['.$lastanchor) !== false) return 
>>> substr($out, 0, strpos($out, '[['.$lastanchor));
>>>             return $out;
>>>             }
>>>         return;
>>>         }
>>>     return $out;
>>>     }
>>>
>>>
>>> function BOLTsavepage($page, $newcontent='', $newdata='', $loadtime='') {
>>> ## SYSTEM FUNCTION FOR SAVING PAGES, SECURES AGAINST DISALLOWED CODE
>>>     if (function_exists('myBOLTsavepage')) return myBOLTsavepage($page, 
>>> $newcontent, $newdata, $loadtime);
>>>     global $systemPath, $BOLTsession, $BOLTpageStore, $lastedit,  
>>> $pageLink, $BOLTindexPages;
>>>     if($loadtime == '') $loadtime = time();
>>>     if (strpos($page, '#') !== false) { // Note: can't find 
>>> [[#anchor|label]], just [[#anchor]]
>>>         $anchors = substr($page, strpos($page, '#'));
>>>         if (strrpos($anchors, '#',strpos($anchors, '#')+1) !== false) {
>>>             $lastanchor = '[[' . BOLTurl2utf(substr($anchors, 
>>> strrpos($anchors, '#'))) . ']]';
>>>             $firstanchor = '[[' . BOLTurl2utf(substr($anchors, 0, 
>>> strrpos($anchors, '#',strpos($anchors, '#')+1))) . ']]';
>>>             }
>>>         else {
>>>             $firstanchor = '[[' . BOLTurl2utf($anchors) . ']]';
>>>             $lastanchor = '[[#';
>>>             }
>>>             $page = BOLTutf2url(substr($page, 0, strpos($page, '#')));
>>>         }
>>>     $page = BOLTfilter(strtolower($page), 'page');
>>>     if ($page == '') BOLTabort('invalid_page_name');
>>>     $fpage = BOLTfolders($page);
>>>     if (file_exists("pages/$fpage")) {
>>>         $getpage = BOLTloadpage($page, '', 'data');
>>>         if (strpos($getpage, "\n~data~\n") !== false) {
>>>             $data = substr($getpage, strpos($getpage, "\n~data~\n"));
>>>             $oldcontent = substr($getpage, 0, strpos($getpage, 
>>> "\n~data~\n"));
>>>             }
>>>         else $oldcontent = $getpage;
>>>         }
>>>     if ($newdata != '') $data = $newdata;  // newdata must already be 
>>> formatted...
>>>     if ($newcontent != '') {
>>>         $newcontent = BOLTsafetext($newcontent, $page);
>>>         if ($firstanchor != '') {
>>>             if (strpos($oldcontent, $firstanchor) === false) {
>>>                 $content = $oldcontent . "\n$firstanchor\n" . 
>>> $newcontent;
>>>                 if($lastanchor != '[[#') {
>>>                     $content .= $lastanchor;
>>>                     }
>>>                 }
>>>             else {
>>>                 $before = substr($oldcontent, 0, strpos($oldcontent, 
>>> $firstanchor));
>>>                 $start = substr($oldcontent, strpos($oldcontent, 
>>> $firstanchor) + strlen($firstanchor));
>>>                 if (strpos($start, $lastanchor) !== false) $after = 
>>> substr($start, strpos($start, $lastanchor));//$lastanchor already belongs 
>>> to $after
>>>                 else {
>>>                     $after = '';
>>>                     if($lastanchor != '[[#') {
>>>                         $after = $lastanchor.$after;
>>>                         }
>>>                     }
>>>                 $content = $before . "\n" . $firstanchor . "\n" . 
>>> $newcontent . $after;
>>>                 }
>>>             }
>>>         else $content = $newcontent;
>>>         $content = trim($content);
>>>         }
>>>     else $content = $oldcontent;
>>>     if ($content != $oldcontent) {
>>>         if (substr($content, -8) == "\n~data~\n") $content = 
>>> substr($content, 0, -8); // is this necessary?
>>>         if ($loadtime != '' && file_exists("pages/$fpage")) {
>>>             $lastmodified = filemtime("pages/$fpage") + 
>>> BOLTconfig('localTime', 0) * 3600;
>>>             if (is_int($loadtime) && $loadtime < $lastmodified) {
>>>                 $out = "<box>\n" . 'Page $1 has been modified by another 
>>> user ('.strftime("%c",$lastmodified).') and their changes may have been 
>>> overwritten. Click [[$1&action=undo|+]] to view changed content.' . 
>>> "\n</box>\n\n";
>>>                 $out = str_replace('$1', $page, $out);
>>>                 $content = $out.$content;
>>>                 }
>>>             }
>>>         }
>>>     if ($oldcontent == '' || $content != $oldcontent || $date != 
>>> $newdata) {//allow creation of new page but avoid unecessary writing into 
>>> file
>>>         $mypage = fopen("pages/$fpage", "wb");
>>>         fwrite($mypage, $content.$data);
>>>         fclose($mypage);
>>>         }
>>>     $BOLTindexPages[] = $page;
>>>     $BOLTpageStore[$page] = $content.$data;
>>>     clearstatcache();
>>>     }
>>>
>>>
>>> I think one can do a bit of generalization from this, but did not yet 
>>> figure out how to shorten these functions. Any help or thought wil be 
>>> highly appreciated.
>>>
>>> Cheers,
>>> Tiffany
>>>
>>
>>
>> Le mercredi 26 novembre 2014 17:58:14 UTC+1, Dan a écrit :
>>>
>>> I've been looking at this for a while and decided not to implement these 
>>> in the core, for several reasons: 
>>>
>>> 1) it seems to introduce a level of complexity I'm not comfortable with.
>>>
>>> 2) there are easy webhooks for the loadpage and save page functions, and 
>>> you can use toolmapping for the source function. In other words, you should 
>>> be able to get full plug and play functionality in your plugin without 
>>> requiring a change in the core.
>>>
>>> If you are not sure how to do either webhooks or toolmapping, let me 
>>> know.
>>>
>>> Also, if I recall correctly, the sedit plugin worked differently 
>>> anyway--with it's own read and write functions, so you didn't even have to 
>>> use anchors. I'd be happy to either tinker with it and get it back up to 
>>> speed, or send you the old scripts if you want to look at them. 
>>>
>>> If I were to redo it now that BoltWire has the capability of editing 
>>> sections in the core I'd be inclined to try something like this:
>>>
>>> [[#section1]] Some Section
>>> text
>>> text
>>>
>>> Then write a markup rule which simply converts the first line into code 
>>> like the following:
>>>
>>> [[#section1]]
>>> !! Some Section
>>> [[{p}&action=sedit&section=section1|Edit Section]]
>>> text
>>> text
>>>
>>> That would take just a handful of lines and be easy enough to deploy. 
>>> Lot's of ways to tweak it too based on what you want, just thinking out 
>>> loud.
>>>
>>> Let me know what you think? I'd like to see a good section edit plugin 
>>> back in the extensions area...
>>>
>>> Cheers,
>>> Dan
>>>
>>>
>>>
>>>
>>> On Thu Nov 20 2014 at 1:18:15 AM Tiffany Grenier <[email protected]> 
>>> wrote:
>>>
>> Hi,
>>>> As promised some time ago, I have been working on a refactoring of 
>>>> sedit in order to extend it to editing anything between two given anchors, 
>>>> and not only between two section titles.
>>>> If this were included into the core scripts, then the sedit plugin 
>>>> would only be a matter of inserting fake anchors at the beginning and 
>>>> ending of each section, thus even allowing to edit any level of sections 
>>>> one could wish.
>>>>
>>>> There it goes (I modified source and loadpage as well as savepage in 
>>>> order to be able to display as well as edit):
>>>>
>>>> function BOLTFsource($args) {
>>>>     global $pageLink, $BOLTid, $BOLTcommands, $BOLTsession;
>>>>     if (! is_array($args)) $args = BOLTargs($args);
>>>>     if (isset($args['post']) && isset($_POST[$args['post']])) return 
>>>> BOLTescape(htmlspecialchars($_POST[$args['post']]));
>>>>     if (isset($args['cookie']) && isset($_COOKIE[$args['cookie']])) 
>>>> return BOLTescape(htmlspecialchars($_COOKIE[$args['cookie']]));
>>>>     if (isset($args['get']) && isset($_GET[$args['get']])) return 
>>>> BOLTescape(htmlspecialchars($_GET[$args['get']]));
>>>>     if (isset($BOLTcommands[$args['command']])) return 
>>>> $BOLTcommands[$args['command']];
>>>>     $page = BOLTinit($args[1], $args['page']);
>>>>     if ($page == '') return; 
>>>>     if (strpos($page, ':') !== false) {
>>>>         $data = substr($page, strpos($page, ':'));
>>>>         $page = substr($page, 0, strpos($page, ':'));
>>>>         }
>>>>     if (strpos($page, '#') !== false) {
>>>>         $anchors = substr($page, strpos($page, '#'));
>>>>         $page = substr($page, 0, strpos($page, '#'));
>>>>         if (strrpos($anchors, '#',strpos($anchors, '#')+1) !== false) {
>>>>             $lastanchor = substr($anchors, strrpos($anchors, '#'));
>>>>             $firstanchor = substr($anchors, 0, strpos($anchors, 
>>>> $lastanchor));
>>>>             }
>>>>         else {
>>>>             $firstanchor = $anchors;
>>>>             $lastanchor = '';
>>>>             }
>>>>         }
>>>>     $page = BOLTpageshortcuts($page);
>>>>     if (BOLTfilter($page, 'page') == '') return;
>>>>     if (BOLTauth($page, $BOLTid, 'view') === false) 
>>>> BOLTmessage("func_source_auth::$page", $args);
>>>>     if ($data != '') {
>>>>         if ($args['dir'] == 'stamps') $out = 
>>>> BOLTvars("$page$firstanchor*$data");
>>>>         else $out = BOLTvars("$page$firstanchor$data");
>>>>         }
>>>>     else {
>>>>         if ($args['dir'] == 'stamps') $out = 
>>>> BOLTloadpage("$page$firstanchor$lastanchor", 
>>>> $args['dir']);
>>>>         else $out = BOLTloadpage("$page$firstanchor$lastanchor");
>>>>         if (isset($args['lines'])) $out = BOLTgetlines($out, 
>>>> $args['lines']);
>>>>         }
>>>>     $out = BOLTescape($out, false);
>>>>     $out = BOLTcharEncode($out, $args['fmt']);
>>>>     if (trim($out) == '') return $args['default'];
>>>>     if ($args['escape'] !== 'false') $out = BOLTescape($out);
>>>>     BOLTmessage("func_source::$page", $args);
>>>>     return $out;
>>>>     }
>>>>
>>>>
>>>> function BOLTloadpage($page, $dir='', $data='', $auth=false) {
>>>> ## LOADS PAGE AT $LOCATION (PAGES/FILE NAME), RETURNS CONTENTS. SET 
>>>> $DATA TO 'data' TO RETRIEVE DATA WITH PAGE TEXT
>>>>     if (function_exists('myBOLTloadpage')) return 
>>>> myBOLTloadpage($page, $dir, $data, $auth);
>>>>     if ($auth) {
>>>>         global $BOLTid;
>>>>         if (BOLTauth($page, $BOLTid, 'view') == false) return;
>>>>         }
>>>>     if ($page == '') return;
>>>>     global $systemPath, $BOLTpageStore, $BOLTpageLibraries;
>>>>     if (strpos($page, "#") !== false) {
>>>>         $anchors = substr($page, strpos($page, '#'));
>>>>         $page = substr($page, 0, strpos($page, "#"));
>>>>         if (strrpos($anchors, '#',strpos($anchors, '#')+1) !== false) {
>>>>             $lastanchor = BOLTurl2utf(substr($anchors, 
>>>> strrpos($anchors, '#')));
>>>>             $firstanchor = BOLTurl2utf(substr($anchors, 0, 
>>>> strpos($anchors, $lastanchor)));
>>>>             }
>>>>         else {
>>>>             $firstanchor = BOLTurl2utf($anchors);
>>>>             $lastanchor = '#';
>>>>             }
>>>>         }
>>>>     if ($dir == '' && $BOLTpageLibraries != '') {  // checks for pages 
>>>> outside of pages folder...
>>>>         $index = substr($page, 0, strpos($page, '.'));
>>>>         if (isset($BOLTpageLibraries[$index])) $dir = 
>>>> $BOLTpageLibraries[$index];
>>>>         }
>>>>     if ($page != 'site.config' && $page != 'site.folders') {
>>>>         $page = strtolower(BOLTutf2url($page));
>>>>         $fpage = BOLTfolders($page);
>>>>         }
>>>>     else $fpage = $page;
>>>>     if ($dir != '') {
>>>>         $location = "$dir/$page";
>>>>         if (file_exists($location) == false) return;
>>>>         }
>>>>     elseif (file_exists("pages/$fpage")) $location = "pages/$fpage";
>>>>     elseif (file_exists("$systemPath/$page")) $location = 
>>>> "$systemPath/$page";
>>>>     else return;
>>>>     if ($dir != '' || ($BOLTpageStore[$page] == '' && 
>>>> filesize($location) > 0)) {
>>>>         $handle = fopen($location, "rb");
>>>>         $contents = fread($handle, filesize($location));
>>>>         fclose($handle);
>>>>         $BOLTpageStore[$page] = str_replace(Array("\r\n", "\r"), "\n", 
>>>> $contents);
>>>>         }
>>>>     $out = $BOLTpageStore[$page];
>>>>     if ($data != 'data' && strpos($out, "\n~data~\n") !== false) {
>>>>         $out = substr($out, 0, strpos($out, "\n~data~\n"));
>>>>         $out = str_replace('&#126;', '~', $out);
>>>>         if (substr($page, 0, 5) != 'code.') $out = str_replace('<', 
>>>> '&lt;', $out);
>>>>         }
>>>>     if (isset($firstanchor)) {
>>>>         if ($firstanchor == '#') {
>>>>             if (strpos($out, '[['.$lastanchor) !== false) return 
>>>> substr($out, 0, strpos($out, '[['.$lastanchor));
>>>>             return $out;
>>>>             }
>>>>         elseif (preg_match('/\[\['.$firstanchor.'(\|.+)?\]\]/', $out, 
>>>> $matches) == 1) {
>>>>             $out = substr($out, strpos($out, $matches[0]) + 
>>>> strlen($matches[0]));
>>>>             if (strpos($out, '[['.$lastanchor) !== false) return 
>>>> substr($out, 0, strpos($out, '[['.$lastanchor));
>>>>             return $out;
>>>>             }
>>>>         return;
>>>>         }
>>>>     return $out;
>>>>     }
>>>>
>>>>
>>>> function BOLTsavepage($page, $newcontent='', $newdata='', $loadtime='') 
>>>> {
>>>> ## SYSTEM FUNCTION FOR SAVING PAGES, SECURES AGAINST DISALLOWED CODE
>>>>     if (function_exists('myBOLTsavepage')) return 
>>>> myBOLTsavepage($page, $newcontent, $newdata, $loadtime);
>>>>     global $systemPath, $BOLTsession, $BOLTpageStore, $lastedit,  
>>>> $pageLink, $BOLTindexPages;
>>>>     if($loadtime == '') $loadtime = time();
>>>>     if (strpos($page, '#') !== false) { // Note: can't find 
>>>> [[#anchor|label]], just [[#anchor]]
>>>>         $anchors = substr($page, strpos($page, '#'));
>>>>         if (strrpos($anchors, '#',strpos($anchors, '#')+1) !== false) {
>>>>             $lastanchor = '[[' . BOLTurl2utf(substr($anchors, 
>>>> strrpos($anchors, '#'))) . ']]';
>>>>             $firstanchor = '[[' . BOLTurl2utf(substr($anchors, 0, 
>>>> strrpos($anchors, '#',strpos($anchors, '#')+1))) . ']]';
>>>>             }
>>>>         else {
>>>>             $firstanchor = '[[' . BOLTurl2utf($anchors) . ']]';
>>>>             $lastanchor = '[[#';
>>>>             }
>>>>             $page = BOLTutf2url(substr($page, 0, strpos($page, '#')));
>>>>         }
>>>>     $page = BOLTfilter(strtolower($page), 'page');
>>>>     if ($page == '') BOLTabort('invalid_page_name');
>>>>     $fpage = BOLTfolders($page);
>>>>     if (file_exists("pages/$fpage")) {
>>>>         $getpage = BOLTloadpage($page, '', 'data');
>>>>         if (strpos($getpage, "\n~data~\n") !== false) {
>>>>             $data = substr($getpage, strpos($getpage, "\n~data~\n"));
>>>>             $oldcontent = substr($getpage, 0, strpos($getpage, 
>>>> "\n~data~\n"));
>>>>             }
>>>>         else $oldcontent = $getpage;
>>>>         }
>>>>     if ($newdata != '') $data = $newdata;  // newdata must already be 
>>>> formatted...
>>>>     if ($newcontent != '') {
>>>>         $newcontent = BOLTsafetext($newcontent, $page);
>>>>         if ($firstanchor != '') {
>>>>             if (strpos($oldcontent, $firstanchor) === false) {
>>>>                 $content = $oldcontent . "\n$firstanchor\n" . 
>>>> $newcontent;
>>>>                 if($lastanchor != '[[#') {
>>>>                     $content .= $lastanchor;
>>>>                     }
>>>>                 }
>>>>             else {
>>>>                 $before = substr($oldcontent, 0, strpos($oldcontent, 
>>>> $firstanchor));
>>>>                 $start = substr($oldcontent, strpos($oldcontent, 
>>>> $firstanchor) + strlen($firstanchor));
>>>>                 if (strpos($start, $lastanchor) !== false) $after = 
>>>> substr($start, strpos($start, $lastanchor));//$lastanchor already belongs 
>>>> to $after
>>>>                 else {
>>>>                     $after = '';
>>>>                     if($lastanchor != '[[#') {
>>>>                         $after = $lastanchor.$after;
>>>>                         }
>>>>                     }
>>>>                 $content = $before . "\n" . $firstanchor . "\n" . 
>>>> $newcontent . $after;
>>>>                 }
>>>>             }
>>>>         else $content = $newcontent;
>>>>         $content = trim($content);
>>>>         }
>>>>     else $content = $oldcontent;
>>>>     if ($content != $oldcontent) {
>>>>         if (substr($content, -8) == "\n~data~\n") $content = 
>>>> substr($content, 0, -8); // is this necessary?
>>>>         if ($loadtime != '' && file_exists("pages/$fpage")) {
>>>>             $lastmodified = filemtime("pages/$fpage") + 
>>>> BOLTconfig('localTime', 0) * 3600;
>>>>             if (is_int($loadtime) && $loadtime < $lastmodified) {
>>>>                 $out = "<box>\n" . 'Page $1 has been modified by 
>>>> another user ('.strftime("%c",$lastmodified).') and their changes may 
>>>> have been overwritten. Click [[$1&action=undo|+]] to view changed 
>>>> content.' 
>>>> . "\n</box>\n\n";
>>>>                 $out = str_replace('$1', $page, $out);
>>>>                 $content = $out.$content;
>>>>                 }
>>>>             }
>>>>         }
>>>>     if ($oldcontent == '' || $content != $oldcontent || $date != 
>>>> $newdata) {//allow creation of new page but avoid unecessary writing into 
>>>> file
>>>>         $mypage = fopen("pages/$fpage", "wb");
>>>>         fwrite($mypage, $content.$data);
>>>>         fclose($mypage);
>>>>         }
>>>>     $BOLTindexPages[] = $page;
>>>>     $BOLTpageStore[$page] = $content.$data;
>>>>     clearstatcache();
>>>>     }
>>>>
>>>>
>>>> I think one can do a bit of generalization from this, but did not yet 
>>>> figure out how to shorten these functions. Any help or thought wil be 
>>>> highly appreciated.
>>>>
>>>> Cheers,
>>>> Tiffany
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "BoltWire" group.
>>>>
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>
>>>
>>>> Visit this group at http://groups.google.com/group/boltwire.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "BoltWire" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at http://groups.google.com/group/boltwire.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"BoltWire" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/boltwire.
For more options, visit https://groups.google.com/d/optout.

Reply via email to