Changeset 961 in genappalpha


Ignore:
Timestamp:
Jul 1, 2016, 12:37:52 PM (6 years ago)
Author:
ehb
Message:

html5 bugfix to "flat" json generated input

Location:
languages/html5
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • languages/html5/base.php

    r955 r961  
    636636}
    637637
     638function only_numerics( $a ) {
     639    $b = [];
     640    foreach ( $a as $v ) {
     641        if ( ctype_digit( $v ) ) {
     642            $b[] = $v;
     643        }
     644    }
     645    __~debug:basemylog{error_log( "only numerics from:\n" . json_encode( $a, JSON_PRETTY_PRINT ) . "\nto:\n" . json_encode( $b, JSON_PRETTY_PRINT ) . "\n", 3, "/tmp/mylog" );}
     646    return $b;
     647}
     648
     649function last_nonnumeric( $a ) {
     650    $i = count( $a ) - 1;
     651    while ( $i >= 0 && ctype_digit( $a[ $i ] ) ) {
     652        --$i;
     653    }
     654    if ( $i < 0 ) {
     655        error_log( "__application__ __menu:id__ __menu:modules:id__ last_nonnumeric could not find one\n" . json_encode( $a, JSON_PRETTY_PRINT ) . "\n", 3, "/tmp/php_errors" );
     656        return $a[ 0 ];
     657    }
     658    __~debug:basemylog{error_log( "last non numeric from:\n" . json_encode( $a, JSON_PRETTY_PRINT ) . "\n is " . $a[$i] . "\n", 3, "/tmp/mylog" );}
     659    return $a[ $i ];
     660}   
     661
     662
    638663if ( sizeof( $_REQUEST ) )
    639664{
     
    681706            $a = preg_split( "/-/", $v );
    682707            if ( !__~extendedjsoninputtags{1}0 ) {
    683                 $i = count( $a ) - 1;
    684                 $isdigit = ctype_digit( $a[ $i ] );
    685                 __~debug:basemylog{error_log( "old repeaters style used isdigit=$isdigit i=$i key=" . $a[$i] . " value $v\n", 3, "/tmp/mylog" );}
    686                 if ( $isdigit && $i > 0 ) {
    687                     __~debug:basemylog{error_log( "array add $v\n", 3, "/tmp/mylog" );}
    688                     if ( !is_array( $_REQUEST[ $a[ $i - 1 ] ] ) ) {
    689                         $_REQUEST[ $a[ $i - 1 ] ] = [];
     708                if ( 1 ) {
     709                    $b = only_numerics( $a );
     710                    $tag = last_nonnumeric( $a );
     711                    if ( count( $b ) ) {
     712                        if ( !isset( $_REQUEST[ $tag ] ) || !is_array( $_REQUEST[ $tag ] ) ) {
     713                            $_REQUEST[ $tag ] = [];
     714                        }
     715                        if ( !is_array( $_REQUEST[ $tag ] ) ) {
     716                            error_log( "__application__ __menu:id__ __menu:modules:id__ target tag $tag in not an array in request v $v\n" . json_encode( $_REQUEST, JSON_PRETTY_PRINT ) . "\n", 3, "/tmp/php_errors" );
     717                        } else {
     718                            $obj = &$_REQUEST[ $tag ];
     719                            foreach ( $b as $v2 ) {
     720                                if ( !isset( $obj[ $v2 ] ) ) {
     721                                    $obj[ $v2 ] = [];
     722                                }
     723                                if ( !is_array( $obj[ $v2 ] ) ) {
     724                                    error_log( "__application__ __menu:id__ __menu:modules:id__ target tag $tag in not an array in request v $v object\n" . json_encode( $obj, JSON_PRETTY_PRINT ) . "\n", 3, "/tmp/php_errors" );
     725                                    break;
     726                                }
     727                                $obj = &$obj[ $v2 ];
     728                            }
     729                            $obj = $_REQUEST[ $v ];
     730                        }
     731                    } else {
     732                        $_REQUEST[ $tag ] = $_REQUEST[ $v ];
    690733                    }
    691                     $_REQUEST[ $a[ $i - 1 ] ][ $a[ $i ] ] = $_REQUEST[ $v ];
    692734                } else {
    693                     if ( !$isdigit ) {
    694                         __~debug:basemylog{error_log( "not array add $v\n", 3, "/tmp/mylog" );}
    695                         $_REQUEST[ $a[ $i ] ] = $_REQUEST[ $v ];
     735                    $i = count( $a ) - 1;
     736                    $isdigit = ctype_digit( $a[ $i ] );
     737                    __~debug:basemylog{error_log( "old repeaters style used isdigit=$isdigit i=$i key=" . $a[$i] . " value $v\n", 3, "/tmp/mylog" );}
     738                    if ( $isdigit && $i > 0 ) {
     739                        __~debug:basemylog{error_log( "array add $v\n", 3, "/tmp/mylog" );}
     740                        if ( !is_array( $_REQUEST[ $a[ $i - 1 ] ] ) ) {
     741                            $_REQUEST[ $a[ $i - 1 ] ] = [];
     742                        }
     743                        $_REQUEST[ $a[ $i - 1 ] ][ $a[ $i ] ] = $_REQUEST[ $v ];
    696744                    } else {
    697                         __~debug:basemylog{error_log( "not array add $v and skipped\n", 3, "/tmp/mylog" )};
     745                        if ( !$isdigit ) {
     746                            __~debug:basemylog{error_log( "not array add $v\n", 3, "/tmp/mylog" );}
     747                            $_REQUEST[ $a[ $i ] ] = $_REQUEST[ $v ];
     748                        } else {
     749                            __~debug:basemylog{error_log( "not array add $v and skipped\n", 3, "/tmp/mylog" )};
     750                        }
    698751                    }
    699752                }
  • languages/html5/js/repeat.js

    r956 r961  
    5050
    5151ga.repeat.repeat = function( mod, id, html, this_eval ) {
    52     __~debug:repeat{console.log( "ga.repeat.repeat( " + mod + " , " + id + " , html , eval , " + orgid + " )" );}
     52    __~debug:repeat{console.log( "ga.repeat.repeat( " + mod + " , " + id + " , html , eval )" );}
    5353
    5454    ga.repeat.data[ mod ] = ga.repeat.data[ mod ] || {};
Note: See TracChangeset for help on using the changeset viewer.