Login +

Release Notes / 1.1

Introduction

SillySmart 1.1.0 introduces 37 new features & bug fixes.

To browse the full list, check the roadmap :

http://redmine.sillysmart.org/versions/81

PHP SAPI

Command line PHP execution

You can now execute SillySmart in console mode. All parameters will be transformed in GET:

# mode=CONTROLLER_TRANSLATION
# smode=ACTION_TRANSLATION
cd /home/www/sillysmart
php -f index.php mode=batch smode=newsletter target=cross_selling customers_group[]=vip customers_group[]=new

Customer Back-Office

The customer back-office has been completly overhauled.

Let's check the complete getting started guide to see it in action!

http://www.sillysmart.org/Doc/Guide/Article/back_offices-33.sls

SLS_Bo

Reporting

We can now create custom reporting in SLS_Bo with query builder to draw charts which can be integrated easily in customer back-office.

Project properties

You can now generate a new custom action which allow to generate all your configs (in project.xml) directly in the customer back-office.

Model Properties

Add a page that includes all the properties of all models:

Core

URLs

All routes are now case insensitive, access to /home/index is the same than /Home/Index.

You can now access to the default action directly by controller (protocol://vhost.domain.tld/controller)

Frameworks JS

Sillysmart doesn't longer loads Mootools or any JS file. You can now load your favorite (jQuery, Mootools, Dojo) at your convenience.

Developer Toolbar

Developer toolbar includes now monitoring logs in real-time:

SyntaxHighlighter & Stack traces

SyntaxHighligthter as been upgraded to the last version, reskined and integrated in Bo & Stack Traces:

Dev Mode

In development mode, meta no-index / no-follow has been set to avoid Google indexing:

<meta name="robots" content="noindex, nofollow" />

Google Analytics

Google Analytics is now integrated into the SLS_Bo:

You also have an API integration which allow to embed GA reporting into customer Back-Office!

SLS_Generic1

Error alias

Add several alias methods to forward directly on 404, 500, etc.

$this->e_302();
$this->e_307();
$this->e_400();
$this->e_401();
$this->e_403();
$this->e_404();
$this->e_500();

SLS_XMLToArray2

The whole class has been recoded, based on Lalit Patel version (fork).

XML:

<?xml version="1.0" encoding="utf-8"?>
<project>
    <gmapApiKey isSecure="true" js="true">AIzaSyCciumApP8vArjk0rXVKc4gpxEhInRCPXM</gmapApiKey>
    <twitter>
        <consumerKey isSecure="true" js="true">YTwzs2dnRwROlY9R3NJg</consumerKey>
        <consumerSecret isSecure="true" js="true">N9ZybSr832fwlKMbgDYQIxgOfXNCmYFgAl3svmWA0</consumerSecret>
        <accessToken isSecure="true" js="true">366565410-QalMa6JvxSr3KCV6aazLeeydvRjAasZ1gphAv6M1</accessToken>
        <accessTokenSecret isSecure="true" js="true">lzAkh3Vfzu20OkrKVibZ0Cf5MOSxFI1XLN19NPNDIuI</accessTokenSecret>
    </twitter>
    <facebook>
        <appId isSecure="true" js="true">295421233932731</appId>
        <appSecret isSecure="true" js="true">1e73c6c509783b69cc31ebc35ace9947</appSecret>
    </facebook>
    <test>
        <item><![CDATA[2]]></item>
    </test>
    <emails>
        <email isSecure="true" js="true" role="lead-back">laurent.bientz@sillysmart.org</email>
        <email isSecure="true" js="true" role="lead-front">kevin.lancien@sillysmart.org</email>
        <email isSecure="true" js="true" role="back-end">jacques.delamballerie@sillysmart.org</email>
    </emails>
</project>

PHP:

array(1) {
  ["project"]=>
  array(6) {
    ["gmapApiKey"]=>
    array(4) {
      ["@cdata"]=>
      bool(false)
      ["@value"]=>
      string(39) "AIzaSyCciumApP8vArjk0rXVKc4gpxEhInRCPXM" 
      ["@xpath"]=>
      string(20) "//project/gmapApiKey" 
      ["@attributes"]=>
      array(2) {
        ["isSecure"]=>
        string(4) "true" 
        ["js"]=>
        string(4) "true" 
      }
    }
    ["twitter"]=>
    array(5) {
      ["consumerKey"]=>
      array(4) {
        ["@cdata"]=>
        bool(false)
        ["@value"]=>
        string(20) "YTwzs2dnRwROlY9R3NJg" 
        ["@xpath"]=>
        string(29) "//project/twitter/consumerKey" 
        ["@attributes"]=>
        array(2) {
          ["isSecure"]=>
          string(4) "true" 
          ["js"]=>
          string(4) "true" 
        }
      }
      ["consumerSecret"]=>
      array(4) {
        ["@cdata"]=>
        bool(false)
        ["@value"]=>
        string(41) "N9ZybSr832fwlKMbgDYQIxgOfXNCmYFgAl3svmWA0" 
        ["@xpath"]=>
        string(32) "//project/twitter/consumerSecret" 
        ["@attributes"]=>
        array(2) {
          ["isSecure"]=>
          string(4) "true" 
          ["js"]=>
          string(4) "true" 
        }
      }
      ["accessToken"]=>
      array(4) {
        ["@cdata"]=>
        bool(false)
        ["@value"]=>
        string(50) "366565410-QalMa6JvxSr3KCV6aazLeeydvRjAasZ1gphAv6M1" 
        ["@xpath"]=>
        string(29) "//project/twitter/accessToken" 
        ["@attributes"]=>
        array(2) {
          ["isSecure"]=>
          string(4) "true" 
          ["js"]=>
          string(4) "true" 
        }
      }
      ["accessTokenSecret"]=>
      array(4) {
        ["@cdata"]=>
        bool(false)
        ["@value"]=>
        string(43) "lzAkh3Vfzu20OkrKVibZ0Cf5MOSxFI1XLN19NPNDIuI" 
        ["@xpath"]=>
        string(35) "//project/twitter/accessTokenSecret" 
        ["@attributes"]=>
        array(2) {
          ["isSecure"]=>
          string(4) "true" 
          ["js"]=>
          string(4) "true" 
        }
      }
      ["@attributes"]=>
      array(0) {
      }
    }
    ["facebook"]=>
    array(3) {
      ["appId"]=>
      array(4) {
        ["@cdata"]=>
        bool(false)
        ["@value"]=>
        string(15) "295421233932731" 
        ["@xpath"]=>
        string(24) "//project/facebook/appId" 
        ["@attributes"]=>
        array(2) {
          ["isSecure"]=>
          string(4) "true" 
          ["js"]=>
          string(4) "true" 
        }
      }
      ["appSecret"]=>
      array(4) {
        ["@cdata"]=>
        bool(false)
        ["@value"]=>
        string(32) "1e73c6c509783b69cc31ebc35ace9947" 
        ["@xpath"]=>
        string(28) "//project/facebook/appSecret" 
        ["@attributes"]=>
        array(2) {
          ["isSecure"]=>
          string(4) "true" 
          ["js"]=>
          string(4) "true" 
        }
      }
      ["@attributes"]=>
      array(0) {
      }
    }
    ["test"]=>
    array(2) {
      ["item"]=>
      array(4) {
        ["@cdata"]=>
        bool(true)
        ["@value"]=>
        string(1) "2" 
        ["@xpath"]=>
        string(19) "//project/test/item" 
        ["@attributes"]=>
        array(0) {
        }
      }
      ["@attributes"]=>
      array(0) {
      }
    }
    ["emails"]=>
    array(2) {
      ["email"]=>
      array(3) {
        [0]=>
        array(4) {
          ["@cdata"]=>
          bool(false)
          ["@value"]=>
          string(29) "laurent.bientz@sillysmart.org" 
          ["@xpath"]=>
          string(25) "//project/emails/email[1]" 
          ["@attributes"]=>
          array(3) {
            ["isSecure"]=>
            string(4) "true" 
            ["js"]=>
            string(4) "true" 
            ["role"]=>
            string(9) "lead-back" 
          }
        }
        [1]=>
        array(4) {
          ["@cdata"]=>
          bool(false)
          ["@value"]=>
          string(28) "kevin.lancien@sillysmart.org" 
          ["@xpath"]=>
          string(25) "//project/emails/email[2]" 
          ["@attributes"]=>
          array(3) {
            ["isSecure"]=>
            string(4) "true" 
            ["js"]=>
            string(4) "true" 
            ["role"]=>
            string(10) "lead-front" 
          }
        }
        [2]=>
        array(4) {
          ["@cdata"]=>
          bool(false)
          ["@value"]=>
          string(36) "jacques.delamballerie@sillysmart.org" 
          ["@xpath"]=>
          string(25) "//project/emails/email[3]" 
          ["@attributes"]=>
          array(3) {
            ["isSecure"]=>
            string(4) "true" 
            ["js"]=>
            string(4) "true" 
            ["role"]=>
            string(8) "back-end" 
          }
        }
      }
      ["@attributes"]=>
      array(0) {
      }
    }
    ["@attributes"]=>
    array(0) {
    }
  }
}

SLS_Cache3

SLS_Cache3 works now with sever-side responsive features > if you have a same URI that delivers differents renders in function of user-agent.

If you enable responsive cache, SLS will cache 3 differents version of a same URI:

  • desktop
  • tablet
  • phone

SLS_Lang4

translate()

Add a new method translate() which allow to get a translation directly in server side:

$this->_lang->translate("generic_switch_lang");

Related :

References

  1. SLS_Generic - Generic Class - Used eveywhere in the application
  2. SLS_XMLToArray - Tool SLS_XMLToArray - A class to convert XML to array in PHPIt returns the array which can be converted back to XML using the Array2XML scriptIt takes an XML string or a DOMDocument object as an input.
  3. SLS_Cache - Tool SLS_Cache - Cache handling
  4. SLS_Lang - Multilanguage Management