Well, we have different ways of thinking, and I don't think one of us will 
change their point of view :-)
I don't want to make you change how Boltwire works, so let's stop there. 
Moreover, the next additions I have in mind are real plugins (a bunch of 
related new features that do more than simply improving a bit the core 
ones) and I will publish them as such.
About you suggestion of writing the following,
function myBOLTFbreadcrumb($args, $zone='') {
    if (some condition) return BOLTFbreadcrumb($args, $zone='');
    // my stuff...
    return $myOutput;
    }
I just feared that this would create infinite loops,since BOLTFbreadcrumb 
would tend to be immediately replaced by myBOLTFbreadcrumb... but it's 
apparently only when called from the content of a webpage :-D


Cheers,Tiffany

Le vendredi 3 octobre 2014 13:38:30 UTC+2, Dan a écrit :
>
> I'm not sure we are understanding each other.
>
> If you use the toolmap approach (or webhooks) like I suggested, you can 
> automatically dump any new upgrade over your system and none of your new 
> functionality should be lost. That's the whole point of the design. No need 
> for variant core code. No diff or merge required--and you always keep your 
> changes. 
>
> Neither plugins, config.php, or farm.php are overwritten by the core. Any 
> thing in those files will continue to work exactly as before whenever 
> BoltWire gets upgraded. 
>
> The other advantage of designing it as a normal proper plugin, is it makes 
> it easy to share with other users. :)  They just drop it into their plugins 
> folder and either enable it sitewide or for specific sections of their site 
> and it instantly works. And they can upgrade freely too without having to 
> worry about losing their plugin features. And they don't have to worry 
> about maintaining variant code on their system.
>
> As for your example, you CAN do it exactly as you posted. Or you can use 
> either of the following ways as well--which would be even simpler:
>
> 1) Put your conditions in the custom plugin:
>
> function myBOLTFbreadcrumb($args, $zone='') {
>     if (some condition) return BOLTFbreadcrumb($args, $zone='');
>     // my stuff...
>     return $myOutput;
>     }
>
> or
>
> 2) Only turn on the toolmap in certain situations:
>
> if (some condition) $BOLTtoolmap['f']['breadcrumb'] = 'myBOLTFbreadcrumb';
>
> The first is preferable to your example because there's no need to 
> BOLTFbreadcrumb if you are not going to use it. The second saves a step or 
> two more--only turning on the alternate version of the function when you 
> need it.
>
> You are welcome to use any approach you like--but I think you'll find the 
> normal plugin approach easier in the long run.
>
> If I'm not understanding something, let me know. :)
>
> Cheers,
> Dan
>
>
> On Fri, Oct 3, 2014 at 5:57 AM, Tiffany Grenier <[email protected] 
> <javascript:>> wrote:
>
>> Hi Dan,
>>
>> I understand what you would like me to do, but I have to warn you that 
>> most of the time, I will not do it your way... Because there are times when 
>> I do NOT want to see some new feature disabled because I did not update all 
>> my plugins according to your changes.
>>
>> If the code allowed me to do the following, I would not hesitate one 
>> second:
>> function myBOLTFbreadcrumb($args, $zone='') {
>>     $normalResult = BOLTFbreadcrumb($args, $zone='');
>>     if( some case where I do not want to get limited by default 
>> behaviour) {
>>         $myResult = ...
>>         return $myResult;
>>         } 
>>     return $normalResult;
>> }
>>
>> For such new features that just add some small behavior to the core one, 
>> I do not want to have a function that I will need to update each time the 
>> core changes. Therefore, I modify the core and process a diff/merge at each 
>> new release to keep my small addition AND your new code without the need to 
>> change my code.
>>
>> Cheers,
>> Tiffany
>>
>>
>> Le jeudi 2 octobre 2014 18:58:04 UTC+2, Dan a écrit :
>>>
>>> Wow some great suggestions...
>>>
>>> BREADCRUMB
>>> Here's how you could have done the modified breadcrumb function as a 
>>> plugin. You would either put this in config.php or a custom plugin that you 
>>> enable for your site. 
>>>
>>> $BOLTtoolmap['f']['breadcrumb'] = 'myBOLTFbreadcrumb';
>>>
>>> function myBOLTFbreadcrumb($args, $zone='') {
>>> // your modified version of the system function
>>> }
>>>
>>> Basically when BoltWire is called to generate a breadcrumb, it sees the 
>>> toolmapping value and calls your function rather than mine. The advantage 
>>> to this approach, is you never have to worry about your changes to the core 
>>> code being overwritten during an upgrade. My goal is always to enable you 
>>> to do anything without ever having to hack the core.
>>>
>>> SEARCHPAGELIST
>>> Unfortunately, the BOLTsearchPageList function does not have a webhook. 
>>> So to let you customize this function, I would normally add one, by 
>>> inserting this line at the very top of the system function:
>>>
>>> function BOLTsearchPageList($args, $zone='', $auth=true) {
>>> if (function_exists('myBOLTsearchPageList')) return 
>>> myBOLTsearchPageList($args, $zone='', $auth=true);
>>> ...
>>>
>>> You could then copy the system function to your config.php file or 
>>> plugin, renamed it myBOLTsearchPageList, and your function would be used 
>>> instead of mine. The goal again is to make it possible to do anything 
>>> without hacking the core.
>>>
>>> In this case however, I like both your suggestions and will add them to 
>>> the next release. The second one is particularly elegant. Will update the 
>>> docs.
>>>
>>> Cheers,
>>> Dan
>>>
>>>
>>>
>>>
>>> On Thu, Oct 2, 2014 at 1:39 AM, Tiffany Grenier <[email protected]> 
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> I don't know if this might be of interest for someone, or even be 
>>>> integrated into the core at some point, but I created a hooks 
>>>> for BOLTFbreadcrumb and BOLTsearchPageList, allowing you the following 
>>>> things:
>>>>
>>>>    - add an argument limit to breadcrumb, in order to display only N 
>>>>    items (+ the final one if there are more than N page levels)
>>>>    - add argument final (by default "...") to breadcrumb that tells 
>>>>    what should be placed between seperators instead of the "hidden" 
>>>> levels, 
>>>>    thus between item N and N+1 if there is a N+1 (as you can see in 
>>>> attached 
>>>>    picture, where limit is 3)
>>>>    - add the possibility to search for group=page.+ (or group=page+, 
>>>>    or group=page.+.+.+) in addition to group=page.*, in order to be able 
>>>> to 
>>>>    limit the number of levels we want to search for, without having to use 
>>>>    patterns
>>>>
>>>>
>>>> How to do it? For each method, just copy-paste current code into a hook 
>>>> and apply following patches to the hook methods:
>>>>
>>>>    - BOLTFbreadcrumb (file functions.php)
>>>>    - between lines 29 and 30, add:
>>>>          - $lastseparator = $separator.BOLTinit('...', 
>>>>          $args['final']).$separator;
>>>>       - between old lines 48 and 49 - therefore between new lines 49 
>>>>       and 50 -, add:
>>>>          - $outlast = '';
>>>>            if ((isset($args['limit'])) && ((isset($args['offset'])) && 
>>>>          (($args['limit']+$args['offset']) <= $last) || 
>>>>          ($args['limit'] <= $last))) {
>>>>            if (isset($out[$last])){
>>>>            if((isset($args['offset'])) && 
>>>> (($args['limit']+$args['offset']) 
>>>>          == $last) || ($args['limit'] == $last)) $lastseparator=$separator;
>>>>            $outlast = $out[$last];
>>>>            unset($out[$last]);
>>>>            }
>>>>            }
>>>>       - between old lines 49 and 50 - therefore between new lines 58 
>>>>       and 59 - , add:
>>>>          - if (isset($args['limit']))  $out = array_slice($out, 0, 
>>>>          $args['limit']);
>>>>       - before the return, add:
>>>>          - if($outlast != '') $out = $out.$lastseparator.$outlast;
>>>>          - BOLTsearchPageList (file library.php)
>>>>    - replace line 1634 by:
>>>>          - if (strpos($p, "*") !== false || strpos($p, "+") !== false) 
>>>>          {
>>>>          - between lines 1638 and 1639, add:
>>>>          - $p = str_replace('+', "[$namespat]*", $p);
>>>>       
>>>>
>>>> That's it!
>>>> That's not really a recipe, nor a plugin, so I didn't know where to put 
>>>> it in the website documentation...
>>>>
>>>> Regards,
>>>> 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