Forum for discussing general topics related to Couch.
2 posts Page 1 of 1
Hello everyone,

remember = 'This post is about nothing serious, yet..'

What can I say... Parameter remember=' ' is just another idea to feed my CouchCMS addiction. As example let's see a sketchy code -

Code: Select all
<cms:set has_total_pages = "<cms:pages count_only='1' remember='Count total number of existing published pages in template'/>" />
<cms:test remember=has_total_pages />
<cms:if has_total_pages ge '10'><cms:else/><cms:ignore>
    /**
    *   Template with 10 cloned pages.
    *   Created / added up to 10, if necessary.
    */
    </cms:ignore>
    <cms:repeat startcount='1' count="<cms:sub '10' has_total_pages remember='Calc number of missing pages'/>" remember='Repeat as many times as the number of missing pages [up to 10]:'>
        <cms:db_persist _mode='create' _masterpage=k_template_name k_page_title="<cms:call 'random_name' count='8' />" remember="#<cms:show k_count /> page created in this template"/>
    </cms:repeat>
</cms:if>


If all memos get recorded to an occasional variable (perhaps, named k_remember), I'd list memos to get roughly reminded i.e.


Code: Select all
<cms:test ignore='0'>
    <cms:call 'array2list' k_remember html_key='' list='ol' />
</cms:test>

  1. Count total number of existing published pages in template
  2. 7
  3. Calc number of missing pages
  4. Repeat as many times as the number of missing pages [up to 10]:
  5. #1 page created in this template
  6. #2 page created in this template
  7. #3 page created in this template

I scratch head over making list with children, hierarchical...
Wow, I could bring home the hierarchical task with a very elegant algorithm.
Code: Select all
<cms:test remember='1'>
    <cms:test remember='1.1' />
    <cms:test remember='1.2' />
    <cms:test remember='1.3' >
        <cms:test remember='2.1' />
        <cms:test remember='2.2' />
        <cms:test remember='2.3' >
            <cms:test remember='3.1' />
            <cms:test remember='3.2' >
                <cms:test remember='4.1' />
                <cms:test remember='4.2' />
            </cms:test>
            <cms:test remember='3.3' />
        </cms:test>
        <cms:test remember='2.4' />
    </cms:test>
    <cms:test remember='1.4' />
    <cms:test remember='1.5' />
    <cms:test remember='1.6' />
</cms:test>
-- result --
test: 1

    test: 1.1
    test: 1.2
    test: 1.3
        test: 2.1
        test: 2.2
        test: 2.3
            test: 3.1
            test: 3.2
                test: 4.1
                test: 4.2
            test: 3.3
        test: 2.4
    test: 1.4
    test: 1.5
    test: 1.6


It can be used to actually study the order of tag processing i.e. which goes first -
Code: Select all
<cms:test "<cms:add '1' '2' remember='This is cms:add' />" remember='This is cms:test'>
    <cms:sub "10" "<cms:show '5' remember='This is cms:show' />" remember='This is cms:sub' />
</cms:test>

-- result --

add: This is cms:add
test: This is cms:test

    show: This is cms:show
    sub: This is cms:sub


I'll ask @KK, maybe he could find a good use for this.

If anyone wishes to play, I will send the addon in PM.
2 posts Page 1 of 1