Merge branch 'bootstrap' of https://github.com/PrestaShop/PrestaShop into bootstrap
This commit is contained in:
commit
6fa398e8e0
36 files changed
+869
-427
No files matched your search
@@ -6,7 +6,7 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Designed and built with all the love in the world by @mdo and @fat.
|
* Designed and built with all the love in the world by @mdo and @fat.
|
||||||
*//* normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:0.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace, serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:2cm .5cm}p,h2,h3,#content .panel-heading,#content #header_notifs_icon_wrapper .notifs_panel .notifs_panel_header,#header_notifs_icon_wrapper .notifs_panel #content .notifs_panel_header{orphans:3;widows:3}h2,h3,#content .panel-heading,#content #header_notifs_icon_wrapper .notifs_panel .notifs_panel_header,#header_notifs_icon_wrapper .notifs_panel #content .notifs_panel_header{page-break-after:avoid}.navbar,#header_infos{display:none}.table td,.table th{background-color:#fff !important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:12px;line-height:1.42857;color:#555;background-color:#313a45}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#6992af;text-decoration:none}a:hover,a:focus{color:#476b85;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail,.thumbnail{padding:4px;line-height:1.42857;background-color:#313a45;border:1px solid #ddd;border-radius:3px;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:17px;margin-bottom:17px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 8.5px}.lead{margin-bottom:17px;font-size:13.8px;font-weight:200;line-height:1.4}@media (min-width: 768px){.lead{font-size:18px}}small{font-size:85%}cite{font-style:normal}.text-muted,.module_description,.hook_panel_header .hook_description{color:#999}.text-primary{color:#6992af}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,#content .panel-heading,#content #header_notifs_icon_wrapper .notifs_panel .notifs_panel_header,#header_notifs_icon_wrapper .notifs_panel #content .notifs_panel_header,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Ubuntu",sans-serif;font-weight:300;line-height:1.1Line truncated
|
*//* normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:0.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace, serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:2cm .5cm}p,h2,h3,#content .panel-heading,#content #header_notifs_icon_wrapper .notifs_panel .notifs_panel_header,#header_notifs_icon_wrapper .notifs_panel #content .notifs_panel_header{orphans:3;widows:3}h2,h3,#content .panel-heading,#content #header_notifs_icon_wrapper .notifs_panel .notifs_panel_header,#header_notifs_icon_wrapper .notifs_panel #content .notifs_panel_header{page-break-after:avoid}.navbar,#header_infos{display:none}.table td,.table th{background-color:#fff !important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:12px;line-height:1.42857;color:#555;background-color:#515561}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#89afe5;text-decoration:none}a:hover,a:focus{color:#4a84d7;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail,.thumbnail{padding:4px;line-height:1.42857;background-color:#515561;border:1px solid #ddd;border-radius:3px;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:17px;margin-bottom:17px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 8.5px}.lead{margin-bottom:17px;font-size:13.8px;font-weight:200;line-height:1.4}@media (min-width: 768px){.lead{font-size:18px}}small{font-size:85%}cite{font-style:normal}.text-muted,.module_description,.hook_panel_header .hook_description{color:#999}.text-primary{color:#89afe5}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,#content .panel-heading,#content #header_notifs_icon_wrapper .notifs_panel .notifs_panel_header,#header_notifs_icon_wrapper .notifs_panel #content .notifs_panel_header,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Ubuntu",sans-serif;font-weight:300;line-height:1.1Line truncated
|
||||||
* Font Awesome 3.2.1
|
* Font Awesome 3.2.1
|
||||||
* the iconic font designed for Bootstrap
|
* the iconic font designed for Bootstrap
|
||||||
* ------------------------------------------------------------------------------
|
* ------------------------------------------------------------------------------
|
||||||
@@ -30,4 +30,4 @@
|
|||||||
* Email: dave@fontawesome.io
|
* Email: dave@fontawesome.io
|
||||||
* Twitter: http://twitter.com/byscuits
|
* Twitter: http://twitter.com/byscuits
|
||||||
* Work: Lead Product Designer @ Kyruus - http://kyruus.com
|
* Work: Lead Product Designer @ Kyruus - http://kyruus.com
|
||||||
*/@font-face{font-family:'FontAwesome';src:url("../font/fontawesome-webfont.eot?v=3.2.1");src:url("../font/fontawesome-webfont.eot?#iefix&v=3.2.1") format("embedded-opentype"),url("../font/fontawesome-webfont.woff?v=3.2.1") format("woff"),url("../font/fontawesome-webfont.ttf?v=3.2.1") format("truetype"),url("../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1") format("svg");font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em}[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em}a [class^="icon-"],a [class*=" icon-"]{display:inline}[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:0.2857142857142857em}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em}.icons-ul{margin-left:2.142857142857143em;list-style-type:none}.icons-ul>li{position:relative}.icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit}[class^="icon-"].hide,[class*=" icon-"].hide{display:none}.icon-muted{color:#eeeeee}.icon-light{color:#ffffff}.icon-dark{color:#333333}.icon-border{border:solid 1px #eeeeee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.icon-5x{font-size:5em}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.pull-right,#content h3 .panel-heading-action,#content .panel-heading .panel-heading-action,#content #header_notifs_icon_wrapper .notifs_panel .notifs_panel_header .panel-heading-action,#header_notifs_icon_wrapper .notifs_panel #content .notifs_panel_header .panel-heading-action{float:right}.pull-left,.page-head h2.page-title{float:left}[class^="icon-"].pull-left,.page-head h2[class^="icon-"].page-title,[class*=" icon-"].pull-left,.page-head h2[class*=" icon-"].page-title{margin-right:.3em}[class^="icon-"].pull-right,#content h3 [class^="icon-"].panel-heading-action,#content .panel-heading [class^="icon-"].panel-heading-action,#content #header_notifs_icon_wrapper .notifs_panel .notifs_panel_header [class^="icon-"].panel-heading-action,#header_notifs_icon_wrapper .notifs_panel #content .notifs_panel_header [class^="icon-"].panel-heading-action,[class*=" icon-"].pull-right,#content h3 [class*=" icon-"].panel-heading-action,#content .panel-heading [class*=" icon-"].panel-heading-action,#content #header_notifs_icon_wrapper .notifs_panel .notifs_panel_header [class*=" icon-"].panel-heading-action,#header_notifs_icon_wrapper .notifs_panel #content .notifs_panel_header [class*=" icon-"].panel-heading-action{margin-left:.3em}[class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],#header_infos .nav>.active>a>[class^="icon-"],.navbar-inverse #header_notifs_icon_wrapper>.active>a>[class^="icon-"],#header_infos #header_notifs_icon_wrapper>.active>a>[class^="icon-"],.navbar-inverse #header_employee_box>.active>a>[class^="icon-"],#header_infos #header_employee_box>.active>a>[class^="icon-"],.navbar-inverse #header_quick>.active>a>[class^="icon-"],#header_infos #header_quick>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],#header_infos .nav>.active>a>[class*=" icon-"],.navbar-inverse #header_notifs_icon_wrapper>.active>a>[class*=" icon-"],#header_infos #header_notifs_icon_wrapper>.active>a>[class*=" icon-"],.navbar-inverse #header_employee_box>.active>a>[class*=" icon-"],#header_infos #header_employee_box>.active>a>[class*=" icon-"],.navbar-inverse #header_quick>.active>a>[class*=" icon-"],#header_infos #header_quick>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none}.btn [class^="icon-"].icon-large,.nav [class^="icon-Line truncated
|
*/@font-face{font-family:'FontAwesome';src:url("../font/fontawesome-webfont.eot?v=3.2.1");src:url("../font/fontawesome-webfont.eot?#iefix&v=3.2.1") format("embedded-opentype"),url("../font/fontawesome-webfont.woff?v=3.2.1") format("woff"),url("../font/fontawesome-webfont.ttf?v=3.2.1") format("truetype"),url("../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1") format("svg");font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em}[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em}a [class^="icon-"],a [class*=" icon-"]{display:inline}[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:0.2857142857142857em}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em}.icons-ul{margin-left:2.142857142857143em;list-style-type:none}.icons-ul>li{position:relative}.icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit}[class^="icon-"].hide,[class*=" icon-"].hide{display:none}.icon-muted{color:#eeeeee}.icon-light{color:#ffffff}.icon-dark{color:#333333}.icon-border{border:solid 1px #eeeeee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.icon-5x{font-size:5em}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.pull-right,#content h3 .panel-heading-action,#content .panel-heading .panel-heading-action,#content #header_notifs_icon_wrapper .notifs_panel .notifs_panel_header .panel-heading-action,#header_notifs_icon_wrapper .notifs_panel #content .notifs_panel_header .panel-heading-action{float:right}.pull-left,.page-head h2.page-title{float:left}[class^="icon-"].pull-left,.page-head h2[class^="icon-"].page-title,[class*=" icon-"].pull-left,.page-head h2[class*=" icon-"].page-title{margin-right:.3em}[class^="icon-"].pull-right,#content h3 [class^="icon-"].panel-heading-action,#content .panel-heading [class^="icon-"].panel-heading-action,#content #header_notifs_icon_wrapper .notifs_panel .notifs_panel_header [class^="icon-"].panel-heading-action,#header_notifs_icon_wrapper .notifs_panel #content .notifs_panel_header [class^="icon-"].panel-heading-action,[class*=" icon-"].pull-right,#content h3 [class*=" icon-"].panel-heading-action,#content .panel-heading [class*=" icon-"].panel-heading-action,#content #header_notifs_icon_wrapper .notifs_panel .notifs_panel_header [class*=" icon-"].panel-heading-action,#header_notifs_icon_wrapper .notifs_panel #content .notifs_panel_header [class*=" icon-"].panel-heading-action{margin-left:.3em}[class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],#header_infos .nav>.active>a>[class^="icon-"],.navbar-inverse #header_notifs_icon_wrapper>.active>a>[class^="icon-"],#header_infos #header_notifs_icon_wrapper>.active>a>[class^="icon-"],.navbar-inverse #header_employee_box>.active>a>[class^="icon-"],#header_infos #header_employee_box>.active>a>[class^="icon-"],.navbar-inverse #header_quick>.active>a>[class^="icon-"],#header_infos #header_quick>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],#header_infos .nav>.active>a>[class*=" icon-"],.navbar-inverse #header_notifs_icon_wrapper>.active>a>[class*=" icon-"],#header_infos #header_notifs_icon_wrapper>.active>a>[class*=" icon-"],.navbar-inverse #header_employee_box>.active>a>[class*=" icon-"],#header_infos #header_employee_box>.active>a>[class*=" icon-"],.navbar-inverse #header_quick>.active>a>[class*=" icon-"],#header_infos #header_quick>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none}.btn [class^="icon-"].icon-large,.nav [class^="icon-Line truncated
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
//$brand-primary: #1BA6E5
|
//$brand-primary: #1BA6E5
|
||||||
$brand-primary: #6992AF
|
|
||||||
|
|
||||||
//light
|
//light
|
||||||
//$main-color: #F7F7F7
|
//$main-color: #F7F7F7
|
||||||
@@ -8,13 +8,15 @@ $brand-primary: #6992AF
|
|||||||
//$main-color: #E0E0E0 //gris
|
//$main-color: #E0E0E0 //gris
|
||||||
//$main-color: #D7D6DE //violet
|
//$main-color: #D7D6DE //violet
|
||||||
//$main-color: #F1F8FE //theme wordpress
|
//$main-color: #F1F8FE //theme wordpress
|
||||||
|
|
||||||
//dark
|
//dark
|
||||||
//$main-color: #272A31 //bleu PrestaShop
|
//$main-color: #272A31 //bleu PrestaShop
|
||||||
//$main-color: #3D3D3D //gris
|
//$main-color: #3D3D3D //gris
|
||||||
//$main-color: #515561 //gris bleu clair
|
$main-color: #515561 //gris bleu clair
|
||||||
//$main-color: #4D4645 //taupe
|
//$main-color: #4D4645 //taupe
|
||||||
//$main-color: #272822 //gris vert
|
//$main-color: #272822 //gris vert
|
||||||
$main-color: #313A45 //gris bleu
|
//$main-color: #313A45 //gris bleu
|
||||||
|
//$main-color: #7B8676
|
||||||
//$main-color: #443A42 //violet
|
//$main-color: #443A42 //violet
|
||||||
//$main-color: #373E35 //vert camo
|
//$main-color: #373E35 //vert camo
|
||||||
//$main-color: #262C3F //bleu nuit - pretty sure that a girl could do better naming the colors, sorry about that...
|
//$main-color: #262C3F //bleu nuit - pretty sure that a girl could do better naming the colors, sorry about that...
|
||||||
@@ -30,14 +32,17 @@ $main-color: #313A45 //gris bleu
|
|||||||
//$secondary-color: #4691D2 //bleu ciel
|
//$secondary-color: #4691D2 //bleu ciel
|
||||||
//$secondary-color: #814C76 //violet
|
//$secondary-color: #814C76 //violet
|
||||||
//$secondary-color: #FE635F //saumon
|
//$secondary-color: #FE635F //saumon
|
||||||
//$secondary-color: #F8235A //rose
|
//$secondary-color: #FFB4B8 //rose
|
||||||
//$secondary-color: #F2B100 //moutarde
|
//$secondary-color: #F2B100 //moutarde
|
||||||
//$secondary-color: #F7854E //abricot
|
//$secondary-color: #F6A88A //abricot
|
||||||
//$secondary-color: #937976 //taupe clair
|
//$secondary-color: #937976 //taupe clair
|
||||||
//$secondary-color: #60C276 //vert
|
//$secondary-color: #60C276 //vert
|
||||||
//$secondary-color: #9DC44B //vert pomme
|
//$secondary-color: #9DC44B //vert pomme
|
||||||
$secondary-color: #6992AF //theme wordpress
|
//$secondary-color: #6992AF //theme wordpress
|
||||||
//$secondary-color: #8BC954 //vert PrestaShop
|
//$secondary-color: #8BC954 //vert PrestaShop
|
||||||
|
$secondary-color: #AB7073
|
||||||
|
|
||||||
|
$brand-primary: #89AFE5
|
||||||
|
|
||||||
//some tests
|
//some tests
|
||||||
//$secondary-color: #79C09D
|
//$secondary-color: #79C09D
|
||||||
@@ -68,7 +73,7 @@ $bg-page-head-color : $secondary-color
|
|||||||
$bg-panel-heading-color: hsl(hue($secondary-color), 10, 90)
|
$bg-panel-heading-color: hsl(hue($secondary-color), 10, 90)
|
||||||
|
|
||||||
//others
|
//others
|
||||||
$badge-notif-color: #EF1778
|
$badge-notif-color: #8BC954
|
||||||
$icon-color: #87C795
|
$icon-color: #87C795
|
||||||
|
|
||||||
@import "compass"
|
@import "compass"
|
||||||
@@ -150,7 +155,7 @@ html, body
|
|||||||
background-image: url('../img/patterns/bedge_grunge.png') // texture
|
background-image: url('../img/patterns/bedge_grunge.png') // texture
|
||||||
|
|
||||||
#content
|
#content
|
||||||
padding: 90px 20px 0
|
padding: 80px 20px 0
|
||||||
margin-left: 240px
|
margin-left: 240px
|
||||||
@include transition-property(margin)
|
@include transition-property(margin)
|
||||||
@include transition-duration(0.4s)
|
@include transition-duration(0.4s)
|
||||||
@@ -356,21 +361,21 @@ html, body
|
|||||||
text-decoration: none
|
text-decoration: none
|
||||||
&:last-child a
|
&:last-child a
|
||||||
border-bottom: none
|
border-bottom: none
|
||||||
&.active
|
&.active a
|
||||||
a
|
|
||||||
color: contrast-color($brand-primary, white, #333, 10%)
|
color: contrast-color($brand-primary, white, #333, 10%)
|
||||||
background-color: $brand-primary
|
background-color: $brand-primary
|
||||||
border-bottom: solid 1px darken($brand-primary,10%)
|
border-bottom: solid 1px darken($brand-primary,10%)
|
||||||
|
|
||||||
#nav-topbar
|
#nav-topbar
|
||||||
|
position: fixed
|
||||||
height: 28px
|
height: 28px
|
||||||
top: 36px
|
top: 35px
|
||||||
left: 80
|
left: 80
|
||||||
width: 100%
|
width: 100%
|
||||||
z-index: 600
|
z-index: 600
|
||||||
background-color: white
|
background-color: white
|
||||||
border-top: black solid 1px
|
border-top: black solid 1px
|
||||||
border-bottom: black solid 1px
|
border-bottom: darken($secondary-color,20%) solid 1px
|
||||||
ul.menu
|
ul.menu
|
||||||
height: 28px
|
height: 28px
|
||||||
margin: 0
|
margin: 0
|
||||||
@@ -415,12 +420,12 @@ html, body
|
|||||||
ul.submenu
|
ul.submenu
|
||||||
display: none!important
|
display: none!important
|
||||||
@include box-shadow(rgba(black,0.3) 0 2px 4px)
|
@include box-shadow(rgba(black,0.3) 0 2px 4px)
|
||||||
> ul.menu > li
|
> ul.menu > li.expanded
|
||||||
ul.submenu.expanded
|
ul.submenu
|
||||||
display: block!important
|
display: block!important
|
||||||
> ul.menu > li
|
> ul.menu > li
|
||||||
ul.submenu
|
ul.submenu
|
||||||
display: none
|
display: none!important
|
||||||
position: absolute
|
position: absolute
|
||||||
margin: 0
|
margin: 0
|
||||||
padding: 0
|
padding: 0
|
||||||
@@ -445,9 +450,9 @@ html, body
|
|||||||
&:last-child a
|
&:last-child a
|
||||||
border-bottom: none
|
border-bottom: none
|
||||||
&.active a
|
&.active a
|
||||||
color: contrast-color($main-color, white, #333, 10%)
|
color: contrast-color($brand-primary, white, #333, 10%)
|
||||||
background-color: $main-color
|
background-color: $brand-primary
|
||||||
border-bottom: solid 1px darken($main-color,10%)
|
border-bottom: solid 1px darken($brand-primary,10%)
|
||||||
|
|
||||||
.page-topbar
|
.page-topbar
|
||||||
#main
|
#main
|
||||||
@@ -455,7 +460,7 @@ html, body
|
|||||||
#nav-sidebar
|
#nav-sidebar
|
||||||
display: none
|
display: none
|
||||||
.page-head
|
.page-head
|
||||||
top: 64px
|
top: 63px
|
||||||
#content
|
#content
|
||||||
margin-left: 0
|
margin-left: 0
|
||||||
width: 100%
|
width: 100%
|
||||||
@@ -1262,6 +1267,11 @@ fieldset > .row
|
|||||||
margin: 0 4px 0 6px
|
margin: 0 4px 0 6px
|
||||||
background-color: #ccc
|
background-color: #ccc
|
||||||
+border-radius(6px)
|
+border-radius(6px)
|
||||||
|
.tree-item-disable, .tree-folder-name-disable
|
||||||
|
color: #ccc
|
||||||
|
&:hover
|
||||||
|
color: #ccc
|
||||||
|
background-color: none
|
||||||
|
|
||||||
#carrier_wizard
|
#carrier_wizard
|
||||||
position: relative
|
position: relative
|
||||||
@@ -1405,6 +1415,3 @@ fieldset > .row
|
|||||||
width: auto
|
width: auto
|
||||||
.field_error
|
.field_error
|
||||||
border-color: $brand-danger
|
border-color: $brand-danger
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -25,42 +25,84 @@
|
|||||||
$( document ).ready(function() {
|
$( document ).ready(function() {
|
||||||
|
|
||||||
//nav side bar
|
//nav side bar
|
||||||
$('#nav-sidebar li.maintab.has_submenu').append('<span class="submenu_expand"></span>');
|
function navSidebar(){
|
||||||
$('#nav-sidebar .submenu_expand').click(function(){
|
$('#nav-sidebar li.maintab.has_submenu').append('<span class="submenu_expand"></span>');
|
||||||
var $navId = $(this).parent();
|
$('#nav-sidebar .submenu_expand').on('click',function(){
|
||||||
$(".submenu-collapse").remove();
|
var $navId = $(this).parent();
|
||||||
if($(".expanded").length ){
|
$('.submenu-collapse').remove();
|
||||||
$(".expanded > ul").slideUp(
|
if($('.expanded').length ){
|
||||||
"fast",
|
$('.expanded > ul').slideUp(
|
||||||
function(){
|
'fast',
|
||||||
var $target = $(".expanded");
|
function(){
|
||||||
$target.removeClass("expanded");
|
var $target = $('.expanded');
|
||||||
$($navId).not($target).not(".active").addClass("expanded");
|
$target.removeClass('expanded');
|
||||||
$($navId).not($target).not(".active").children("ul:first").hide().slideDown();
|
$($navId).not($target).not('.active').addClass('expanded');
|
||||||
}
|
$($navId).not($target).not('.active').children('ul:first').hide().slideDown();
|
||||||
);
|
}
|
||||||
}
|
);
|
||||||
else {
|
}
|
||||||
$($navId).not(".active").addClass("expanded");
|
else {
|
||||||
$($navId).not(".active").children("ul:first").hide().slideDown();
|
$($navId).not('.active').addClass('expanded');
|
||||||
}
|
$($navId).not('.active').children('ul:first').hide().slideDown();
|
||||||
});
|
|
||||||
|
|
||||||
//nav top bar
|
|
||||||
$(window).on("resize", function() {
|
|
||||||
$("#nav-topbar ul.menu").find("li.maintab").each(function(){
|
|
||||||
if ($(this).position().top > 0) {
|
|
||||||
$(this).addClass("hide");
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
|
//nav top bar
|
||||||
|
function navTopbar(){
|
||||||
|
$('.expanded').removeClass('expanded');
|
||||||
|
|
||||||
$("#nav-topbar li.maintab.has_submenu").hover(function(){
|
$('#nav-topbar').on('mouseenter', 'li.maintab.has_submenu',
|
||||||
$(this).find("ul.submenu").fadeIn("fast").addClass("expanded");
|
function(){
|
||||||
}, function(){
|
$(this).addClass('expanded');
|
||||||
//$(this).removeClass("expanded");
|
});
|
||||||
$(this).find("ul.submenu").fadeOut("fast").removeClass("expanded");
|
$('#nav-topbar').on('mouseleave', 'li.maintab.has_submenu',
|
||||||
});
|
function(){
|
||||||
|
$(this).removeClass('expanded');
|
||||||
|
});
|
||||||
|
|
||||||
|
//todo hide element over menu width on load
|
||||||
|
$('#nav-topbar').find('li.maintab').each(
|
||||||
|
function(){
|
||||||
|
if ($(this).position().top > 0) {
|
||||||
|
$(this).addClass('hide');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//todo hide element over menu width on resize
|
||||||
|
$(window).on('resize', function() {
|
||||||
|
$('#nav-topbar ul.menu').find('li.maintab').each(function(){
|
||||||
|
if ($(this).position().top > 0) {
|
||||||
|
$(this).addClass('hide');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//nav switch
|
||||||
|
function navSwitch(){
|
||||||
|
|
||||||
|
if ($('body').hasClass('page-sidebar')||$('body').hasClass('page-sidebar-closed')) {
|
||||||
|
$('body').removeClass('page-sidebar').removeClass('page-sidebar-closed').addClass('page-topbar');
|
||||||
|
$('#nav-sidebar').attr('id','nav-topbar');
|
||||||
|
$('#nav-topbar').off();
|
||||||
|
navTopbar();
|
||||||
|
} else {
|
||||||
|
$('body.page-topbar').removeClass('page-topbar').addClass('page-sidebar');
|
||||||
|
$('#nav-topbar').attr('id','nav-sidebar');
|
||||||
|
$('#nav-sidebar').off();
|
||||||
|
navSidebar();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//todo add condition
|
||||||
|
navTopbar();
|
||||||
|
|
||||||
|
$('#header_shopname').on('click',
|
||||||
|
function(e){
|
||||||
|
e.preventDefault();
|
||||||
|
navSwitch();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
//tooltip
|
//tooltip
|
||||||
$('.label-tooltip').tooltip();
|
$('.label-tooltip').tooltip();
|
||||||
|
|||||||
+108
@@ -0,0 +1,108 @@
|
|||||||
|
{*
|
||||||
|
* 2007-2013 PrestaShop
|
||||||
|
*
|
||||||
|
* NOTICE OF LICENSE
|
||||||
|
*
|
||||||
|
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||||
|
* that is bundled with this package in the file LICENSE.txt.
|
||||||
|
* It is also available through the world-wide-web at this URL:
|
||||||
|
* http://opensource.org/licenses/afl-3.0.php
|
||||||
|
* If you did not receive a copy of the license and are unable to
|
||||||
|
* obtain it through the world-wide-web, please send an email
|
||||||
|
* to license@prestashop.com so we can send you a copy immediately.
|
||||||
|
*
|
||||||
|
* DISCLAIMER
|
||||||
|
*
|
||||||
|
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||||
|
* versions in the future. If you wish to customize PrestaShop for your
|
||||||
|
* needs please refer to http://www.prestashop.com for more information.
|
||||||
|
*
|
||||||
|
* @author PrestaShop SA <contact@prestashop.com>
|
||||||
|
* @copyright 2007-2013 PrestaShop SA
|
||||||
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||||
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
|
*}
|
||||||
|
<div class="panel">
|
||||||
|
{if isset($header)}{$header}{/if}
|
||||||
|
{if isset($nodes)}
|
||||||
|
<ul id="{$id}" class="tree">
|
||||||
|
{$nodes}
|
||||||
|
</ul>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
{if isset($use_checkbox) && $use_checkbox == true}
|
||||||
|
function checkAllAssociatedCategories($tree)
|
||||||
|
{
|
||||||
|
$tree.find(":input[type=checkbox]").each(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
$(this).prop("checked", true);
|
||||||
|
$(this).parent().addClass("tree-selected");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function uncheckAllAssociatedCategories($tree)
|
||||||
|
{
|
||||||
|
$tree.find(":input[type=checkbox]").each(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
$(this).prop("checked", false);
|
||||||
|
$(this).parent().removeClass("tree-selected");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
{/if}
|
||||||
|
{if isset($use_search) && $use_search == true}
|
||||||
|
$("#{$id}-categories-search").bind("typeahead:selected", function(obj, datum) {
|
||||||
|
$("#{$id}").find(":input").each(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
if ($(this).val() == datum.id_category)
|
||||||
|
{
|
||||||
|
$(this).prop("checked", true);
|
||||||
|
$(this).parent().addClass("tree-selected");
|
||||||
|
$(this).parents("ul.tree").each(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
$(this).children().children().children(".icon-folder-close")
|
||||||
|
.removeClass("icon-folder-close")
|
||||||
|
.addClass("icon-folder-open");
|
||||||
|
$(this).show();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
{/if}
|
||||||
|
$(document).ready(function () {
|
||||||
|
$("#{$id}").tree("collapseAll");
|
||||||
|
|
||||||
|
{if isset($selected_categories)}
|
||||||
|
{assign var=imploded_selected_categories value='","'|implode:$selected_categories}
|
||||||
|
var selected_categories = new Array("{$imploded_selected_categories}");
|
||||||
|
|
||||||
|
$("#{$id}").find(":input").each(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
if ($.inArray($(this).val(), selected_categories) != -1)
|
||||||
|
{
|
||||||
|
$(this).prop("checked", true);
|
||||||
|
$(this).parent().addClass("tree-selected");
|
||||||
|
$(this).parents("ul.tree").each(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
$(this).children().children().children(".icon-folder-close")
|
||||||
|
.removeClass("icon-folder-close")
|
||||||
|
.addClass("icon-folder-open");
|
||||||
|
$(this).show();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
{/if}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
{*
|
||||||
|
* 2007-2013 PrestaShop
|
||||||
|
*
|
||||||
|
* NOTICE OF LICENSE
|
||||||
|
*
|
||||||
|
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||||
|
* that is bundled with this package in the file LICENSE.txt.
|
||||||
|
* It is also available through the world-wide-web at this URL:
|
||||||
|
* http://opensource.org/licenses/afl-3.0.php
|
||||||
|
* If you did not receive a copy of the license and are unable to
|
||||||
|
* obtain it through the world-wide-web, please send an email
|
||||||
|
* to license@prestashop.com so we can send you a copy immediately.
|
||||||
|
*
|
||||||
|
* DISCLAIMER
|
||||||
|
*
|
||||||
|
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||||
|
* versions in the future. If you wish to customize PrestaShop for your
|
||||||
|
* needs please refer to http://www.prestashop.com for more information.
|
||||||
|
*
|
||||||
|
* @author PrestaShop SA <contact@prestashop.com>
|
||||||
|
* @copyright 2007-2013 PrestaShop SA
|
||||||
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||||
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
|
*}
|
||||||
|
<li class="tree-folder">
|
||||||
|
<span class="tree-folder-name{if isset($node['disabled']) && $node['disabled'] == true} tree-folder-name-disable{/if}">
|
||||||
|
<input type="radio" name="id_parent" value="{$node['id_category']}"{if isset($node['disabled']) && $node['disabled'] == true} disabled="disabled"{/if} />
|
||||||
|
<i class="icon-folder-close"></i>
|
||||||
|
<label class="tree-toggler ">{$node['name']}</label>
|
||||||
|
</span>
|
||||||
|
<ul class="tree">
|
||||||
|
{$children}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
{*
|
||||||
|
* 2007-2013 PrestaShop
|
||||||
|
*
|
||||||
|
* NOTICE OF LICENSE
|
||||||
|
*
|
||||||
|
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||||
|
* that is bundled with this package in the file LICENSE.txt.
|
||||||
|
* It is also available through the world-wide-web at this URL:
|
||||||
|
* http://opensource.org/licenses/afl-3.0.php
|
||||||
|
* If you did not receive a copy of the license and are unable to
|
||||||
|
* obtain it through the world-wide-web, please send an email
|
||||||
|
* to license@prestashop.com so we can send you a copy immediately.
|
||||||
|
*
|
||||||
|
* DISCLAIMER
|
||||||
|
*
|
||||||
|
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||||
|
* versions in the future. If you wish to customize PrestaShop for your
|
||||||
|
* needs please refer to http://www.prestashop.com for more information.
|
||||||
|
*
|
||||||
|
* @author PrestaShop SA <contact@prestashop.com>
|
||||||
|
* @copyright 2007-2013 PrestaShop SA
|
||||||
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||||
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
|
*}
|
||||||
|
<li class="tree-item{if isset($node['disabled']) && $node['disabled'] == true} tree-item-disable{/if}">
|
||||||
|
<label class="tree-item-name">
|
||||||
|
<input type="radio" name="id_parent" value="{$node['id_category']}"{if isset($node['disabled']) && $node['disabled'] == true} disabled="disabled"{/if} />
|
||||||
|
<i class="tree-dot"></i>
|
||||||
|
{$node['name']}
|
||||||
|
<label>
|
||||||
|
</li>
|
||||||
-27
@@ -1,27 +0,0 @@
|
|||||||
{*
|
|
||||||
* 2007-2013 PrestaShop
|
|
||||||
*
|
|
||||||
* NOTICE OF LICENSE
|
|
||||||
*
|
|
||||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
|
||||||
* that is bundled with this package in the file LICENSE.txt.
|
|
||||||
* It is also available through the world-wide-web at this URL:
|
|
||||||
* http://opensource.org/licenses/afl-3.0.php
|
|
||||||
* If you did not receive a copy of the license and are unable to
|
|
||||||
* obtain it through the world-wide-web, please send an email
|
|
||||||
* to license@prestashop.com so we can send you a copy immediately.
|
|
||||||
*
|
|
||||||
* DISCLAIMER
|
|
||||||
*
|
|
||||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
|
||||||
* versions in the future. If you wish to customize PrestaShop for your
|
|
||||||
* needs please refer to http://www.prestashop.com for more information.
|
|
||||||
*
|
|
||||||
* @author PrestaShop SA <contact@prestashop.com>
|
|
||||||
* @copyright 2007-2013 PrestaShop SA
|
|
||||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
|
||||||
* International Registered Trademark & Property of PrestaShop SA
|
|
||||||
*}
|
|
||||||
<a href="{$link}"{if isset($action)}onclick="{$action}"{/if} class="btn btn-default btn-xs">
|
|
||||||
{if isset($icon_class)}<i class="{$icon_class}"></i> {/if}{l s=$label}
|
|
||||||
</a>
|
|
||||||
-39
@@ -1,39 +0,0 @@
|
|||||||
{*
|
|
||||||
* 2007-2013 PrestaShop
|
|
||||||
*
|
|
||||||
* NOTICE OF LICENSE
|
|
||||||
*
|
|
||||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
|
||||||
* that is bundled with this package in the file LICENSE.txt.
|
|
||||||
* It is also available through the world-wide-web at this URL:
|
|
||||||
* http://opensource.org/licenses/afl-3.0.php
|
|
||||||
* If you did not receive a copy of the license and are unable to
|
|
||||||
* obtain it through the world-wide-web, please send an email
|
|
||||||
* to license@prestashop.com so we can send you a copy immediately.
|
|
||||||
*
|
|
||||||
* DISCLAIMER
|
|
||||||
*
|
|
||||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
|
||||||
* versions in the future. If you wish to customize PrestaShop for your
|
|
||||||
* needs please refer to http://www.prestashop.com for more information.
|
|
||||||
*
|
|
||||||
* @author PrestaShop SA <contact@prestashop.com>
|
|
||||||
* @copyright 2007-2013 PrestaShop SA
|
|
||||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
|
||||||
* International Registered Trademark & Property of PrestaShop SA
|
|
||||||
*}
|
|
||||||
<label for="node-search">{l s=$label}</label> <input type="text"{if isset($id)} id="{$id}"{/if}{if isset($name)} name="{$name}"{/if}{if isset($class)} class="{$class}"{/if} />
|
|
||||||
{if isset($typeahead_source) && isset($id)}
|
|
||||||
<script type="text/javascript">
|
|
||||||
$(document).ready(
|
|
||||||
function()
|
|
||||||
{
|
|
||||||
$("#{$id}").typeahead(
|
|
||||||
{
|
|
||||||
name: "{$name}",
|
|
||||||
local: [{$typeahead_source}]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
</script>
|
|
||||||
{/if}
|
|
||||||
@@ -289,7 +289,6 @@
|
|||||||
|
|
||||||
<div id="main">
|
<div id="main">
|
||||||
{include file='nav-top.tpl'}
|
{include file='nav-top.tpl'}
|
||||||
{include file='nav-side.tpl'}
|
|
||||||
|
|
||||||
<div id="content" class="page-content">
|
<div id="content" class="page-content">
|
||||||
{if $display_header && $install_dir_exists}
|
{if $display_header && $install_dir_exists}
|
||||||
|
|||||||
@@ -158,7 +158,19 @@
|
|||||||
{if isset($input.disabled) && $input.disabled}disabled="disabled"{/if}
|
{if isset($input.disabled) && $input.disabled}disabled="disabled"{/if}
|
||||||
{if isset($input.autocomplete) && !$input.autocomplete}autocomplete="off"{/if} />
|
{if isset($input.autocomplete) && !$input.autocomplete}autocomplete="off"{/if} />
|
||||||
{if isset($input.suffix)}{$input.suffix}{/if}
|
{if isset($input.suffix)}{$input.suffix}{/if}
|
||||||
{if !empty($input.desc)}<div class="alert alert-info">{$input.desc}</div>{/if}
|
{if !empty($input.desc)}
|
||||||
|
<div class="alert alert-info">
|
||||||
|
{if is_array($input.desc)}
|
||||||
|
<ul>
|
||||||
|
{foreach $input.desc as $desc}
|
||||||
|
<li>{$desc}</li>
|
||||||
|
{/foreach}
|
||||||
|
</ul>
|
||||||
|
{else}
|
||||||
|
{$input.desc}
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
{elseif $input.type == 'select'}
|
{elseif $input.type == 'select'}
|
||||||
{if isset($input.options.query) && !$input.options.query && isset($input.empty_message)}
|
{if isset($input.options.query) && !$input.options.query && isset($input.empty_message)}
|
||||||
@@ -405,7 +417,7 @@
|
|||||||
{elseif $input.type == 'shop'}
|
{elseif $input.type == 'shop'}
|
||||||
{$input.html}
|
{$input.html}
|
||||||
{elseif $input.type == 'categories'}
|
{elseif $input.type == 'categories'}
|
||||||
{include file='helpers/form/form_category.tpl' categories=$input.values}
|
{$categories_tree}
|
||||||
{elseif $input.type == 'categories_select'}
|
{elseif $input.type == 'categories_select'}
|
||||||
{$input.category_tree}
|
{$input.category_tree}
|
||||||
{elseif $input.type == 'asso_shop' && isset($asso_shop) && $asso_shop}
|
{elseif $input.type == 'asso_shop' && isset($asso_shop) && $asso_shop}
|
||||||
|
|||||||
File renamed without changes.
@@ -0,0 +1,116 @@
|
|||||||
|
{*
|
||||||
|
* 2007-2013 PrestaShop
|
||||||
|
*
|
||||||
|
* NOTICE OF LICENSE
|
||||||
|
*
|
||||||
|
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||||
|
* that is bundled with this package in the file LICENSE.txt.
|
||||||
|
* It is also available through the world-wide-web at this URL:
|
||||||
|
* http://opensource.org/licenses/afl-3.0.php
|
||||||
|
* If you did not receive a copy of the license and are unable to
|
||||||
|
* obtain it through the world-wide-web, please send an email
|
||||||
|
* to license@prestashop.com so we can send you a copy immediately.
|
||||||
|
*
|
||||||
|
* DISCLAIMER
|
||||||
|
*
|
||||||
|
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||||
|
* versions in the future. If you wish to customize PrestaShop for your
|
||||||
|
* needs please refer to http://www.prestashop.com for more information.
|
||||||
|
*
|
||||||
|
* @author PrestaShop SA <contact@prestashop.com>
|
||||||
|
* @copyright 2007-2013 PrestaShop SA
|
||||||
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||||
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
|
*}
|
||||||
|
<div class="panel">
|
||||||
|
{if isset($header)}{$header}{/if}
|
||||||
|
{if isset($nodes)}
|
||||||
|
<ul id="{$id}" class="tree">
|
||||||
|
{$nodes}
|
||||||
|
</ul>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
{if isset($use_checkbox) && $use_checkbox == true}
|
||||||
|
function checkAllAssociatedCategories($tree)
|
||||||
|
{
|
||||||
|
$tree.find(":input[type=checkbox]").each(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
$(this).prop("checked", true);
|
||||||
|
$(this).parent().addClass("tree-selected");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function uncheckAllAssociatedCategories($tree)
|
||||||
|
{
|
||||||
|
$tree.find(":input[type=checkbox]").each(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
$(this).prop("checked", false);
|
||||||
|
$(this).parent().removeClass("tree-selected");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
{/if}
|
||||||
|
{if isset($use_search) && $use_search == true}
|
||||||
|
$("#{$id}-categories-search").bind("typeahead:selected", function(obj, datum) {
|
||||||
|
$("#{$id}").find(":input").each(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
if ($(this).val() == datum.id_category)
|
||||||
|
{
|
||||||
|
$(this).prop("checked", true);
|
||||||
|
$(this).parent().addClass("tree-selected");
|
||||||
|
$(this).parents("ul.tree").each(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
$(this).children().children().children(".icon-folder-close")
|
||||||
|
.removeClass("icon-folder-close")
|
||||||
|
.addClass("icon-folder-open");
|
||||||
|
$(this).show();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
{/if}
|
||||||
|
$(document).ready(function () {
|
||||||
|
$("#{$id}").tree("collapseAll");
|
||||||
|
$("#{$id}").find(":input[type=radio]").click(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
location.href = location.href.replace(
|
||||||
|
/&id_category=[0-9]*/, "")+"&id_category="
|
||||||
|
+$(this).val();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
{if isset($selected_categories)}
|
||||||
|
{assign var=imploded_selected_categories value='","'|implode:$selected_categories}
|
||||||
|
var selected_categories = new Array("{$imploded_selected_categories}");
|
||||||
|
|
||||||
|
$("#{$id}").find(":input").each(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
if ($.inArray($(this).val(), selected_categories) != -1)
|
||||||
|
{
|
||||||
|
$(this).prop("checked", true);
|
||||||
|
$(this).parent().addClass("tree-selected");
|
||||||
|
$(this).parents("ul.tree").each(
|
||||||
|
function()
|
||||||
|
{
|
||||||
|
$(this).children().children().children(".icon-folder-close")
|
||||||
|
.removeClass("icon-folder-close")
|
||||||
|
.addClass("icon-folder-open");
|
||||||
|
$(this).show();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
{/if}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
File renamed without changes.
@@ -22,7 +22,6 @@
|
|||||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*}
|
*}
|
||||||
|
|
||||||
<li class="tree-folder">
|
<li class="tree-folder">
|
||||||
<span class="tree-folder-name">
|
<span class="tree-folder-name">
|
||||||
<i class="icon-folder-close"></i>
|
<i class="icon-folder-close"></i>
|
||||||
|
|||||||
+2
-2
@@ -23,8 +23,8 @@
|
|||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*}
|
*}
|
||||||
<li class="tree-folder">
|
<li class="tree-folder">
|
||||||
<span class="tree-folder-name">
|
<span class="tree-folder-name{if isset($node['disabled']) && $node['disabled'] == true} tree-folder-name-disable{/if}">
|
||||||
<input type="checkbox" name="categoryBox[]" value="{$node['id_category']}" />
|
<input type="checkbox" name="categoryBox[]" value="{$node['id_category']}"{if isset($node['disabled']) && $node['disabled'] == true} disabled="disabled"{/if} />
|
||||||
<i class="icon-folder-close"></i>
|
<i class="icon-folder-close"></i>
|
||||||
<label class="tree-toggler">{$node['name']}</label>
|
<label class="tree-toggler">{$node['name']}</label>
|
||||||
</span>
|
</span>
|
||||||
+2
-2
@@ -23,8 +23,8 @@
|
|||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*}
|
*}
|
||||||
<li class="tree-folder">
|
<li class="tree-folder">
|
||||||
<span class="tree-folder-name">
|
<span class="tree-folder-name{if isset($node['disabled']) && $node['disabled'] == true} tree-folder-name-disable{/if}">
|
||||||
<input type="radio" name="id-category" value="{$node['id_category']}" />
|
<input type="radio" name="id-category" value="{$node['id_category']}"{if isset($node['disabled']) && $node['disabled'] == true} disabled="disabled"{/if} />
|
||||||
<i class="icon-folder-close"></i>
|
<i class="icon-folder-close"></i>
|
||||||
<label class="tree-toggler ">{$node['name']}</label>
|
<label class="tree-toggler ">{$node['name']}</label>
|
||||||
</span>
|
</span>
|
||||||
+2
-2
@@ -22,9 +22,9 @@
|
|||||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*}
|
*}
|
||||||
<li class="tree-item">
|
<li class="tree-item{if isset($node['disabled']) && $node['disabled'] == true} tree-item-disable{/if}">
|
||||||
<label class="tree-item-name">
|
<label class="tree-item-name">
|
||||||
<input type="checkbox" name="categoryBox[]" value="{$node['id_category']}" />
|
<input type="checkbox" name="categoryBox[]" value="{$node['id_category']}"{if isset($node['disabled']) && $node['disabled'] == true} disabled="disabled"{/if} />
|
||||||
<i class="tree-dot"></i>
|
<i class="tree-dot"></i>
|
||||||
{$node['name']}
|
{$node['name']}
|
||||||
</label>
|
</label>
|
||||||
+2
-2
@@ -22,9 +22,9 @@
|
|||||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*}
|
*}
|
||||||
<li class="tree-item">
|
<li class="tree-item{if isset($node['disabled']) && $node['disabled'] == true} tree-item-disable{/if}">
|
||||||
<label class="tree-item-name">
|
<label class="tree-item-name">
|
||||||
<input type="radio" name="id-category" value="{$node['id_category']}" />
|
<input type="radio" name="id-category" value="{$node['id_category']}"{if isset($node['disabled']) && $node['disabled'] == true} disabled="disabled"{/if} />
|
||||||
<i class="tree-dot"></i>
|
<i class="tree-dot"></i>
|
||||||
{$node['name']}
|
{$node['name']}
|
||||||
<label>
|
<label>
|
||||||
File renamed without changes.
@@ -1,4 +1,4 @@
|
|||||||
<nav id="nav-topbar" data-spy="affix" data-offset-top="34px" role="navigation">
|
<nav id="nav-topbar" data-spy="affix" data-offset-top="0" role="navigation">
|
||||||
{if !$tab}
|
{if !$tab}
|
||||||
<div class="mainsubtablist" style="display:none"></div>
|
<div class="mainsubtablist" style="display:none"></div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -477,15 +477,19 @@ class CategoryCore extends ObjectModel
|
|||||||
return $categories;
|
return $categories;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getNestedCategories($root_category = 1,
|
public static function getNestedCategories($root_category = null,
|
||||||
$id_lang = false, $active = true, $sql_filter = '', $sql_sort = '',
|
$id_lang = false, $active = true, $sql_filter = '', $sql_sort = '',
|
||||||
$sql_limit = '')
|
$sql_limit = '')
|
||||||
{
|
{
|
||||||
|
if (!isset($root_category))
|
||||||
|
$root_category = self::getRootCategory($id_lang)->id;
|
||||||
|
|
||||||
if (!Validate::isInt($root_category))
|
if (!Validate::isInt($root_category))
|
||||||
die(Tools::displayError());
|
die(Tools::displayError());
|
||||||
|
|
||||||
if (!Validate::isBool($active))
|
if (!Validate::isBool($active))
|
||||||
die(Tools::displayError());
|
die(Tools::displayError());
|
||||||
|
|
||||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
|
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM `'._DB_PREFIX_.'category` c
|
FROM `'._DB_PREFIX_.'category` c
|
||||||
|
|||||||
@@ -89,16 +89,18 @@ class HelperFormCore extends Helper
|
|||||||
case 'categories':
|
case 'categories':
|
||||||
if ($categories)
|
if ($categories)
|
||||||
{
|
{
|
||||||
// Added Jquery plugin treeview (css and js files)
|
$tree = new HelperTreeCategories($params['tree']['id'], isset($params['tree']['title']) ? $params['tree']['title'] : null);
|
||||||
$this->context->controller->addJqueryPlugin('treeview-categories');
|
|
||||||
|
|
||||||
// Added JS files
|
if (isset($params['tree']['selected_categories']))
|
||||||
$this->context->controller->addJS(_PS_JS_DIR_.'jquery/plugins/treeview-categories/jquery.treeview-categories.async.js');
|
$tree->setSelectedCategories($params['tree']['selected_categories']);
|
||||||
$this->context->controller->addJS(_PS_JS_DIR_.'jquery/plugins/treeview-categories/jquery.treeview-categories.edit.js');
|
|
||||||
$this->context->controller->addJS(_PS_JS_DIR_.'admin-categories-tree.js');
|
|
||||||
|
|
||||||
if (isset($params['use_search']) && $params['use_search'])
|
if (isset($params['tree']['disabled_categories']))
|
||||||
$this->context->controller->addJS(_PS_JS_DIR_.'jquery/plugins/autocomplete/jquery.autocomplete.js');
|
$tree->setDisabledCategories($params['tree']['disabled_categories']);
|
||||||
|
|
||||||
|
if (isset($params['tree']['root_category']))
|
||||||
|
$tree->setRootCategory($params['tree']['root_category']);
|
||||||
|
|
||||||
|
$this->context->smarty->assign('categories_tree', $tree->render());
|
||||||
$categories = false;
|
$categories = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -225,6 +227,7 @@ class HelperFormCore extends Helper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$tpl = $this->createTemplate('assoshop.tpl');
|
$tpl = $this->createTemplate('assoshop.tpl');
|
||||||
$tree = Shop::getTree();
|
$tree = Shop::getTree();
|
||||||
$nb_shop = 0;
|
$nb_shop = 0;
|
||||||
|
|||||||
@@ -0,0 +1,265 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* 2007-2013 PrestaShop
|
||||||
|
*
|
||||||
|
* NOTICE OF LICENSE
|
||||||
|
*
|
||||||
|
* This source file is subject to the Open Software License (OSL 3.0)
|
||||||
|
* that is bundled with this package in the file LICENSE.txt.
|
||||||
|
* It is also available through the world-wide-web at this URL:
|
||||||
|
* http://opensource.org/licenses/osl-3.0.php
|
||||||
|
* If you did not receive a copy of the license and are unable to
|
||||||
|
* obtain it through the world-wide-web, please send an email
|
||||||
|
* to license@prestashop.com so we can send you a copy immediately.
|
||||||
|
*
|
||||||
|
* DISCLAIMER
|
||||||
|
*
|
||||||
|
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||||
|
* versions in the future. If you wish to customize PrestaShop for your
|
||||||
|
* needs please refer to http://www.prestashop.com for more information.
|
||||||
|
*
|
||||||
|
* @author PrestaShop SA <contact@prestashop.com>
|
||||||
|
* @copyright 2007-2013 PrestaShop SA
|
||||||
|
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||||
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
|
*/
|
||||||
|
|
||||||
|
class HelperTreeCategories extends TreeCore
|
||||||
|
{
|
||||||
|
const DEFAULT_TEMPLATE = 'tree_categories.tpl';
|
||||||
|
const DEFAULT_NODE_FOLDER_TEMPLATE = 'tree_node_folder_radio.tpl';
|
||||||
|
const DEFAULT_NODE_ITEM_TEMPLATE = 'tree_node_item_radio.tpl';
|
||||||
|
|
||||||
|
private $_disabled_categories;
|
||||||
|
private $_lang;
|
||||||
|
private $_root_category;
|
||||||
|
private $_selected_categories;
|
||||||
|
private $_shop;
|
||||||
|
private $_use_checkbox;
|
||||||
|
private $_use_search;
|
||||||
|
|
||||||
|
public function __construct($id, $title = null, $root_category = null,
|
||||||
|
$lang = null, $shop = null)
|
||||||
|
{
|
||||||
|
parent::__construct($id);
|
||||||
|
|
||||||
|
if (isset($title))
|
||||||
|
$this->setTitle($title);
|
||||||
|
|
||||||
|
if (isset($root_category))
|
||||||
|
$this->setRootCategory($root_category);
|
||||||
|
|
||||||
|
$this->setLang($lang);
|
||||||
|
$this->setShop($shop);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getData()
|
||||||
|
{
|
||||||
|
if (!isset($this->_data))
|
||||||
|
$this->setData(Category::getNestedCategories(
|
||||||
|
$this->getRootCategory(), $this->getLang()));
|
||||||
|
|
||||||
|
return $this->_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setDisabledCategories($value)
|
||||||
|
{
|
||||||
|
$this->_disabled_categories = $value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDisabledCategories()
|
||||||
|
{
|
||||||
|
return $this->_disabled_categories;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setLang($value)
|
||||||
|
{
|
||||||
|
$this->_lang = $value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLang()
|
||||||
|
{
|
||||||
|
if (!isset($this->_lang))
|
||||||
|
$this->setLang($this->getContext()->employee->id_lang);
|
||||||
|
|
||||||
|
return $this->_lang;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getNodeFolderTemplate()
|
||||||
|
{
|
||||||
|
if (!isset($this->_node_folder_template))
|
||||||
|
$this->setNodeFolderTemplate(self::DEFAULT_NODE_FOLDER_TEMPLATE);
|
||||||
|
|
||||||
|
return $this->_node_folder_template;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getNodeItemTemplate()
|
||||||
|
{
|
||||||
|
if (!isset($this->_node_item_template))
|
||||||
|
$this->setNodeItemTemplate(self::DEFAULT_NODE_ITEM_TEMPLATE);
|
||||||
|
|
||||||
|
return $this->_node_item_template;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setRootCategory($value)
|
||||||
|
{
|
||||||
|
if (!Validate::isInt($value))
|
||||||
|
throw new PrestaShopException('Root category must be an integer value');
|
||||||
|
|
||||||
|
$this->_root_category = $value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRootCategory()
|
||||||
|
{
|
||||||
|
if (!isset($this->_root_category))
|
||||||
|
$this->setRootCategory(Category::getRootCategory($this->getLang())
|
||||||
|
->id);
|
||||||
|
|
||||||
|
return $this->_root_category;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSelectedCategories($value)
|
||||||
|
{
|
||||||
|
if (!is_array($value))
|
||||||
|
throw new PrestaShopException('Selected categories value must be an array');
|
||||||
|
|
||||||
|
$this->_selected_categories = $value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSelectedCatgories()
|
||||||
|
{
|
||||||
|
if (!isset($this->_selected_categories))
|
||||||
|
$this->_selected_categories = array();
|
||||||
|
|
||||||
|
return $this->_selected_categories;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setShop($value)
|
||||||
|
{
|
||||||
|
$this->_shop = $value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShop()
|
||||||
|
{
|
||||||
|
if (!isset($this->_shop))
|
||||||
|
{
|
||||||
|
if (Tools::isSubmit('id_shop'))
|
||||||
|
$this->setShop(new Shop(Tools::getValue('id_shop')));
|
||||||
|
else
|
||||||
|
if ($this->getContext()->shop->id)
|
||||||
|
$this->setShop(new Shop($this->getContext()->shop->id));
|
||||||
|
else
|
||||||
|
if (!Shop::isFeatureActive())
|
||||||
|
$this->setShop(new Shop(Configuration::get('PS_SHOP_DEFAULT')));
|
||||||
|
else
|
||||||
|
$this->setShop(new Shop(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->_shop;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTemplate()
|
||||||
|
{
|
||||||
|
if (!isset($this->_template))
|
||||||
|
$this->setTemplate(self::DEFAULT_TEMPLATE);
|
||||||
|
|
||||||
|
return $this->_template;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setUseCheckBox($value)
|
||||||
|
{
|
||||||
|
$this->_use_checkbox = (bool)$value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setUseSearch($value)
|
||||||
|
{
|
||||||
|
$this->_use_search = (bool)$value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function useCheckBox()
|
||||||
|
{
|
||||||
|
return (isset($this->_use_checkbox) && $this->_use_checkbox);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function useSearch()
|
||||||
|
{
|
||||||
|
return (isset($this->_use_search) && $this->_use_search);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render($data = NULL)
|
||||||
|
{
|
||||||
|
if (!isset($data))
|
||||||
|
$data = $this->getData();
|
||||||
|
|
||||||
|
if (isset($this->_disabled_categories)
|
||||||
|
&& !empty($this->_disabled_categories))
|
||||||
|
$this->_disableCategories($data, $this->getDisabledCategories());
|
||||||
|
|
||||||
|
$this->setActions(array(
|
||||||
|
new TreeToolbarLink(
|
||||||
|
'Collapse All',
|
||||||
|
'#',
|
||||||
|
'$(\'#'.$this->getId().'\').tree(\'collapseAll\')',
|
||||||
|
'icon-collapse-alt'),
|
||||||
|
new TreeToolbarLink(
|
||||||
|
'Expand All',
|
||||||
|
'#',
|
||||||
|
'$(\'#'.$this->getId().'\').tree(\'expandAll\')',
|
||||||
|
'icon-expand-alt')
|
||||||
|
));
|
||||||
|
|
||||||
|
if ($this->useCheckBox())
|
||||||
|
{
|
||||||
|
$this->addAction(new TreeToolbarLink(
|
||||||
|
'Check All',
|
||||||
|
'#',
|
||||||
|
'checkAllAssociatedCategories($(\'#'.$this->getId().'\'));',
|
||||||
|
'icon-check-sign')
|
||||||
|
);
|
||||||
|
$this->addAction(new TreeToolbarLink(
|
||||||
|
'Uncheck All',
|
||||||
|
'#',
|
||||||
|
'uncheckAllAssociatedCategories($(\'#'.$this->getId().'\'));',
|
||||||
|
'icon-check-empty')
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->setNodeFolderTemplate('tree_node_folder_checkbox.tpl');
|
||||||
|
$this->setNodeItemTemplate('tree_node_item_checkbox.tpl');
|
||||||
|
$this->setAttribute('use_checkbox', $this->useCheckBox());
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->useSearch())
|
||||||
|
{
|
||||||
|
$this->addAction(new TreeToolbarSearch(
|
||||||
|
'Find a category:',
|
||||||
|
$this->getId().'-categories-search')
|
||||||
|
);
|
||||||
|
$this->setAttribute('use_search', $this->useSearch());
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->setAttribute('selected_categories', $this->getSelectedCatgories());
|
||||||
|
return parent::render($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function _disableCategories(&$categories, $disabled_categories = null)
|
||||||
|
{
|
||||||
|
foreach ($categories as &$category)
|
||||||
|
{
|
||||||
|
if (!isset($disabled_categories) || in_array($category['id_category'], $disabled_categories))
|
||||||
|
{
|
||||||
|
$category['disabled'] = true;
|
||||||
|
if (array_key_exists('children', $category) && is_array($category['children']))
|
||||||
|
self::_disableCategories($category['children']);
|
||||||
|
}
|
||||||
|
else if (array_key_exists('children', $category) && is_array($category['children']))
|
||||||
|
self::_disableCategories($category['children'], $disabled_categories);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
interface HelperITreeToolbarCore
|
interface ITreeToolbarCore
|
||||||
{
|
{
|
||||||
public function __toString();
|
public function __toString();
|
||||||
public function setActions($value);
|
public function setActions($value);
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
interface HelperITreeToolbarButtonCore
|
interface ITreeToolbarButtonCore
|
||||||
{
|
{
|
||||||
public function __toString();
|
public function __toString();
|
||||||
public function setAttribute($name, $value);
|
public function setAttribute($name, $value);
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class HelperTreeCore
|
class TreeCore
|
||||||
{
|
{
|
||||||
const DEFAULT_TEMPLATE_DIRECTORY = 'helpers/tree';
|
const DEFAULT_TEMPLATE_DIRECTORY = 'helpers/tree';
|
||||||
const DEFAULT_TEMPLATE = 'tree.tpl';
|
const DEFAULT_TEMPLATE = 'tree.tpl';
|
||||||
@@ -32,15 +32,16 @@ class HelperTreeCore
|
|||||||
const DEFAULT_NODE_FOLDER_TEMPLATE = 'tree_node_folder.tpl';
|
const DEFAULT_NODE_FOLDER_TEMPLATE = 'tree_node_folder.tpl';
|
||||||
const DEFAULT_NODE_ITEM_TEMPLATE = 'tree_node_item.tpl';
|
const DEFAULT_NODE_ITEM_TEMPLATE = 'tree_node_item.tpl';
|
||||||
|
|
||||||
private $_context;
|
protected $_attributes;
|
||||||
private $_data;
|
private $_context;
|
||||||
private $_headerTemplate;
|
protected $_data;
|
||||||
private $_id;
|
protected $_headerTemplate;
|
||||||
private $_node_folder_template;
|
private $_id;
|
||||||
private $_node_item_template;
|
protected $_node_folder_template;
|
||||||
private $_template;
|
protected $_node_item_template;
|
||||||
private $_template_directory;
|
protected $_template;
|
||||||
private $_title;
|
private $_template_directory;
|
||||||
|
private $_title;
|
||||||
|
|
||||||
public function __construct($id, $data = null)
|
public function __construct($id, $data = null)
|
||||||
{
|
{
|
||||||
@@ -58,7 +59,7 @@ class HelperTreeCore
|
|||||||
public function setActions($value)
|
public function setActions($value)
|
||||||
{
|
{
|
||||||
if (!isset($this->_toolbar))
|
if (!isset($this->_toolbar))
|
||||||
$this->setToolbar(new HelperTreeToolbarCore());
|
$this->setToolbar(new TreeToolbarCore());
|
||||||
|
|
||||||
$this->getToolbar()->setActions($value);
|
$this->getToolbar()->setActions($value);
|
||||||
return $this;
|
return $this;
|
||||||
@@ -67,7 +68,7 @@ class HelperTreeCore
|
|||||||
public function getActions()
|
public function getActions()
|
||||||
{
|
{
|
||||||
if (!isset($this->_toolbar))
|
if (!isset($this->_toolbar))
|
||||||
$this->setToolbar(new HelperTreeToolbarCore());
|
$this->setToolbar(new TreeToolbarCore());
|
||||||
|
|
||||||
return $this->getToolbar()->getActions();
|
return $this->getToolbar()->getActions();
|
||||||
}
|
}
|
||||||
@@ -75,12 +76,43 @@ class HelperTreeCore
|
|||||||
public function addAction($action)
|
public function addAction($action)
|
||||||
{
|
{
|
||||||
if (!isset($this->_toolbar))
|
if (!isset($this->_toolbar))
|
||||||
$this->setToolbar(new HelperTreeToolbarCore());
|
$this->setToolbar(new TreeToolbarCore());
|
||||||
|
|
||||||
$this->getToolbar()->addAction($action);
|
$this->getToolbar()->addAction($action);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setAttribute($name, $value)
|
||||||
|
{
|
||||||
|
if (!isset($this->_attributes))
|
||||||
|
$this->_attributes = array();
|
||||||
|
|
||||||
|
$this->_attributes[$name] = $value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttribute($name)
|
||||||
|
{
|
||||||
|
return $this->hasAttribute($name) ? $this->_attributes[$name] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setAttributes($value)
|
||||||
|
{
|
||||||
|
if (!is_array($value) && !$value instanceof Traversable)
|
||||||
|
throw new PrestaShopException('Data value must be an traversable array');
|
||||||
|
|
||||||
|
$this->_attributes = $value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributes()
|
||||||
|
{
|
||||||
|
if (!isset($this->_attributes))
|
||||||
|
$this->_attributes = array();
|
||||||
|
|
||||||
|
return $this->_attributes;
|
||||||
|
}
|
||||||
|
|
||||||
public function setContext($value)
|
public function setContext($value)
|
||||||
{
|
{
|
||||||
$this->_context = $value;
|
$this->_context = $value;
|
||||||
@@ -250,7 +282,7 @@ class HelperTreeCore
|
|||||||
|
|
||||||
$reflection = new ReflectionClass($value);
|
$reflection = new ReflectionClass($value);
|
||||||
|
|
||||||
if (!$reflection->implementsInterface('HelperITreeToolbarCore'))
|
if (!$reflection->implementsInterface('ITreeToolbarCore'))
|
||||||
throw new PrestaShopException('Toolbar class must implements ITreeToolbarCore interface');
|
throw new PrestaShopException('Toolbar class must implements ITreeToolbarCore interface');
|
||||||
|
|
||||||
$this->_toolbar = $value;
|
$this->_toolbar = $value;
|
||||||
@@ -315,7 +347,9 @@ class HelperTreeCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Assign Tree nodes
|
//Assign Tree nodes
|
||||||
$template->assign(array(
|
$template
|
||||||
|
->assign($this->getAttributes())
|
||||||
|
->assign(array(
|
||||||
'id' => $this->getId(),
|
'id' => $this->getId(),
|
||||||
'nodes' => $this->renderNodes($data)
|
'nodes' => $this->renderNodes($data)
|
||||||
));
|
));
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class HelperTreeToolbarCore implements HelperITreeToolbarCore
|
class TreeToolbarCore implements ITreeToolbarCore
|
||||||
{
|
{
|
||||||
const DEFAULT_TEMPLATE_DIRECTORY = 'helpers/tree';
|
const DEFAULT_TEMPLATE_DIRECTORY = 'helpers/tree';
|
||||||
const DEFAULT_TEMPLATE = 'tree_toolbar.tpl';
|
const DEFAULT_TEMPLATE = 'tree_toolbar.tpl';
|
||||||
@@ -159,7 +159,7 @@ class HelperTreeToolbarCore implements HelperITreeToolbarCore
|
|||||||
|
|
||||||
$reflection = new ReflectionClass($action);
|
$reflection = new ReflectionClass($action);
|
||||||
|
|
||||||
if (!$reflection->implementsInterface('HelperITreeToolbarButtonCore'))
|
if (!$reflection->implementsInterface('ITreeToolbarButtonCore'))
|
||||||
throw new PrestaShopException('Action class must implements ITreeToolbarButtonCore interface');
|
throw new PrestaShopException('Action class must implements ITreeToolbarButtonCore interface');
|
||||||
|
|
||||||
if (!isset($this->_actions))
|
if (!isset($this->_actions))
|
||||||
@@ -173,7 +173,7 @@ class HelperTreeToolbarCore implements HelperITreeToolbarCore
|
|||||||
{
|
{
|
||||||
foreach ($this->getActions() as $action)
|
foreach ($this->getActions() as $action)
|
||||||
{
|
{
|
||||||
if ($action instanceof HelperTreeToolbarSearchCore)
|
if ($action instanceof TreeToolbarSearchCore)
|
||||||
$action->setAttribute('data', $this->getData());
|
$action->setAttribute('data', $this->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
abstract class HelperTreeToolbarButtonCore
|
abstract class TreeToolbarButtonCore
|
||||||
{
|
{
|
||||||
const DEFAULT_TEMPLATE_DIRECTORY = 'helpers/tree';
|
const DEFAULT_TEMPLATE_DIRECTORY = 'helpers/tree';
|
||||||
|
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class HelperTreeToolbarLinkCore extends HelperTreeToolbarButtonCore implements
|
class TreeToolbarLinkCore extends TreeToolbarButtonCore implements
|
||||||
HelperITreeToolbarButtonCore
|
ITreeToolbarButtonCore
|
||||||
{
|
{
|
||||||
private $_action;
|
private $_action;
|
||||||
private $_icon_class;
|
private $_icon_class;
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
* International Registered Trademark & Property of PrestaShop SA
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class HelperTreeToolbarSearchCore extends HelperTreeToolbarButtonCore implements
|
class TreeToolbarSearchCore extends TreeToolbarButtonCore implements
|
||||||
HelperITreeToolbarButtonCore
|
ITreeToolbarButtonCore
|
||||||
{
|
{
|
||||||
protected $_template = 'tree_toolbar_search.tpl';
|
protected $_template = 'tree_toolbar_search.tpl';
|
||||||
|
|
||||||
@@ -340,7 +340,7 @@ class AdminCategoriesControllerCore extends AdminController
|
|||||||
$this->initToolbar();
|
$this->initToolbar();
|
||||||
$obj = $this->loadObject(true);
|
$obj = $this->loadObject(true);
|
||||||
$id_shop = Context::getContext()->shop->id;
|
$id_shop = Context::getContext()->shop->id;
|
||||||
$selected_cat = array((isset($obj->id_parent) && $obj->isParentCategoryAvailable($id_shop))? (int)$obj->id_parent : (int)Tools::getValue('id_parent', Category::getRootCategory()->id));
|
$selected_categories = array((isset($obj->id_parent) && $obj->isParentCategoryAvailable($id_shop))? (int)$obj->id_parent : (int)Tools::getValue('id_parent', Category::getRootCategory()->id));
|
||||||
$unidentified = new Group(Configuration::get('PS_UNIDENTIFIED_GROUP'));
|
$unidentified = new Group(Configuration::get('PS_UNIDENTIFIED_GROUP'));
|
||||||
$guest = new Group(Configuration::get('PS_GUEST_GROUP'));
|
$guest = new Group(Configuration::get('PS_GUEST_GROUP'));
|
||||||
$default = new Group(Configuration::get('PS_CUSTOMER_GROUP'));
|
$default = new Group(Configuration::get('PS_CUSTOMER_GROUP'));
|
||||||
@@ -348,8 +348,7 @@ class AdminCategoriesControllerCore extends AdminController
|
|||||||
$unidentified_group_information = sprintf($this->l('%s - All people without a valid customer account.'), '<b>'.$unidentified->name[$this->context->language->id].'</b>');
|
$unidentified_group_information = sprintf($this->l('%s - All people without a valid customer account.'), '<b>'.$unidentified->name[$this->context->language->id].'</b>');
|
||||||
$guest_group_information = sprintf($this->l('%s - Customer who placed an order with the guest checkout.'), '<b>'.$guest->name[$this->context->language->id].'</b>');
|
$guest_group_information = sprintf($this->l('%s - Customer who placed an order with the guest checkout.'), '<b>'.$guest->name[$this->context->language->id].'</b>');
|
||||||
$default_group_information = sprintf($this->l('%s - All people who have created an account on this site.'), '<b>'.$default->name[$this->context->language->id].'</b>');
|
$default_group_information = sprintf($this->l('%s - All people who have created an account on this site.'), '<b>'.$default->name[$this->context->language->id].'</b>');
|
||||||
$root_category = Category::getRootCategory();
|
|
||||||
$root_category = array('id_category' => $root_category->id, 'name' => $root_category->name);
|
|
||||||
$this->fields_form = array(
|
$this->fields_form = array(
|
||||||
'tinymce' => true,
|
'tinymce' => true,
|
||||||
'legend' => array(
|
'legend' => array(
|
||||||
@@ -386,23 +385,13 @@ class AdminCategoriesControllerCore extends AdminController
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'type' => 'categories',
|
'type' => 'categories',
|
||||||
'label' => $this->l('Parent category:'),
|
'label' => $this->l('Parent category:'),
|
||||||
'name' => 'id_parent',
|
'name' => 'id_parent',
|
||||||
'values' => array(
|
'tree' => array(
|
||||||
'trads' => array(
|
'id' => 'categories-tree',
|
||||||
'Root' => $root_category,
|
'selected_categories' => $selected_categories,
|
||||||
'selected' => $this->l('Selected'),
|
'disabled_categories' => !Tools::isSubmit('add'.$this->table) ? array($this->_category->id) : null
|
||||||
'Collapse All' => $this->l('Collapse All'),
|
|
||||||
'Expand All' => $this->l('Expand All')
|
|
||||||
),
|
|
||||||
'selected_cat' => $selected_cat,
|
|
||||||
'input_name' => 'id_parent',
|
|
||||||
'use_radio' => true,
|
|
||||||
'use_search' => false,
|
|
||||||
'disabled_categories' => array(4),
|
|
||||||
'top_category' => Category::getTopCategory(),
|
|
||||||
'use_context' => true,
|
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
|
|||||||
@@ -2309,7 +2309,9 @@ class AdminProductsControllerCore extends AdminController
|
|||||||
$this->tpl_list_vars['is_category_filter'] = (bool)$this->id_current_category;
|
$this->tpl_list_vars['is_category_filter'] = (bool)$this->id_current_category;
|
||||||
|
|
||||||
// Generate category selection tree
|
// Generate category selection tree
|
||||||
$this->tpl_list_vars['category_tree'] = $this->renderCategoriesTree((int)$id_category);
|
$tree = new HelperTreeCategories('categories-tree', 'Filter by category');
|
||||||
|
$tree->setSelectedCategories(array((int)$id_category));
|
||||||
|
$this->tpl_list_vars['category_tree'] = $tree->render();
|
||||||
|
|
||||||
// used to build the new url when changing category
|
// used to build the new url when changing category
|
||||||
$this->tpl_list_vars['base_url'] = preg_replace('#&id_category=[0-9]*#', '', self::$currentIndex).'&token='.$this->token;
|
$this->tpl_list_vars['base_url'] = preg_replace('#&id_category=[0-9]*#', '', self::$currentIndex).'&token='.$this->token;
|
||||||
@@ -2328,186 +2330,6 @@ class AdminProductsControllerCore extends AdminController
|
|||||||
return parent::renderList();
|
return parent::renderList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderCategoriesTree($selected_category = null)
|
|
||||||
{
|
|
||||||
if (Tools::isSubmit('id_shop'))
|
|
||||||
$id_shop = Tools::getValue('id_shop');
|
|
||||||
else
|
|
||||||
if (Context::getContext()->shop->id)
|
|
||||||
$id_shop = Context::getContext()->shop->id;
|
|
||||||
else
|
|
||||||
if (!Shop::isFeatureActive())
|
|
||||||
$id_shop = Configuration::get('PS_SHOP_DEFAULT');
|
|
||||||
else
|
|
||||||
$id_shop = 0;
|
|
||||||
|
|
||||||
$shop = new Shop($id_shop);
|
|
||||||
$root_category = Category::getRootCategory(null, $shop);
|
|
||||||
$tree = new HelperTree('categories-tree', Category::getNestedCategories(
|
|
||||||
$root_category->id, $this->context->employee->id_lang));
|
|
||||||
|
|
||||||
$html = $tree->setTitle('Filter by category')
|
|
||||||
->setActions(array(
|
|
||||||
new HelperTreeToolbarLink(
|
|
||||||
'Collapse All',
|
|
||||||
'#',
|
|
||||||
'$(\'#categories-tree\').tree(\'collapseAll\')',
|
|
||||||
'icon-collapse-alt'),
|
|
||||||
new HelperTreeToolbarLink(
|
|
||||||
'Expand All',
|
|
||||||
'#',
|
|
||||||
'$(\'#categories-tree\').tree(\'expandAll\')',
|
|
||||||
'icon-expand-alt')
|
|
||||||
))
|
|
||||||
->render();
|
|
||||||
$html .= '<script type="text/javascript">
|
|
||||||
$(document).ready(function () {
|
|
||||||
$("#categories-tree").tree("collapseAll");
|
|
||||||
$("#categories-tree").find(":input[type=radio]").click(
|
|
||||||
function()
|
|
||||||
{
|
|
||||||
location.href = location.href.replace(
|
|
||||||
/&id_category=[0-9]*/, "")+"&id_category="
|
|
||||||
+$(this).val();
|
|
||||||
}
|
|
||||||
);';
|
|
||||||
|
|
||||||
if (isset($selected_category))
|
|
||||||
$html .= '$("#categories-tree").find(":input").each(
|
|
||||||
function()
|
|
||||||
{
|
|
||||||
if ($(this).val() == '.$selected_category.')
|
|
||||||
{
|
|
||||||
$(this).prop("checked", true);
|
|
||||||
$(this).parent().addClass("tree-selected");
|
|
||||||
$(this).parents("ul.tree").each(
|
|
||||||
function()
|
|
||||||
{
|
|
||||||
$(this).children().children(".icon-folder-close")
|
|
||||||
.removeClass("icon-folder-close")
|
|
||||||
.addClass("icon-folder-open");
|
|
||||||
$(this).show();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);';
|
|
||||||
$html .= '});
|
|
||||||
</script>';
|
|
||||||
return $html;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function renderAssociationsCategoriesTree($root_category,
|
|
||||||
$selected_categories)
|
|
||||||
{
|
|
||||||
$tree = new HelperTree('associated-categories-tree',
|
|
||||||
Category::getNestedCategories($root_category, $this->context->employee->id_lang));
|
|
||||||
$html = $tree->setTitle('Associated categories')
|
|
||||||
->setActions(array(
|
|
||||||
new HelperTreeToolbarLink(
|
|
||||||
'Collapse All',
|
|
||||||
'#',
|
|
||||||
'$(\'#associated-categories-tree\').tree(\'collapseAll\')',
|
|
||||||
'icon-collapse-alt'),
|
|
||||||
new HelperTreeToolbarLink(
|
|
||||||
'Expand All',
|
|
||||||
'#',
|
|
||||||
'$(\'#associated-categories-tree\').tree(\'expandAll\')',
|
|
||||||
'icon-expand-alt'),
|
|
||||||
new HelperTreeToolbarLink(
|
|
||||||
'Check All',
|
|
||||||
'#',
|
|
||||||
'checkAllAssociatedCategories();',
|
|
||||||
'icon-check-sign'),
|
|
||||||
new HelperTreeToolbarLink(
|
|
||||||
'Uncheck All',
|
|
||||||
'#',
|
|
||||||
'uncheckAllAssociatedCategories();',
|
|
||||||
'icon-check-empty'),
|
|
||||||
new HelperTreeToolbarSearch(
|
|
||||||
'Find a category:',
|
|
||||||
'categories-search')
|
|
||||||
))
|
|
||||||
->setNodeFolderTemplate('tree_node_folder_associations.tpl')
|
|
||||||
->setNodeItemTemplate('tree_node_item_associations.tpl')
|
|
||||||
->render();
|
|
||||||
|
|
||||||
$html .= '<script type="text/javascript">
|
|
||||||
function checkAllAssociatedCategories()
|
|
||||||
{
|
|
||||||
$("#associated-categories-tree").find(":input[type=checkbox]").each(
|
|
||||||
function()
|
|
||||||
{
|
|
||||||
$(this).prop("checked", true);
|
|
||||||
$(this).parent().addClass("tree-selected");
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function uncheckAllAssociatedCategories()
|
|
||||||
{
|
|
||||||
$("#associated-categories-tree").find(":input[type=checkbox]").each(
|
|
||||||
function()
|
|
||||||
{
|
|
||||||
$(this).prop("checked", false);
|
|
||||||
$(this).parent().removeClass("tree-selected");
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$("#categories-search").bind("typeahead:selected", function(obj, datum) {
|
|
||||||
$("#associated-categories-tree").find(":input").each(
|
|
||||||
function()
|
|
||||||
{
|
|
||||||
if ($(this).val() == datum.id_category)
|
|
||||||
{
|
|
||||||
$(this).prop("checked", true);
|
|
||||||
$(this).parent().addClass("tree-selected");
|
|
||||||
$(this).parents("ul.tree").each(
|
|
||||||
function()
|
|
||||||
{
|
|
||||||
$(this).children().children().children(".icon-folder-close")
|
|
||||||
.removeClass("icon-folder-close")
|
|
||||||
.addClass("icon-folder-open");
|
|
||||||
$(this).show();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).ready(
|
|
||||||
function()
|
|
||||||
{
|
|
||||||
$("#associated-categories-tree").tree("collapseAll");
|
|
||||||
|
|
||||||
var selected_categories = new Array("'.implode('","', $selected_categories).'");
|
|
||||||
$("#associated-categories-tree").find(":input").each(
|
|
||||||
function()
|
|
||||||
{
|
|
||||||
if ($.inArray($(this).val(), selected_categories) != -1)
|
|
||||||
{
|
|
||||||
$(this).prop("checked", true);
|
|
||||||
$(this).parent().addClass("tree-selected");
|
|
||||||
$(this).parents("ul.tree").each(
|
|
||||||
function()
|
|
||||||
{
|
|
||||||
$(this).children().children().children(".icon-folder-close")
|
|
||||||
.removeClass("icon-folder-close")
|
|
||||||
.addClass("icon-folder-open");
|
|
||||||
$(this).show();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
</script>';
|
|
||||||
return $html;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function ajaxProcessProductManufacturers()
|
public function ajaxProcessProductManufacturers()
|
||||||
{
|
{
|
||||||
$manufacturers = Manufacturer::getManufacturers();
|
$manufacturers = Manufacturer::getManufacturers();
|
||||||
@@ -3114,12 +2936,17 @@ class AdminProductsControllerCore extends AdminController
|
|||||||
foreach ($selected_cat as $key => $category)
|
foreach ($selected_cat as $key => $category)
|
||||||
$categories[] = $key;
|
$categories[] = $key;
|
||||||
|
|
||||||
|
$tree = new HelperTreeCategories('associated-categories-tree', 'Associated categories');
|
||||||
|
$tree->setRootCategory($root->id)
|
||||||
|
->setUseCheckBox(true)
|
||||||
|
->setUseSearch(true)
|
||||||
|
->setSelectedCategories($categories);
|
||||||
|
|
||||||
$data->assign(array('default_category' => $default_category,
|
$data->assign(array('default_category' => $default_category,
|
||||||
'selected_cat_ids' => implode(',', array_keys($selected_cat)),
|
'selected_cat_ids' => implode(',', array_keys($selected_cat)),
|
||||||
'selected_cat' => $selected_cat,
|
'selected_cat' => $selected_cat,
|
||||||
'id_category_default' => $product->getDefaultCategory(),
|
'id_category_default' => $product->getDefaultCategory(),
|
||||||
'category_tree' => $this->renderAssociationsCategoriesTree(
|
'category_tree' => $tree->render(),
|
||||||
$root->id, $categories),
|
|
||||||
'product' => $product,
|
'product' => $product,
|
||||||
'link' => $this->context->link,
|
'link' => $this->context->link,
|
||||||
'is_shop_context' => Shop::getContext() == Shop::CONTEXT_SHOP
|
'is_shop_context' => Shop::getContext() == Shop::CONTEXT_SHOP
|
||||||
|
|||||||
@@ -79,12 +79,14 @@ class Dashactivity extends Module
|
|||||||
$gapi = Module::isInstalled('gapi') ? Module::getInstanceByName('gapi') : false;
|
$gapi = Module::isInstalled('gapi') ? Module::getInstanceByName('gapi') : false;
|
||||||
if (Validate::isLoadedObject($gapi) && $gapi->isConfigured())
|
if (Validate::isLoadedObject($gapi) && $gapi->isConfigured())
|
||||||
{
|
{
|
||||||
$visits = $unique_visitors = 0;
|
$visits = $unique_visitors = $online_visitor = 0;
|
||||||
if ($result = $gapi->requestReportData('', 'ga:visits,ga:visitors', $params['date_from'], $params['date_to'], null, null, 1, 1))
|
if ($result = $gapi->requestReportData('', 'ga:visits,ga:visitors', $params['date_from'], $params['date_to'], null, null, 1, 1))
|
||||||
{
|
{
|
||||||
$visits = $result[0]['metrics']['visits'];
|
$visits = $result[0]['metrics']['visits'];
|
||||||
$unique_visitors = $result[0]['metrics']['visitors'];
|
$unique_visitors = $result[0]['metrics']['visitors'];
|
||||||
}
|
}
|
||||||
|
if ($result = $gapi->requestReportData('', 'ga:activeVisitors', null, null, null, null, 1, 1))
|
||||||
|
$online_visitor = $result[0]['metrics']['activeVisitors'];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -94,6 +96,24 @@ class Dashactivity extends Module
|
|||||||
WHERE `date_add` BETWEEN "'.pSQL($params['date_from']).'" AND "'.pSQL($params['date_to']).'"
|
WHERE `date_add` BETWEEN "'.pSQL($params['date_from']).'" AND "'.pSQL($params['date_to']).'"
|
||||||
'.Shop::addSqlRestriction(false));
|
'.Shop::addSqlRestriction(false));
|
||||||
extract($row);
|
extract($row);
|
||||||
|
|
||||||
|
if ($maintenance_ips = Configuration::get('PS_MAINTENANCE_IP'))
|
||||||
|
$maintenance_ips = implode(',', array_map('ip2long', array_map('trim', explode(',', $maintenance_ips))));
|
||||||
|
if (Configuration::get('PS_STATSDATA_CUSTOMER_PAGESVIEWS'))
|
||||||
|
$sql = 'SELECT COUNT(DISTINCT c.id_connections)
|
||||||
|
FROM `'._DB_PREFIX_.'connections` c
|
||||||
|
LEFT JOIN `'._DB_PREFIX_.'connections_page` cp ON c.id_connections = cp.id_connections
|
||||||
|
WHERE TIME_TO_SEC(TIMEDIFF(NOW(), cp.`time_start`)) < 900
|
||||||
|
AND cp.`time_end` IS NULL
|
||||||
|
'.Shop::addSqlRestriction(false, 'c').'
|
||||||
|
'.($maintenance_ips ? 'AND c.ip_address NOT IN ('.preg_replace('/[^,0-9]/', '', $maintenance_ips).')' : '');
|
||||||
|
else
|
||||||
|
$sql = 'SELECT COUNT(*)
|
||||||
|
FROM `'._DB_PREFIX_.'connections`
|
||||||
|
WHERE TIME_TO_SEC(TIMEDIFF(NOW(), `date_add`)) < 900
|
||||||
|
'.Shop::addSqlRestriction(false).'
|
||||||
|
'.($maintenance_ips ? 'AND ip_address NOT IN ('.preg_replace('/[^,0-9]/', '', $maintenance_ips).')' : '');
|
||||||
|
$online_visitor = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
$order_nbr = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
|
$order_nbr = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
|
||||||
@@ -130,24 +150,6 @@ class Dashactivity extends Module
|
|||||||
WHERE cm.`date_add` BETWEEN "'.pSQL($params['date_from']).'" AND "'.pSQL($params['date_to']).'"
|
WHERE cm.`date_add` BETWEEN "'.pSQL($params['date_from']).'" AND "'.pSQL($params['date_to']).'"
|
||||||
'.Shop::addSqlRestriction(false, 'ct'));
|
'.Shop::addSqlRestriction(false, 'ct'));
|
||||||
|
|
||||||
if ($maintenance_ips = Configuration::get('PS_MAINTENANCE_IP'))
|
|
||||||
$maintenance_ips = implode(',', array_map('ip2long', array_map('trim', explode(',', $maintenance_ips))));
|
|
||||||
if (Configuration::get('PS_STATSDATA_CUSTOMER_PAGESVIEWS'))
|
|
||||||
$sql = 'SELECT COUNT(DISTINCT c.id_connections)
|
|
||||||
FROM `'._DB_PREFIX_.'connections` c
|
|
||||||
LEFT JOIN `'._DB_PREFIX_.'connections_page` cp ON c.id_connections = cp.id_connections
|
|
||||||
WHERE TIME_TO_SEC(TIMEDIFF(NOW(), cp.`time_start`)) < 900
|
|
||||||
AND cp.`time_end` IS NULL
|
|
||||||
'.Shop::addSqlRestriction(false, 'c').'
|
|
||||||
'.($maintenance_ips ? 'AND c.ip_address NOT IN ('.preg_replace('/[^,0-9]/', '', $maintenance_ips).')' : '');
|
|
||||||
else
|
|
||||||
$sql = 'SELECT COUNT(*)
|
|
||||||
FROM `'._DB_PREFIX_.'connections`
|
|
||||||
WHERE TIME_TO_SEC(TIMEDIFF(NOW(), `date_add`)) < 900
|
|
||||||
'.Shop::addSqlRestriction(false).'
|
|
||||||
'.($maintenance_ips ? 'AND ip_address NOT IN ('.preg_replace('/[^,0-9]/', '', $maintenance_ips).')' : '');
|
|
||||||
$online_visitor = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql);
|
|
||||||
|
|
||||||
$active_shopping_cart = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
|
$active_shopping_cart = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
|
||||||
SELECT COUNT(*)
|
SELECT COUNT(*)
|
||||||
FROM `'._DB_PREFIX_.'cart`
|
FROM `'._DB_PREFIX_.'cart`
|
||||||
@@ -208,7 +210,7 @@ class Dashactivity extends Module
|
|||||||
'orders_trends' => array('way' => 'down', 'value' => 0.42),
|
'orders_trends' => array('way' => 'down', 'value' => 0.42),
|
||||||
),
|
),
|
||||||
'data_list_small' => array(
|
'data_list_small' => array(
|
||||||
'dash_traffic_source' => $this->getReferer($params['date_from'], $params['date_to']),
|
'dash_traffic_source' => $this->getReferer($params['date_from'], $params[ 'date_to']),
|
||||||
),
|
),
|
||||||
'data_chart' => array(
|
'data_chart' => array(
|
||||||
'dash_trends_chart1' => $this->getChartTrafficSource($params['date_from'], $params['date_to']),
|
'dash_trends_chart1' => $this->getChartTrafficSource($params['date_from'], $params['date_to']),
|
||||||
@@ -228,31 +230,42 @@ class Dashactivity extends Module
|
|||||||
|
|
||||||
public function getReferer($date_from, $date_to, $limit = 10)
|
public function getReferer($date_from, $date_to, $limit = 10)
|
||||||
{
|
{
|
||||||
$directLink = $this->l('Direct link');
|
$gapi = Module::isInstalled('gapi') ? Module::getInstanceByName('gapi') : false;
|
||||||
$sql = 'SELECT http_referer
|
if (Validate::isLoadedObject($gapi) && $gapi->isConfigured())
|
||||||
FROM '._DB_PREFIX_.'connections
|
|
||||||
WHERE 1
|
|
||||||
'.Shop::addSqlRestriction().'
|
|
||||||
AND date_add BETWEEN '.$date_from.' AND '.$date_to.'
|
|
||||||
LIMIT 0, '.(int)$limit;
|
|
||||||
|
|
||||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->query($sql);
|
|
||||||
$websites = array($directLink => 0);
|
|
||||||
|
|
||||||
while ($row = Db::getInstance(_PS_USE_SQL_SLAVE_)->nextRow($result))
|
|
||||||
{
|
{
|
||||||
if (!isset($row['http_referer']) || empty($row['http_referer']))
|
$websites = array();
|
||||||
++$websites[$directLink];
|
if ($result = $gapi->requestReportData('ga:source', 'ga:visitors', $date_from, $date_to, '-ga:visitors', null, 1, 3))
|
||||||
else
|
foreach ($result as $row)
|
||||||
{
|
$websites[$row['dimensions']['source']] = $row['metrics']['visitors'];
|
||||||
$website = preg_replace('/^www./', '', parse_url($row['http_referer'], PHP_URL_HOST));
|
}
|
||||||
if (!isset($websites[$website]))
|
else
|
||||||
$websites[$website] = 1;
|
{
|
||||||
else
|
$directLink = $this->l('Direct link');
|
||||||
++$websites[$website];
|
$sql = 'SELECT http_referer
|
||||||
}
|
FROM '._DB_PREFIX_.'connections
|
||||||
|
WHERE 1
|
||||||
|
'.Shop::addSqlRestriction().'
|
||||||
|
AND date_add BETWEEN '.$date_from.' AND '.$date_to.'
|
||||||
|
LIMIT 0, '.(int)$limit;
|
||||||
|
|
||||||
|
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->query($sql);
|
||||||
|
$websites = array($directLink => 0);
|
||||||
|
|
||||||
|
while ($row = Db::getInstance(_PS_USE_SQL_SLAVE_)->nextRow($result))
|
||||||
|
{
|
||||||
|
if (!isset($row['http_referer']) || empty($row['http_referer']))
|
||||||
|
++$websites[$directLink];
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$website = preg_replace('/^www./', '', parse_url($row['http_referer'], PHP_URL_HOST));
|
||||||
|
if (!isset($websites[$website]))
|
||||||
|
$websites[$website] = 1;
|
||||||
|
else
|
||||||
|
++$websites[$website];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
arsort($websites);
|
||||||
}
|
}
|
||||||
arsort($websites);
|
|
||||||
return $websites;
|
return $websites;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ class Dashtrends extends Module
|
|||||||
$gapi = Module::isInstalled('gapi') ? Module::getInstanceByName('gapi') : false;
|
$gapi = Module::isInstalled('gapi') ? Module::getInstanceByName('gapi') : false;
|
||||||
if (Validate::isLoadedObject($gapi) && $gapi->isConfigured())
|
if (Validate::isLoadedObject($gapi) && $gapi->isConfigured())
|
||||||
{
|
{
|
||||||
if ($result = $gapi->requestReportData('ga:date', 'ga:visits', $params['date_from'], $params['date_to'], null, null, 1, 1))
|
if ($result = $gapi->requestReportData('ga:date', 'ga:visits', $params['date_from'], $params['date_to'], null, null, 1, 9999))
|
||||||
foreach ($result as $row)
|
foreach ($result as $row)
|
||||||
$tmp_data['visits_score'][strtotime(preg_replace('/^([0-9]{4})([0-9]{2})([0-9]{2})$/', '$1-$2-$3', $row['dimensions']['date']))] = $row['metrics']['visits'];
|
$tmp_data['visits_score'][strtotime(preg_replace('/^([0-9]{4})([0-9]{2})([0-9]{2})$/', '$1-$2-$3', $row['dimensions']['date']))] = $row['metrics']['visits'];
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-11
@@ -29,8 +29,8 @@ if (!defined('_PS_VERSION_'))
|
|||||||
|
|
||||||
class Gapi extends Module
|
class Gapi extends Module
|
||||||
{
|
{
|
||||||
public function __construct($type = null)
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->name = 'gapi';
|
$this->name = 'gapi';
|
||||||
$this->tab = 'administration';
|
$this->tab = 'administration';
|
||||||
$this->version = 0.9;
|
$this->version = 0.9;
|
||||||
@@ -40,7 +40,7 @@ class Gapi extends Module
|
|||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
||||||
$this->displayName = $this->l('Google Analytics API');
|
$this->displayName = $this->l('Google Analytics API');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isConfigured()
|
public function isConfigured()
|
||||||
{
|
{
|
||||||
@@ -64,7 +64,7 @@ class Gapi extends Module
|
|||||||
'.(($curl && $allow_url_fopen) ? '' : '<li>'.$this->l('You are not allowed to open external URLs').'</li>').'
|
'.(($curl && $allow_url_fopen) ? '' : '<li>'.$this->l('You are not allowed to open external URLs').'</li>').'
|
||||||
'.(($curl && $allow_url_fopen) ? '' : '<li>'.$this->l('cURL is not enabled').'</li>').'
|
'.(($curl && $allow_url_fopen) ? '' : '<li>'.$this->l('cURL is not enabled').'</li>').'
|
||||||
'.($openssl ? '' : '<li>'.$this->l('OpenSSL is not enabled').'</li>').'
|
'.($openssl ? '' : '<li>'.$this->l('OpenSSL is not enabled').'</li>').'
|
||||||
'.(($allow_url_fopen AND $openssl AND !$ping) ? '<li>'.$this->l('Google is unreachable').' ('.$this->l('check your firewall').')</li>' : '').'
|
'.(($allow_url_fopen && $openssl && !$ping) ? '<li>'.$this->l('Google is unreachable').' ('.$this->l('check your firewall').')</li>' : '').'
|
||||||
'.($online ? '' : '<li>'.$this->l('Your store is not online').'</li>').'
|
'.($online ? '' : '<li>'.$this->l('Your store is not online').'</li>').'
|
||||||
</ul>');
|
</ul>');
|
||||||
}
|
}
|
||||||
@@ -73,7 +73,7 @@ class Gapi extends Module
|
|||||||
return $html.$this->api_3_0_getContent();
|
return $html.$this->api_3_0_getContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function requestReportData($dimensions, $metrics, $date_from, $date_to, $sort = null, $filters = null, $start = 1, $limit = 30)
|
public function requestReportData($dimensions, $metrics, $date_from = null, $date_to = null, $sort = null, $filters = null, $start = 1, $limit = 30)
|
||||||
{
|
{
|
||||||
// You can switch to the 1.3 API by replacing the following function call by $this->api_1_3_requestReportData()
|
// You can switch to the 1.3 API by replacing the following function call by $this->api_1_3_requestReportData()
|
||||||
return $this->api_3_0_requestReportData($dimensions, $metrics, $date_from, $date_to, $sort, $filters, $start, $limit);
|
return $this->api_3_0_requestReportData($dimensions, $metrics, $date_from, $date_to, $sort, $filters, $start, $limit);
|
||||||
@@ -326,7 +326,8 @@ class Gapi extends Module
|
|||||||
'timeout' => 5,
|
'timeout' => 5,
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
if (!$response_json = Tools::file_get_contents('https://www.googleapis.com/analytics/v3/data/ga?'.$content, false, $stream_context))
|
$api = ($date_from && $date_to) ? 'ga' : 'realtime';
|
||||||
|
if (!$response_json = Tools::file_get_contents('https://www.googleapis.com/analytics/v3/data/'.$api.'?'.$content, false, $stream_context))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// https://developers.google.com/analytics/devguides/reporting/core/v3/reference
|
// https://developers.google.com/analytics/devguides/reporting/core/v3/reference
|
||||||
@@ -337,7 +338,7 @@ class Gapi extends Module
|
|||||||
{
|
{
|
||||||
$metrics = array();
|
$metrics = array();
|
||||||
$dimensions = array();
|
$dimensions = array();
|
||||||
foreach($row as $key => $value)
|
foreach ($row as $key => $value)
|
||||||
if ($response['columnHeaders'][$key]['columnType'] == 'DIMENSION')
|
if ($response['columnHeaders'][$key]['columnType'] == 'DIMENSION')
|
||||||
$dimensions[str_replace('ga:', '', $response['columnHeaders'][$key]['name'])] = $value;
|
$dimensions[str_replace('ga:', '', $response['columnHeaders'][$key]['name'])] = $value;
|
||||||
elseif ($response['columnHeaders'][$key]['columnType'] == 'METRIC')
|
elseif ($response['columnHeaders'][$key]['columnType'] == 'METRIC')
|
||||||
@@ -452,7 +453,7 @@ class Gapi extends Module
|
|||||||
$stream_context = stream_context_create(array(
|
$stream_context = stream_context_create(array(
|
||||||
'http' => array(
|
'http' => array(
|
||||||
'method'=> 'GET',
|
'method'=> 'GET',
|
||||||
'header' => "Authorization: GoogleLogin auth=".$this->auth_token."\r\n",
|
'header' => 'Authorization: GoogleLogin auth='.$this->auth_token."\r\n",
|
||||||
'timeout' => 5,
|
'timeout' => 5,
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
@@ -485,16 +486,16 @@ class Gapi extends Module
|
|||||||
$metrics = array();
|
$metrics = array();
|
||||||
foreach ($entry->children('http://schemas.google.com/analytics/2009')->metric as $metric)
|
foreach ($entry->children('http://schemas.google.com/analytics/2009')->metric as $metric)
|
||||||
{
|
{
|
||||||
$key = str_replace('ga:','',$metric->attributes()->name);
|
$key = str_replace('ga:', '', $metric->attributes()->name);
|
||||||
$metric_value = strval($metric->attributes()->value);
|
$metric_value = strval($metric->attributes()->value);
|
||||||
if (preg_match('/^(\d+\.\d+)|(\d+E\d+)|(\d+.\d+E\d+)$/',$metric_value))
|
if (preg_match('/^(\d+\.\d+)|(\d+E\d+)|(\d+.\d+E\d+)$/', $metric_value))
|
||||||
$metrics[$key] = floatval($metric_value);
|
$metrics[$key] = floatval($metric_value);
|
||||||
else
|
else
|
||||||
$metrics[$key] = intval($metric_value);
|
$metrics[$key] = intval($metric_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
$dimensions = array();
|
$dimensions = array();
|
||||||
foreach($entry->children('http://schemas.google.com/analytics/2009')->dimension as $dimension)
|
foreach ($entry->children('http://schemas.google.com/analytics/2009')->dimension as $dimension)
|
||||||
$dimensions[str_replace('ga:', '', $dimension->attributes()->name)] = strval($dimension->attributes()->value);
|
$dimensions[str_replace('ga:', '', $dimension->attributes()->name)] = strval($dimension->attributes()->value);
|
||||||
|
|
||||||
$result[] = array('metrics' => $metrics, 'dimensions' => $dimensions);
|
$result[] = array('metrics' => $metrics, 'dimensions' => $dimensions);
|
||||||
|
|||||||
@@ -1,4 +1,28 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/*
|
||||||
|
* 2007-2013 PrestaShop
|
||||||
|
*
|
||||||
|
* NOTICE OF LICENSE
|
||||||
|
*
|
||||||
|
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||||
|
* that is bundled with this package in the file LICENSE.txt.
|
||||||
|
* It is also available through the world-wide-web at this URL:
|
||||||
|
* http://opensource.org/licenses/afl-3.0.php
|
||||||
|
* If you did not receive a copy of the license and are unable to
|
||||||
|
* obtain it through the world-wide-web, please send an email
|
||||||
|
* to license@prestashop.com so we can send you a copy immediately.
|
||||||
|
*
|
||||||
|
* DISCLAIMER
|
||||||
|
*
|
||||||
|
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||||
|
* versions in the future. If you wish to customize PrestaShop for your
|
||||||
|
* needs please refer to http://www.prestashop.com for more information.
|
||||||
|
*
|
||||||
|
* @author PrestaShop SA <contact@prestashop.com>
|
||||||
|
* @copyright 2007-2013 PrestaShop SA
|
||||||
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||||
|
* International Registered Trademark & Property of PrestaShop SA
|
||||||
|
*/
|
||||||
|
|
||||||
include(dirname(__FILE__).'/../../config/config.inc.php');
|
include(dirname(__FILE__).'/../../config/config.inc.php');
|
||||||
include(dirname(__FILE__).'/gapi.php');
|
include(dirname(__FILE__).'/gapi.php');
|
||||||
|
|||||||
Reference in new issue
Block a user